update

package
v0.6.4 Latest Latest
Warning

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

Go to latest
Published: Feb 10, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Command = &cobra.Command{
	Use:   "update",
	Short: "Update the .env file from a source",
	RunE: func(cmd *cobra.Command, args []string) error {
		filename := cmd.Flag("file").Value.String()

		env, err := pkg.Load(filename)
		if err != nil {
			return err
		}

		fmt.Print("Finding source")
		source, err := env.GetConfig("dottie/source")
		if err != nil {
			return err
		}
		fmt.Println(" ✅")

		fmt.Print("Grabbing .env.docker from [", source, "]")

		if _, err := os.Stat(".env.source"); errors.Is(err, os.ErrNotExist) {
			tmp, err := os.OpenFile(".env.source", os.O_RDWR|os.O_CREATE, 0o666)
			if err != nil {
				return err
			}

			client := getter.Client{
				DisableSymlinks: true,
				Mode:            getter.ClientModeFile,
				Src:             source,
				Dst:             tmp.Name(),
			}

			if err := client.Get(); err != nil {
				return err
			}
		}
		fmt.Println(" ✅")

		fmt.Print("Copying .env.source into .env.merged")
		if err := Copy(".env.source", ".env.merged"); err != nil {
			return err
		}
		fmt.Println(" ✅")

		fmt.Print("Loading and parsing .env.merged")
		mergedEnv, err := pkg.Load(".env.merged")
		if err != nil {
			return err
		}
		fmt.Println(" ✅")

		fmt.Println("Updating .env.merged with key/value pairs from .env")
		for _, stmt := range env.Assignments() {
			if !stmt.Active {
				continue
			}

			changed, err := mergedEnv.Upsert(stmt, ast.UpsertOptions{SkipIfSame: true, ErrorIfMissing: true})
			if err != nil {
				fmt.Println("  ❌", err.Error())

				continue
			}

			if changed != nil {
				fmt.Println("  ✅", fmt.Sprintf("Key [%s] was successfully updated", stmt.Name))
			}
		}

		fmt.Println()
		fmt.Println("Saving .env.merged")

		return pkg.Save(".env.merged", mergedEnv)
	},
}

Functions

func Copy

func Copy(src, dst 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