Switch to TOML config [skip ci]

This commit is contained in:
Elara 2020-11-30 15:27:29 -08:00
parent e4dcb180be
commit 0bffa3e2a4
12 changed files with 79 additions and 116 deletions

5
go.mod Normal file
View 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
View 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
View File

@ -21,6 +21,7 @@ package main
import ( import (
"flag" "flag"
"fmt" "fmt"
"github.com/pelletier/go-toml"
"io/ioutil" "io/ioutil"
"log" "log"
"os" "os"
@ -91,54 +92,38 @@ func main() {
// Parse config file removing all comments and empty lines // Parse config file removing all comments and empty lines
config, err := ioutil.ReadFile(configFileLocation) config, err := ioutil.ReadFile(configFileLocation)
if err != nil { log.Fatal(err) } parsedConfig, _ := toml.Load(string(config))
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
// Set first line of config to variable // Set first line of config to variable
packageManagerCommand := cfg[0] packageManagerCommand := parsedConfig.Get("packageManager").(string)
//fmt.Println(packageManagerCommand) //DEBUG //fmt.Println(packageManagerCommand) //DEBUG
// Parse list of commands in config line 2 and set to variable as array // 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 //fmt.Println(commands) //DEBUG
// Set the root option in config line 3 to a variable // Set the root option in config line 3 to a variable
useRoot := cfg[2] useRoot := parsedConfig.Get("useRoot").(bool)
//fmt.Println(useRoot) //DEBUG //fmt.Println(useRoot) //DEBUG
// Set command to use to invoke root at config line 4 to a variable // 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 //fmt.Println(rootCommand) //DEBUG
// Parse list of shortcuts in config and line 5 set to variable as an array // 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 //fmt.Println(shortcuts) //DEBUG
// Parse list of shortcuts in config line 6 and set to variable as array // 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 //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 // Create similar to slice to put all matched commands into
var similarTo []string var similarTo []string
// Displays help message if no arguments provided or -h/--help is passed // Displays help message if no arguments provided or -h/--help is passed
if len(args) == 0 || helpFlagGiven || Contains(args, "help") { 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) os.Exit(0)
} }
@ -175,7 +160,7 @@ func main() {
// Run package manager with the proper arguments passed if more than one argument exists // Run package manager with the proper arguments passed if more than one argument exists
var cmdArr []string var cmdArr []string
// If root is to be used, append it to cmdArr // 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 // Create slice with all commands and arguments for the package manager
cmdArr = append(cmdArr, []string{packageManagerCommand, similarTo[0]}...) cmdArr = append(cmdArr, []string{packageManagerCommand, similarTo[0]}...)
// If greater than 2 arguments, append them to cmdArr // If greater than 2 arguments, append them to cmdArr

View File

@ -1,13 +1,7 @@
# Write the name of the package manager in all lowercase below # Config for the pak package manager wrapper
apt packageManager = "apt"
# Write a comma separated list of commands from the manager below commands = ["install", "remove", "update", "upgrade", "search", "download"]
install,remove,update,upgrade,search,download useRoot = true
# Write "yes" or "no" depending on whether you want to use sudo rootCommand = "sudo"
yes shortcuts = ["rm", "inst"]
# Write command to use for root shortcutMappings = ["remove", "install"]
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

View File

@ -1,13 +1,7 @@
# Write the name of the package manager in all lowercase below # Config for the pak package manager wrapper
aptitude packageManager = "aptitude"
# Write a comma separated list of commands from the manager below commands = ["install", "remove", "download", "update", "upgrade", "full-upgrade", "safe-upgrade", "clean", "hold", "unhold", "markauto", "unmarkauto", "why", "whynot", "reinstall", "search", "show", "changelog"]
install,remove,download,update,upgrade,full-upgrade,safe-upgrade,clean,hold,unhold,markauto,unmarkauto,why,whynot,reinstall,search,show,changelog useRoot = true
# Write "yes" or "no" depending on whether you want to use sudo rootCommand = "sudo"
yes shortcuts = ["rm", "inst"]
# Write command to use for root shortcutMappings = ["remove", "install"]
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

View File

@ -1,13 +1,7 @@
# Write the name of the package manager in all lowercase below # Config for the pak package manager wrapper
brew packageManager = "brew"
# Write a comma separated list of commands from the manager below commands = ["install", "reinstall", "remove", "upgrade", "update", "search", "cask", "list", "doctor", "edit"]
install,reinstall,remove,upgrade,update,search,cask,list,doctor,edit useRoot = false
# Write "yes" or "no" depending on whether you want to use sudo rootCommand = "sudo"
no shortcuts = ["rm", "src", "dl", "ci", "cr", "cre"]
# Write command to use for root shortcutMappings = ["remove", "search", "download", "cask install", "cask remove", "cask reinstall"]
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

View File

@ -1,12 +1,7 @@
# Write the name of the package manager in all lowercase below # Config for the pak package manager wrapper
aptman packageManager = "aptman"
# Write a comma separated list of commands from the manager below commands = ["install", "remove", "upgrade", "update", "refresh", "autoremove", "search", "filesearch", "list"]
install,remove,upgrade,update,refresh,autoremove,search,filesearch,list useRoot = true
# Write "yes" or "no" depending on whether you want to use sudo rootCommand = "sudo"
yes shortcuts = ["rm", "arm", "ls"]
# Write command to use for root shortcutMappings = ["remove", "autoremove", "list"]
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

View File

@ -1,13 +1,7 @@
# Write the name of the package manager in all lowercase below # Config for the pak package manager wrapper
snap packageManager = "snap"
# Write a comma separated list of commands from the manager below commands = ["install", "remove", "refresh", "revert", "run", "download"]
install,remove,refresh,revert,run,download useRoot = true
# Write "yes" or "no" depending on whether you want to use sudo rootCommand = "sudo"
yes shortcuts = ["rm", "inst"]
# Write command to use for root shortcutMappings = ["remove", "install"]
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

View File

@ -1,12 +1,7 @@
# Write the name of the package manager in all lowercase below # Config for the pak package manager wrapper
aptyay packageManager = "aptyay"
# Write a comma separated list of commands from the manager below commands = ["install", "remove", "upgrade", "update", "refresh", "autoremove", "search", "filesearch", "list", "interactive"]
install,remove,upgrade,update,refresh,autoremove,search,filesearch,list,interactive useRoot = false
# Write "yes" or "no" depending on whether you want to use sudo rootCommand = "sudo"
no shortcuts = ["rm", "arm", "ls", "int"]
# Write command to use for root shortcutMappings = ["remove", "autoremove", "list", "interactive"]
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

View File

@ -1,13 +1,7 @@
# Write the name of the package manager in all lowercase below # Config for the pak package manager wrapper
zypper packageManager = "zypper"
# Write a comma separated list of commands from the manager below commands = ["install", "remove", "refresh", "search", "update", "addrepo"]
install,remove,refresh,search,update,addrepo useRoot = true
# Write "yes" or "no" depending on whether you want to use sudo rootCommand = "sudo"
yes shortcuts = ["rm", "ar", "inst"]
# Write command to use for root shortcutMappings = ["remove", "addrepo", "install"]
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

View File

@ -1,5 +1,7 @@
package main package main
import "fmt"
// Remove an element at an index from a slice // Remove an element at an index from a slice
func removeAtIndex(s []string, index int) []string { func removeAtIndex(s []string, index int) []string {
return append(s[:index], s[index+1:]...) return append(s[:index], s[index+1:]...)
@ -37,3 +39,11 @@ func Find(slice []string, val string) int {
} }
return -1 return -1
} }
func InterfaceToString(interfaceSlice []interface{}) []string {
returnedSlice := make([]string, len(interfaceSlice))
for index, element := range interfaceSlice {
returnedSlice[index] = fmt.Sprint(element)
}
return returnedSlice
}

View File

@ -6,11 +6,11 @@ import (
) )
// Print help screen // 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.Println("Arsen Musayelyan's Package Manager Wrapper")
fmt.Print("Current package manager is: ", packageManagerCommand) fmt.Print("Current package manager is: ", packageManagerCommand)
if isOverridden { fmt.Println(" (overridden)") } else { fmt.Print("\n") } 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()
fmt.Println("Usage: pak <command> [package]") fmt.Println("Usage: pak <command> [package]")
fmt.Println("Example: pak in hello") fmt.Println("Example: pak in hello")