(ctx context.Context, opts devopt.EnvrcOpts)
| 141 | } |
| 142 | |
| 143 | func CreateEnvrc(ctx context.Context, opts devopt.EnvrcOpts) error { |
| 144 | defer trace.StartRegion(ctx, "createEnvrc").End() |
| 145 | |
| 146 | // create .envrc file |
| 147 | file, err := os.Create(filepath.Join(opts.EnvrcDir, ".envrc")) |
| 148 | if err != nil { |
| 149 | return err |
| 150 | } |
| 151 | defer file.Close() |
| 152 | |
| 153 | flags := []string{} |
| 154 | |
| 155 | if len(opts.EnvMap) > 0 { |
| 156 | for k, v := range opts.EnvMap { |
| 157 | flags = append(flags, fmt.Sprintf("--env %s=%s", k, v)) |
| 158 | } |
| 159 | } |
| 160 | if opts.EnvFile != "" { |
| 161 | flags = append(flags, fmt.Sprintf("--env-file %s", opts.EnvFile)) |
| 162 | } |
| 163 | |
| 164 | configDir, err := getRelativePathToConfig(opts.EnvrcDir, opts.ConfigDir) |
| 165 | if err != nil { |
| 166 | return err |
| 167 | } |
| 168 | |
| 169 | t := template.Must(template.ParseFS(tmplFS, "tmpl/envrc.tmpl")) |
| 170 | |
| 171 | // write content into file |
| 172 | return t.Execute(file, map[string]string{ |
| 173 | "EnvFlag": strings.Join(flags, " "), |
| 174 | "ConfigDir": formatConfigDirArg(configDir), |
| 175 | }) |
| 176 | } |
| 177 | |
| 178 | // Returns the relative path from sourceDir to configDir, or an error if it cannot be determined. |
| 179 | func getRelativePathToConfig(sourceDir, configDir string) (string, error) { |
no test coverage detected