start

package
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var StartCmd = &cobra.Command{
	Use:     "start",
	Aliases: []string{"s", "serve"},
	Short:   "Start serving a Go app (Air)",
	Run: func(_ *cobra.Command, _ []string) {
		if debugMode {
			log.Info("[debug] mode")
		}

		if !noUlimit {
			if debugMode {
				log.Info("[debug] set ulimit")
			}
			setUlimit()
		}

		if cfgPath == "" {
			defaultAirPath := path.Join(helpers.FindRootPath(), ".air.toml")

			if _, err := os.Stat(defaultAirPath); err == nil {
				cfgPath = defaultAirPath
			} else if os.IsNotExist(err) {
				appName := helpers.LoadConfig().Meta.ServiceName

				file, err := ioutil.TempFile(os.TempDir(), appName+".*.toml")
				if err != nil {
					log.Fatal(err)
				}
				defer os.Remove(file.Name())

				file.WriteString(defaultAirConfig(appName))
				if err := file.Close(); err != nil {
					log.Fatal(err)
				}

				cfgPath = file.Name()
			}
		}

		if debugMode {
			log.Info("[debug] Using Config Path:", cfgPath)
		}

		sigs := make(chan os.Signal, 1)
		signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)

		var err error
		r, err := runner.NewEngine(cfgPath, debugMode)
		if err != nil {
			log.Fatal(err)
			return
		}
		go func() {
			<-sigs
			r.Stop()
		}()

		defer func() {
			if e := recover(); e != nil {
				log.Fatalf("PANIC: %+v", e)
			}
		}()

		r.Run()
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL