diff --git a/cmd/debug.go b/cmd/debug.go index 8f991dc..e225a12 100644 --- a/cmd/debug.go +++ b/cmd/debug.go @@ -10,7 +10,7 @@ var debugCmd = &cobra.Command{ Use: "debug", Short: "Output all parsed configurations for debugging", Run: func(cmd *cobra.Command, args []string) { - proxy.Debug() + proxy.Debug(cfgFile) }, } diff --git a/cmd/root.go b/cmd/root.go index f977065..79589a3 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,14 +6,18 @@ import ( "github.com/spf13/cobra" ) -// rootCmd represents the base command when called without any subcommands -var rootCmd = &cobra.Command{ - Use: "ProxySwitcher", - Short: "A simple internet proxy switching tool", - // Uncomment the following line if your bare application - // has an action associated with it: - // Run: func(cmd *cobra.Command, args []string) { }, -} +var ( + cfgFile string + + // rootCmd represents the base command when called without any subcommands + rootCmd = &cobra.Command{ + Use: "ProxySwitcher", + Short: "A simple internet proxy switching tool", + // Uncomment the following line if your bare application + // has an action associated with it: + // Run: func(cmd *cobra.Command, args []string) { }, + } +) // Execute adds all child commands to the root command and sets flags appropriately. // This is called by main.main(). It only needs to happen once to the rootCmd. @@ -29,7 +33,7 @@ func init() { // Cobra supports persistent flags, which, if defined here, // will be global for your application. - // rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.ProxySwitcher.yaml)") + rootCmd.PersistentFlags().StringVarP(&cfgFile, "configs", "c", "configs.json", "configurations file") // Cobra also supports local flags, which will only run // when this action is called directly. diff --git a/cmd/save.go b/cmd/save.go index e93efb5..56f4e7a 100644 --- a/cmd/save.go +++ b/cmd/save.go @@ -38,7 +38,7 @@ var saveCmd = &cobra.Command{ var input string fmt.Print("Save this data? (Y/n) ") if input == "" || strings.ToLower(input) == "y" { - util.SaveConfig(config) + util.SaveConfig(cfgFile, config) } }, } diff --git a/cmd/set.go b/cmd/set.go index a919588..011ff22 100644 --- a/cmd/set.go +++ b/cmd/set.go @@ -10,7 +10,7 @@ var setCmd = &cobra.Command{ Use: "set", Short: "Enable the current internet proxy settings", Run: func(cmd *cobra.Command, args []string) { - proxy.Set() + proxy.Set(cfgFile) }, } diff --git a/cmd/unset.go b/cmd/unset.go index 65a9917..c619448 100644 --- a/cmd/unset.go +++ b/cmd/unset.go @@ -10,7 +10,7 @@ var unsetCmd = &cobra.Command{ Use: "unset", Short: "Disable the current internet proxy settings", Run: func(cmd *cobra.Command, args []string) { - proxy.Unset() + proxy.Unset(cfgFile) }, } diff --git a/proxy/debug.go b/proxy/debug.go index 8430d06..9db4400 100644 --- a/proxy/debug.go +++ b/proxy/debug.go @@ -1,7 +1,10 @@ package proxy import ( + "errors" "fmt" + "os" + "path/filepath" "strings" "github.com/Baipyrus/ProxySwitcher/util" @@ -19,18 +22,26 @@ func mapCmdsToStr(commands []*util.Command) string { return strings.Join(output, "\n") } -func Debug() { +func Debug(cfgFile string) { + path, _ := filepath.Abs(cfgFile) + if _, err := os.Stat(path); errors.Is(err, os.ErrNotExist) { + path = "[N/A]" + } + + fmt.Printf("\nConfig:\n") + fmt.Printf("%s\n\n", path) + proxy, _ := ReadSystemProxy() proxyServer := proxy.Server if proxyServer == "" { proxyServer = "[N/A]" } - fmt.Println("\nSystem Proxy:") + fmt.Println("System Proxy:") fmt.Printf("Enabled: %t\n", proxy.Enabled) fmt.Printf("Server: %s\n\n", proxyServer) - configs, _ := util.ReadConfigs() + configs, _ := util.ReadConfigs(cfgFile) for _, config := range configs { configCmd := config.Name // Use command instead of name, if given diff --git a/proxy/set.go b/proxy/set.go index 00c0b7f..a531657 100644 --- a/proxy/set.go +++ b/proxy/set.go @@ -4,7 +4,7 @@ import ( "github.com/Baipyrus/ProxySwitcher/util" ) -func Set() { +func Set(cfgFile string) { stdin, closeFunc, _ := util.ReadyCmd() proxy, _ := ReadSystemProxy() @@ -13,7 +13,7 @@ func Set() { SetSystemProxy(true) } - configs, _ := util.ReadConfigs() + configs, _ := util.ReadConfigs(cfgFile) for _, config := range configs { configCmd := config.Name // Use command instead of name, if given diff --git a/proxy/unset.go b/proxy/unset.go index f4eade3..c24b4b8 100644 --- a/proxy/unset.go +++ b/proxy/unset.go @@ -4,16 +4,16 @@ import ( "github.com/Baipyrus/ProxySwitcher/util" ) -func Unset() { +func Unset(cfgFile string) { stdin, closeFunc, _ := util.ReadyCmd() - // Unset system proxy, if not already proxy, _ := ReadSystemProxy() + // Unset system proxy, if not already if proxy.Enabled { SetSystemProxy(false) } - configs, _ := util.ReadConfigs() + configs, _ := util.ReadConfigs(cfgFile) for _, config := range configs { configCmd := config.Name // Use command instead of name, if given diff --git a/util/config.go b/util/config.go index 94a6997..a29b506 100644 --- a/util/config.go +++ b/util/config.go @@ -6,8 +6,8 @@ import ( "os" ) -func ReadConfigs() ([]*Config, error) { - file, err := os.Open("configs.json") +func ReadConfigs(name string) ([]*Config, error) { + file, err := os.Open(name) if err != nil { return nil, err @@ -25,8 +25,8 @@ func ReadConfigs() ([]*Config, error) { return config, nil } -func SaveConfig(config Config) error { - configs, _ := ReadConfigs() +func SaveConfig(name string, config Config) error { + configs, _ := ReadConfigs(name) configs = append(configs, &config) data, err := json.Marshal(configs) @@ -34,6 +34,6 @@ func SaveConfig(config Config) error { return err } - err = os.WriteFile("configs.json", data, 0666) + err = os.WriteFile(name, data, 0666) return err }