(defaults shellenvFlagDefaults)
| 35 | } |
| 36 | |
| 37 | func shellEnvCmd(defaults shellenvFlagDefaults) *cobra.Command { |
| 38 | flags := shellEnvCmdFlags{} |
| 39 | command := &cobra.Command{ |
| 40 | Use: "shellenv", |
| 41 | Short: "Print shell commands that create a Devbox Environment in the shell", |
| 42 | Args: cobra.ExactArgs(0), |
| 43 | PreRunE: ensureNixInstalled, |
| 44 | RunE: func(cmd *cobra.Command, args []string) error { |
| 45 | s, err := shellEnvFunc(cmd, flags) |
| 46 | if err != nil { |
| 47 | return err |
| 48 | } |
| 49 | fmt.Fprintln(cmd.OutOrStdout(), s) |
| 50 | if flags.format != "nushell" && !strings.HasSuffix(os.Getenv("SHELL"), "fish") { |
| 51 | fmt.Fprintln(cmd.OutOrStdout(), "hash -r") |
| 52 | } |
| 53 | return nil |
| 54 | }, |
| 55 | } |
| 56 | |
| 57 | command.Flags().BoolVar( |
| 58 | &flags.runInitHook, "init-hook", false, "runs init hook after exporting shell environment") |
| 59 | command.Flags().BoolVar( |
| 60 | &flags.install, "install", false, "install packages before exporting shell environment") |
| 61 | |
| 62 | command.Flags().BoolVar( |
| 63 | &flags.pure, "pure", false, "if this flag is specified, devbox creates an isolated environment inheriting almost no variables from the current environment. A few variables, in particular HOME, USER and DISPLAY, are retained.") |
| 64 | command.Flags().BoolVar( |
| 65 | &flags.preservePathStack, "preserve-path-stack", false, |
| 66 | "preserves existing PATH order if this project's environment is already in PATH. "+ |
| 67 | "Useful if you want to avoid overshadowing another devbox project that is already active") |
| 68 | _ = command.Flags().MarkHidden("preserve-path-stack") |
| 69 | command.Flags().BoolVar( |
| 70 | &flags.noRefreshAlias, "no-refresh-alias", false, |
| 71 | "by default, devbox will add refresh alias to the environment"+ |
| 72 | "Use this flag to disable this behavior.") |
| 73 | _ = command.Flags().MarkHidden("no-refresh-alias") |
| 74 | command.Flags().BoolVar( |
| 75 | &flags.omitNixEnv, "omit-nix-env", defaults.omitNixEnv, |
| 76 | "shell environment will omit the env-vars from print-dev-env", |
| 77 | ) |
| 78 | _ = command.Flags().MarkHidden("omit-nix-env") |
| 79 | |
| 80 | command.Flags().BoolVarP( |
| 81 | &flags.recomputeEnv, "recompute", "r", defaults.recomputeEnv, |
| 82 | "Recompute environment if needed", |
| 83 | ) |
| 84 | |
| 85 | command.Flags().StringVar( |
| 86 | &flags.format, "format", "bash", |
| 87 | "Output format for shell environment (nushell)", |
| 88 | ) |
| 89 | |
| 90 | flags.config.register(command) |
| 91 | flags.envFlag.register(command) |
| 92 | |
| 93 | return command |
| 94 | } |
no test coverage detected