develop

package
v0.4.11 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2023 License: AGPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Command = &cli.Command{
	Name: "develop",
	Flags: []cli.Flag{
		&cli.StringFlag{
			Name:    "addr",
			EnvVars: []string{"KARTUSCHE_ADDR"},
			Value:   "localhost:5001",
		},
	},
	Action: func(c *cli.Context) (err error) {
		defer func() {
			if err != nil {
				err = cli.Exit(fmt.Errorf("while running dev server: %w", err), 1)
			}
		}()

		dl, err := zap.NewDevelopment()
		if err != nil {
			return fmt.Errorf("while starting logger: %w", err)
		}

		defer dl.Sync()

		log := zapr.NewLogger(dl)

		dir := "."

		if err != nil {
			return err
		}

		serverBaseURL, err := serverurl.BaseServerURL(c.Args().First())
		if err != nil {
			return err
		}

		log.Info("syncing with server", "server", serverBaseURL)

		w, err := fsnotify.NewWatcher()
		if err != nil {
			return fmt.Errorf("while creating fs notify watcher")
		}

		names := make(chan string, 20)
		names <- "."
		done := make(chan error)
		go watch(dir, w, names, done)
		for name := range names {

			allNames := []string{name}
		inner:
			for {
				select {
				case name = <-names:
					allNames = append(allNames, name)
				case <-time.NewTimer(100 * time.Millisecond).C:
					break inner
				}
			}

			log.Info("updating server", "changedFiles", allNames)

			err := UpdateServerCode(dir, serverBaseURL)
			if err != nil {
				log.Error(err, "failed to update server")
				continue
			}
			log.Info("updated server")
		}

		return nil

	},
}

Functions

func UpdateServerCode

func UpdateServerCode(dir, serverBaseURL string) error

Types

This section is empty.

Jump to

Keyboard shortcuts

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