mirror of
https://github.com/Baipyrus/ProxySwitcher.git
synced 2024-12-26 04:31:45 +00:00
Merge pull request #14 from Baipyrus/configs-file-cli-flag
Add CLI Flag To Specify Config Location
This commit is contained in:
commit
78cd3f1734
@ -10,7 +10,7 @@ var debugCmd = &cobra.Command{
|
|||||||
Use: "debug",
|
Use: "debug",
|
||||||
Short: "Output all parsed configurations for debugging",
|
Short: "Output all parsed configurations for debugging",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
proxy.Debug()
|
proxy.Debug(cfgFile)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
cmd/root.go
22
cmd/root.go
@ -6,14 +6,18 @@ import (
|
|||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
// rootCmd represents the base command when called without any subcommands
|
var (
|
||||||
var rootCmd = &cobra.Command{
|
cfgFile string
|
||||||
Use: "ProxySwitcher",
|
|
||||||
Short: "A simple internet proxy switching tool",
|
// rootCmd represents the base command when called without any subcommands
|
||||||
// Uncomment the following line if your bare application
|
rootCmd = &cobra.Command{
|
||||||
// has an action associated with it:
|
Use: "ProxySwitcher",
|
||||||
// Run: func(cmd *cobra.Command, args []string) { },
|
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.
|
// 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.
|
// 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,
|
// Cobra supports persistent flags, which, if defined here,
|
||||||
// will be global for your application.
|
// 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
|
// Cobra also supports local flags, which will only run
|
||||||
// when this action is called directly.
|
// when this action is called directly.
|
||||||
|
@ -38,7 +38,7 @@ var saveCmd = &cobra.Command{
|
|||||||
var input string
|
var input string
|
||||||
fmt.Print("Save this data? (Y/n) ")
|
fmt.Print("Save this data? (Y/n) ")
|
||||||
if input == "" || strings.ToLower(input) == "y" {
|
if input == "" || strings.ToLower(input) == "y" {
|
||||||
util.SaveConfig(config)
|
util.SaveConfig(cfgFile, config)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ var setCmd = &cobra.Command{
|
|||||||
Use: "set",
|
Use: "set",
|
||||||
Short: "Enable the current internet proxy settings",
|
Short: "Enable the current internet proxy settings",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
proxy.Set()
|
proxy.Set(cfgFile)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ var unsetCmd = &cobra.Command{
|
|||||||
Use: "unset",
|
Use: "unset",
|
||||||
Short: "Disable the current internet proxy settings",
|
Short: "Disable the current internet proxy settings",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
proxy.Unset()
|
proxy.Unset(cfgFile)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package proxy
|
package proxy
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/Baipyrus/ProxySwitcher/util"
|
"github.com/Baipyrus/ProxySwitcher/util"
|
||||||
@ -19,18 +22,26 @@ func mapCmdsToStr(commands []*util.Command) string {
|
|||||||
return strings.Join(output, "\n")
|
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()
|
proxy, _ := ReadSystemProxy()
|
||||||
proxyServer := proxy.Server
|
proxyServer := proxy.Server
|
||||||
if proxyServer == "" {
|
if proxyServer == "" {
|
||||||
proxyServer = "[N/A]"
|
proxyServer = "[N/A]"
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("\nSystem Proxy:")
|
fmt.Println("System Proxy:")
|
||||||
fmt.Printf("Enabled: %t\n", proxy.Enabled)
|
fmt.Printf("Enabled: %t\n", proxy.Enabled)
|
||||||
fmt.Printf("Server: %s\n\n", proxyServer)
|
fmt.Printf("Server: %s\n\n", proxyServer)
|
||||||
|
|
||||||
configs, _ := util.ReadConfigs()
|
configs, _ := util.ReadConfigs(cfgFile)
|
||||||
for _, config := range configs {
|
for _, config := range configs {
|
||||||
configCmd := config.Name
|
configCmd := config.Name
|
||||||
// Use command instead of name, if given
|
// Use command instead of name, if given
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"github.com/Baipyrus/ProxySwitcher/util"
|
"github.com/Baipyrus/ProxySwitcher/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Set() {
|
func Set(cfgFile string) {
|
||||||
stdin, closeFunc, _ := util.ReadyCmd()
|
stdin, closeFunc, _ := util.ReadyCmd()
|
||||||
|
|
||||||
proxy, _ := ReadSystemProxy()
|
proxy, _ := ReadSystemProxy()
|
||||||
@ -13,7 +13,7 @@ func Set() {
|
|||||||
SetSystemProxy(true)
|
SetSystemProxy(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
configs, _ := util.ReadConfigs()
|
configs, _ := util.ReadConfigs(cfgFile)
|
||||||
for _, config := range configs {
|
for _, config := range configs {
|
||||||
configCmd := config.Name
|
configCmd := config.Name
|
||||||
// Use command instead of name, if given
|
// Use command instead of name, if given
|
||||||
|
@ -4,16 +4,16 @@ import (
|
|||||||
"github.com/Baipyrus/ProxySwitcher/util"
|
"github.com/Baipyrus/ProxySwitcher/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Unset() {
|
func Unset(cfgFile string) {
|
||||||
stdin, closeFunc, _ := util.ReadyCmd()
|
stdin, closeFunc, _ := util.ReadyCmd()
|
||||||
|
|
||||||
// Unset system proxy, if not already
|
|
||||||
proxy, _ := ReadSystemProxy()
|
proxy, _ := ReadSystemProxy()
|
||||||
|
// Unset system proxy, if not already
|
||||||
if proxy.Enabled {
|
if proxy.Enabled {
|
||||||
SetSystemProxy(false)
|
SetSystemProxy(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
configs, _ := util.ReadConfigs()
|
configs, _ := util.ReadConfigs(cfgFile)
|
||||||
for _, config := range configs {
|
for _, config := range configs {
|
||||||
configCmd := config.Name
|
configCmd := config.Name
|
||||||
// Use command instead of name, if given
|
// Use command instead of name, if given
|
||||||
|
@ -6,8 +6,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ReadConfigs() ([]*Config, error) {
|
func ReadConfigs(name string) ([]*Config, error) {
|
||||||
file, err := os.Open("configs.json")
|
file, err := os.Open(name)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -25,8 +25,8 @@ func ReadConfigs() ([]*Config, error) {
|
|||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func SaveConfig(config Config) error {
|
func SaveConfig(name string, config Config) error {
|
||||||
configs, _ := ReadConfigs()
|
configs, _ := ReadConfigs(name)
|
||||||
configs = append(configs, &config)
|
configs = append(configs, &config)
|
||||||
|
|
||||||
data, err := json.Marshal(configs)
|
data, err := json.Marshal(configs)
|
||||||
@ -34,6 +34,6 @@ func SaveConfig(config Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.WriteFile("configs.json", data, 0666)
|
err = os.WriteFile(name, data, 0666)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user