Skip to content

Commit

Permalink
refactor: set 'NO TOKEN' for local env
Browse files Browse the repository at this point in the history
Signed-off-by: Youngjin Jo <[email protected]>
  • Loading branch information
yjinjo committed Dec 11, 2024
1 parent 06fbaef commit e6811ba
Showing 1 changed file with 81 additions and 21 deletions.
102 changes: 81 additions & 21 deletions cmd/other/setting.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,36 @@ var settingInitURLCmd = &cobra.Command{

// Initialize setting.toml if it doesn't exist
mainSettingPath := filepath.Join(settingDir, "setting.toml")
if _, err := os.Stat(mainSettingPath); os.IsNotExist(err) {
// Initial TOML structure
initialSetting := []byte("environments = {}\n")
if err := os.WriteFile(mainSettingPath, initialSetting, 0644); err != nil {
pterm.Error.Printf("Failed to create setting file: %v\n", err)
return

// Check if environment already exists
v := viper.New()
v.SetConfigFile(mainSettingPath)
v.SetConfigType("toml")

if err := v.ReadInConfig(); err == nil {
// File exists and can be read
envSuffix := map[bool]string{true: "app", false: "user"}[appFlag]
fullEnvName := fmt.Sprintf("%s-%s", envName, envSuffix)

if envConfig := v.GetStringMap(fmt.Sprintf("environments.%s", fullEnvName)); envConfig != nil {
// Environment exists, ask for confirmation
confirmBox := pterm.DefaultBox.WithTitle("Environment Already Exists").
WithTitleTopCenter().
WithRightPadding(4).
WithLeftPadding(4).
WithBoxStyle(pterm.NewStyle(pterm.FgYellow))

confirmBox.Println(fmt.Sprintf("Environment '%s' already exists.\nDo you want to overwrite it?", fullEnvName))

fmt.Print("\nEnter (y/N): ")
var response string
fmt.Scanln(&response)
response = strings.ToLower(strings.TrimSpace(response))

if response != "y" {
pterm.Info.Printf("Operation cancelled. Environment '%s' remains unchanged.\n", fullEnvName)
return
}
}
}

Expand Down Expand Up @@ -123,7 +147,9 @@ var settingInitLocalCmd = &cobra.Command{
Args: cobra.NoArgs,
Example: ` cfctl setting init local -n [domain] --app --dev
or
cfctl setting init local -n [domain] --user --stg`,
cfctl setting init local -n [domain] --user --stg,
or
cfctl setting init local -n [plugin_name] --plugin`,
Run: func(cmd *cobra.Command, args []string) {
localEnv, _ := cmd.Flags().GetString("name")
appFlag, _ := cmd.Flags().GetBool("app")
Expand All @@ -132,29 +158,60 @@ var settingInitLocalCmd = &cobra.Command{
stgFlag, _ := cmd.Flags().GetBool("stg")
pluginFlag, _ := cmd.Flags().GetBool("plugin")

// Step 1: Check name flag
if localEnv == "" {
pterm.Error.Println("The --name flag is required.")
// Show only name flag in help
cmd.SetUsageFunc(func(cmd *cobra.Command) error {
fmt.Printf("\nUsage:\n cfctl setting init local [flags]\n\n")
fmt.Printf("Flags:\n")
fmt.Printf(" -n, --name string Local environment name for the environment\n")
fmt.Printf(" -h, --help help for local\n")
return nil
})
cmd.Help()
return
}
// Plugin flag takes precedence over other flags
if pluginFlag {
// For plugin, we don't need other flags
initializePluginSetting(localEnv)
return
}
if !appFlag && !userFlag {

// Step 2: Check type flags (app/user/plugin)
if !appFlag && !userFlag && !pluginFlag {
pterm.Error.Println("You must specify either --app, --user, or --plugin flag.")
// Show only type flags in help
cmd.SetUsageFunc(func(cmd *cobra.Command) error {
fmt.Printf("\nUsage:\n cfctl setting init local --name %s [flags]\n\n", localEnv)
fmt.Printf("Flags:\n")
fmt.Printf(" --app Initialize as application configuration\n")
fmt.Printf(" --user Initialize as user-specific configuration\n")
fmt.Printf(" --plugin Initialize as plugin configuration\n")
return nil
})
cmd.Help()
return
}
if !devFlag && !stgFlag {

// Step 3: For app/user configs, check environment type
if (appFlag || userFlag) && !devFlag && !stgFlag {
pterm.Error.Println("You must specify either --dev or --stg flag.")
// Show only environment flags in help
cmd.SetUsageFunc(func(cmd *cobra.Command) error {
fmt.Printf("\nUsage:\n cfctl setting init local --name %s --%s [flags]\n\n",
localEnv, map[bool]string{true: "app", false: "user"}[appFlag])
fmt.Printf("Flags:\n")
fmt.Printf(" --dev Initialize as development environment\n")
fmt.Printf(" --stg Initialize as staging environment\n")
return nil
})
cmd.Help()
return
}

// Create setting directory if it doesn't exist
// Plugin flag takes precedence
if pluginFlag {
initializePluginSetting(localEnv)
return
}

// Rest of the existing implementation...
settingDir := GetSettingDir()
if err := os.MkdirAll(settingDir, 0755); err != nil {
pterm.Error.Printf("Failed to create setting directory: %v\n", err)
Expand Down Expand Up @@ -216,6 +273,9 @@ var settingInitLocalCmd = &cobra.Command{
}

func initializePluginSetting(pluginName string) {
// Add 'local-' prefix to plugin name
envName := fmt.Sprintf("local-%s", pluginName)

settingDir := GetSettingDir()
if err := os.MkdirAll(settingDir, 0755); err != nil {
pterm.Error.Printf("Failed to create setting directory: %v\n", err)
Expand All @@ -240,17 +300,17 @@ func initializePluginSetting(pluginName string) {
return
}

// Set environment configuration
v.Set(fmt.Sprintf("environments.%s.endpoint", pluginName), "grpc://localhost:50051")
v.Set(fmt.Sprintf("environments.%s.token", pluginName), "NO TOKEN")
v.Set("environment", pluginName)
// Set environment configuration using the prefixed name
v.Set(fmt.Sprintf("environments.%s.endpoint", envName), "grpc://localhost:50051")
v.Set(fmt.Sprintf("environments.%s.token", envName), "NO TOKEN")
v.Set("environment", envName)

if err := v.WriteConfig(); err != nil {
pterm.Error.Printf("Failed to write setting: %v\n", err)
return
}

pterm.Success.Printf("Plugin environment '%s' successfully initialized.\n", pluginName)
pterm.Success.Printf("Plugin environment '%s' successfully initialized.\n", envName)
}

func updateLocalSetting(envName, settingType, settingPath string) {
Expand Down

0 comments on commit e6811ba

Please sign in to comment.