diff --git a/go.mod b/go.mod index 00d235b..9a83fb2 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module pak go 1.15 require ( + github.com/alessio/shellescape v1.4.1 github.com/pelletier/go-toml v1.8.2-0.20201124181426-2e01f733df54 github.com/rs/zerolog v1.20.0 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum deleted file mode 100644 index d9569ed..0000000 --- a/go.sum +++ /dev/null @@ -1,22 +0,0 @@ -gitea.arsenm.dev/Arsen6331/go-tuntox v0.0.0-20210122202525-119d5f454187 h1:5zN850TL+/3lHdUEGbQ29C4KPFwDLodWSaKjLFiWeJk= -gitea.arsenm.dev/Arsen6331/go-tuntox v0.0.0-20210122202525-119d5f454187/go.mod h1:88Isb/DdiGw2c82x+cjOOmqyka6Om0DbMRlshjEBG1s= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pelletier/go-toml v1.8.2-0.20201124181426-2e01f733df54 h1:U7n5zyrdmyUTvXR7DRuSRrdFBkjcIPeCjSG2GScQSL8= -github.com/pelletier/go-toml v1.8.2-0.20201124181426-2e01f733df54/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs= -github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/main.go b/main.go index 53cff00..34e7c42 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ package main import ( "fmt" + "github.com/alessio/shellescape" "github.com/rs/zerolog" "github.com/rs/zerolog/log" flag "github.com/spf13/pflag" @@ -34,11 +35,9 @@ var Log = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) func main() { // Create help flag - var helpFlagGiven bool - flag.BoolVarP(&helpFlagGiven, "help", "h", false, "Show help screen") + helpFlagGiven := flag.BoolP("help", "h", false, "Show help screen") // Create package manager override flag - var packageManagerOverride string - flag.StringVarP(&packageManagerOverride, "package-manager", "p", os.Getenv("PAK_MGR_OVERRIDE"), "Override package manager wrapped by pak") + packageManagerOverride := flag.StringP("package-manager", "p", os.Getenv("PAK_MGR_OVERRIDE"), "Override package manager wrapped by pak") // Parse arguments for flags flag.Parse() @@ -63,9 +62,9 @@ func main() { config := NewConfig("/etc/pak.toml") // If override is set - if packageManagerOverride != "" { + if *packageManagerOverride != "" { // Set active package manager to override - config.ActiveManager = packageManagerOverride + config.ActiveManager = *packageManagerOverride // Set override state to true isOverridden = true } else { @@ -93,8 +92,8 @@ func main() { similarTo := []string{} // Displays help message if no arguments provided or -h/--help is passed - if len(args) == 0 || helpFlagGiven || Contains(args, "help") { - printHelpMessage(config.ActiveManager, useRoot, rootCommand, commands, shortcuts, isOverridden) + if len(args) == 0 || *helpFlagGiven || Contains(args, "help") { + printHelpMessage(config.ActiveManager, rootCommand, commands, shortcuts, useRoot, isOverridden) os.Exit(0) } @@ -126,16 +125,14 @@ func main() { if len(similarTo) == 0 { Log.Fatal().Msg("This command does not match any known commands or shortcuts") } - // Anonymous function to decide whether to print (overridden) - printOverridden := func() string { - if isOverridden { - return "(overridden)" - } else { - return "" - } + var overriddenStr string + if isOverridden { + overriddenStr = "(overridden)" + } else { + overriddenStr = "" } // Print text showing command being run and package manager being used - fmt.Println("Running:", strings.Title(GetKey(commands, similarTo[0])), "using", strings.Title(config.ActiveManager), printOverridden()) + fmt.Println("Running:", strings.Title(GetKey(commands, similarTo[0])), "using", strings.Title(config.ActiveManager), overriddenStr) // Run package manager with the proper arguments passed if more than one argument exists var cmdArr []string // If root is to be used, append it to cmdArr @@ -152,7 +149,7 @@ func main() { } // If greater than 2 arguments, append them to cmdArr if len(args) >= 2 { - cmdArr = append(cmdArr, strings.Join(args[1:], " ")) + cmdArr = append(cmdArr, shellescape.QuoteCommand(args[1:])) } // Create space separated string from cmdArr cmdStr := strings.Join(cmdArr, " ") diff --git a/usage.go b/usage.go index f7786a3..b2cfae8 100644 --- a/usage.go +++ b/usage.go @@ -5,7 +5,7 @@ import ( ) // Print help screen -func printHelpMessage(packageManagerCommand string, useRoot bool, rootCommand string, commands map[string]string, shortcuts map[string]string, isOverridden bool) { +func printHelpMessage(packageManagerCommand, rootCommand string, commands, shortcuts map[string]string, useRoot, isOverridden bool) { fmt.Println("Arsen Musayelyan's Package Manager Wrapper") fmt.Print("Current package manager is: ", packageManagerCommand) if isOverridden {