Switch to TOML config [skip ci]
This commit is contained in:
parent
e4dcb180be
commit
0bffa3e2a4
5
go.mod
Normal file
5
go.mod
Normal file
@ -0,0 +1,5 @@
|
||||
module pak
|
||||
|
||||
go 1.15
|
||||
|
||||
require github.com/pelletier/go-toml v1.8.2-0.20201124181426-2e01f733df54
|
3
go.sum
Normal file
3
go.sum
Normal file
@ -0,0 +1,3 @@
|
||||
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=
|
35
main.go
35
main.go
@ -21,6 +21,7 @@ package main
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/pelletier/go-toml"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
@ -91,54 +92,38 @@ func main() {
|
||||
|
||||
// Parse config file removing all comments and empty lines
|
||||
config, err := ioutil.ReadFile(configFileLocation)
|
||||
if err != nil { log.Fatal(err) }
|
||||
commentRegex := regexp.MustCompile(`#.*`)
|
||||
emptyLineRegex := regexp.MustCompile(`(?m)^\s*\n`)
|
||||
parsedConfig := commentRegex.ReplaceAllString(string(config), "")
|
||||
parsedConfig = emptyLineRegex.ReplaceAllString(parsedConfig, "")
|
||||
|
||||
cfg := strings.Split(parsedConfig, "\n")
|
||||
//fmt.Println(cfg) //DEBUG
|
||||
parsedConfig, _ := toml.Load(string(config))
|
||||
|
||||
// Set first line of config to variable
|
||||
packageManagerCommand := cfg[0]
|
||||
packageManagerCommand := parsedConfig.Get("packageManager").(string)
|
||||
//fmt.Println(packageManagerCommand) //DEBUG
|
||||
|
||||
// Parse list of commands in config line 2 and set to variable as array
|
||||
commands := strings.Split(cfg[1], ",")
|
||||
commands := InterfaceToString(parsedConfig.Get("commands").([]interface{}))
|
||||
//fmt.Println(commands) //DEBUG
|
||||
|
||||
// Set the root option in config line 3 to a variable
|
||||
useRoot := cfg[2]
|
||||
useRoot := parsedConfig.Get("useRoot").(bool)
|
||||
//fmt.Println(useRoot) //DEBUG
|
||||
|
||||
// Set command to use to invoke root at config line 4 to a variable
|
||||
rootCommand := cfg[3]
|
||||
rootCommand := parsedConfig.Get("rootCommand").(string)
|
||||
//fmt.Println(rootCommand) //DEBUG
|
||||
|
||||
// Parse list of shortcuts in config and line 5 set to variable as an array
|
||||
shortcuts := strings.Split(cfg[4], ",")
|
||||
shortcuts := InterfaceToString(parsedConfig.Get("shortcuts").([]interface{}))
|
||||
//fmt.Println(shortcuts) //DEBUG
|
||||
|
||||
// Parse list of shortcuts in config line 6 and set to variable as array
|
||||
shortcutMappings := strings.Split(cfg[5], ",")
|
||||
shortcutMappings := InterfaceToString(parsedConfig.Get("shortcutMappings").([]interface{}))
|
||||
//fmt.Println(shortcutMappings) //DEBUG
|
||||
|
||||
// Check if config file allows root and set boolean to a variable
|
||||
var useRootBool bool
|
||||
if useRoot == "yes" {
|
||||
useRootBool = true
|
||||
} else if useRoot == "no" {
|
||||
useRootBool = false
|
||||
}
|
||||
//fmt.Println(useRootBool) //DEBUG
|
||||
|
||||
// Create similar to slice to put all matched commands into
|
||||
var similarTo []string
|
||||
|
||||
// Displays help message if no arguments provided or -h/--help is passed
|
||||
if len(args) == 0 || helpFlagGiven || Contains(args, "help") {
|
||||
printHelpMessage(packageManagerCommand, useRootBool, rootCommand, commands, shortcuts, shortcutMappings, isOverridden)
|
||||
printHelpMessage(packageManagerCommand, useRoot, rootCommand, commands, shortcuts, shortcutMappings, isOverridden)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
@ -175,7 +160,7 @@ func main() {
|
||||
// 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
|
||||
if useRootBool { cmdArr = append(cmdArr, rootCommand) }
|
||||
if useRoot { cmdArr = append(cmdArr, rootCommand) }
|
||||
// Create slice with all commands and arguments for the package manager
|
||||
cmdArr = append(cmdArr, []string{packageManagerCommand, similarTo[0]}...)
|
||||
// If greater than 2 arguments, append them to cmdArr
|
||||
|
@ -1,13 +1,7 @@
|
||||
# Write the name of the package manager in all lowercase below
|
||||
apt
|
||||
# Write a comma separated list of commands from the manager below
|
||||
install,remove,update,upgrade,search,download
|
||||
# Write "yes" or "no" depending on whether you want to use sudo
|
||||
yes
|
||||
# Write command to use for root
|
||||
sudo
|
||||
# Write a comma separated list of shortcuts below
|
||||
rm,inst
|
||||
# Write a comma separated list of shortcut mappings from the manager below
|
||||
remove,install
|
||||
|
||||
# Config for the pak package manager wrapper
|
||||
packageManager = "apt"
|
||||
commands = ["install", "remove", "update", "upgrade", "search", "download"]
|
||||
useRoot = true
|
||||
rootCommand = "sudo"
|
||||
shortcuts = ["rm", "inst"]
|
||||
shortcutMappings = ["remove", "install"]
|
@ -1,13 +1,7 @@
|
||||
# Write the name of the package manager in all lowercase below
|
||||
aptitude
|
||||
# Write a comma separated list of commands from the manager below
|
||||
install,remove,download,update,upgrade,full-upgrade,safe-upgrade,clean,hold,unhold,markauto,unmarkauto,why,whynot,reinstall,search,show,changelog
|
||||
# Write "yes" or "no" depending on whether you want to use sudo
|
||||
yes
|
||||
# Write command to use for root
|
||||
sudo
|
||||
# Write a comma separated list of shortcuts below
|
||||
rm,inst
|
||||
# Write a comma separated list of shortcut mappings from the manager below
|
||||
remove,install
|
||||
|
||||
# Config for the pak package manager wrapper
|
||||
packageManager = "aptitude"
|
||||
commands = ["install", "remove", "download", "update", "upgrade", "full-upgrade", "safe-upgrade", "clean", "hold", "unhold", "markauto", "unmarkauto", "why", "whynot", "reinstall", "search", "show", "changelog"]
|
||||
useRoot = true
|
||||
rootCommand = "sudo"
|
||||
shortcuts = ["rm", "inst"]
|
||||
shortcutMappings = ["remove", "install"]
|
@ -1,13 +1,7 @@
|
||||
# Write the name of the package manager in all lowercase below
|
||||
brew
|
||||
# Write a comma separated list of commands from the manager below
|
||||
install,reinstall,remove,upgrade,update,search,cask,list,doctor,edit
|
||||
# Write "yes" or "no" depending on whether you want to use sudo
|
||||
no
|
||||
# Write command to use for root
|
||||
sudo
|
||||
# Write a comma separated list of shortcuts below
|
||||
rm,src,dl,ci,cr,cre
|
||||
# Write a comma separated list of shortcut mappings from the manager below
|
||||
remove,search,download,cask install,cask remove,cask reinstall
|
||||
|
||||
# Config for the pak package manager wrapper
|
||||
packageManager = "brew"
|
||||
commands = ["install", "reinstall", "remove", "upgrade", "update", "search", "cask", "list", "doctor", "edit"]
|
||||
useRoot = false
|
||||
rootCommand = "sudo"
|
||||
shortcuts = ["rm", "src", "dl", "ci", "cr", "cre"]
|
||||
shortcutMappings = ["remove", "search", "download", "cask install", "cask remove", "cask reinstall"]
|
@ -1,12 +1,7 @@
|
||||
# Write the name of the package manager in all lowercase below
|
||||
aptman
|
||||
# Write a comma separated list of commands from the manager below
|
||||
install,remove,upgrade,update,refresh,autoremove,search,filesearch,list
|
||||
# Write "yes" or "no" depending on whether you want to use sudo
|
||||
yes
|
||||
# Write command to use for root
|
||||
sudo
|
||||
# Write a comma separated list of shortcuts below
|
||||
rm,arm,ls
|
||||
# Write a comma separated list of shortcut mappings from the manager below
|
||||
remove,autoremove,list
|
||||
# Config for the pak package manager wrapper
|
||||
packageManager = "aptman"
|
||||
commands = ["install", "remove", "upgrade", "update", "refresh", "autoremove", "search", "filesearch", "list"]
|
||||
useRoot = true
|
||||
rootCommand = "sudo"
|
||||
shortcuts = ["rm", "arm", "ls"]
|
||||
shortcutMappings = ["remove", "autoremove", "list"]
|
@ -1,13 +1,7 @@
|
||||
# Write the name of the package manager in all lowercase below
|
||||
snap
|
||||
# Write a comma separated list of commands from the manager below
|
||||
install,remove,refresh,revert,run,download
|
||||
# Write "yes" or "no" depending on whether you want to use sudo
|
||||
yes
|
||||
# Write command to use for root
|
||||
sudo
|
||||
# Write a comma separated list of shortcuts below
|
||||
rm,inst
|
||||
# Write a comma separated list of shortcut mappings from the manager below
|
||||
remove,install
|
||||
|
||||
# Config for the pak package manager wrapper
|
||||
packageManager = "snap"
|
||||
commands = ["install", "remove", "refresh", "revert", "run", "download"]
|
||||
useRoot = true
|
||||
rootCommand = "sudo"
|
||||
shortcuts = ["rm", "inst"]
|
||||
shortcutMappings = ["remove", "install"]
|
@ -1,12 +1,7 @@
|
||||
# Write the name of the package manager in all lowercase below
|
||||
aptyay
|
||||
# Write a comma separated list of commands from the manager below
|
||||
install,remove,upgrade,update,refresh,autoremove,search,filesearch,list,interactive
|
||||
# Write "yes" or "no" depending on whether you want to use sudo
|
||||
no
|
||||
# Write command to use for root
|
||||
sudo
|
||||
# Write a comma separated list of shortcuts below
|
||||
rm,arm,ls,int
|
||||
# Write a comma separated list of shortcut mappings from the manager below
|
||||
remove,autoremove,list,interactive
|
||||
# Config for the pak package manager wrapper
|
||||
packageManager = "aptyay"
|
||||
commands = ["install", "remove", "upgrade", "update", "refresh", "autoremove", "search", "filesearch", "list", "interactive"]
|
||||
useRoot = false
|
||||
rootCommand = "sudo"
|
||||
shortcuts = ["rm", "arm", "ls", "int"]
|
||||
shortcutMappings = ["remove", "autoremove", "list", "interactive"]
|
@ -1,13 +1,7 @@
|
||||
# Write the name of the package manager in all lowercase below
|
||||
zypper
|
||||
# Write a comma separated list of commands from the manager below
|
||||
install,remove,refresh,search,update,addrepo
|
||||
# Write "yes" or "no" depending on whether you want to use sudo
|
||||
yes
|
||||
# Write command to use for root
|
||||
sudo
|
||||
# Write a comma separated list of shortcuts below
|
||||
rm,ar,inst
|
||||
# Write a comma separated list of shortcut mappings from the manager below
|
||||
remove,addrepo,install
|
||||
|
||||
# Config for the pak package manager wrapper
|
||||
packageManager = "zypper"
|
||||
commands = ["install", "remove", "refresh", "search", "update", "addrepo"]
|
||||
useRoot = true
|
||||
rootCommand = "sudo"
|
||||
shortcuts = ["rm", "ar", "inst"]
|
||||
shortcutMappings = ["remove", "addrepo", "install"]
|
10
slices.go
10
slices.go
@ -1,5 +1,7 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Remove an element at an index from a slice
|
||||
func removeAtIndex(s []string, index int) []string {
|
||||
return append(s[:index], s[index+1:]...)
|
||||
@ -37,3 +39,11 @@ func Find(slice []string, val string) int {
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
||||
func InterfaceToString(interfaceSlice []interface{}) []string {
|
||||
returnedSlice := make([]string, len(interfaceSlice))
|
||||
for index, element := range interfaceSlice {
|
||||
returnedSlice[index] = fmt.Sprint(element)
|
||||
}
|
||||
return returnedSlice
|
||||
}
|
4
usage.go
4
usage.go
@ -6,11 +6,11 @@ import (
|
||||
)
|
||||
|
||||
// Print help screen
|
||||
func printHelpMessage(packageManagerCommand string, useRootBool bool, rootCommand string, commands []string, shortcuts []string, shortcutMappings []string, isOverridden bool) {
|
||||
func printHelpMessage(packageManagerCommand string, useRoot bool, rootCommand string, commands []string, shortcuts []string, shortcutMappings []string, isOverridden bool) {
|
||||
fmt.Println("Arsen Musayelyan's Package Manager Wrapper")
|
||||
fmt.Print("Current package manager is: ", packageManagerCommand)
|
||||
if isOverridden { fmt.Println(" (overridden)") } else { fmt.Print("\n") }
|
||||
if useRootBool { fmt.Println("Using root with command:", rootCommand) } else { fmt.Println("Not using root") }
|
||||
if useRoot { fmt.Println("Using root with command:", rootCommand) } else { fmt.Println("Not using root") }
|
||||
fmt.Println()
|
||||
fmt.Println("Usage: pak <command> [package]")
|
||||
fmt.Println("Example: pak in hello")
|
||||
|
Loading…
Reference in New Issue
Block a user