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 (
|
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
|
||||||
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
@ -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
|
|
||||||
|
|
10
slices.go
10
slices.go
@ -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
|
||||||
|
}
|
4
usage.go
4
usage.go
@ -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")
|
||||||
|
Loading…
Reference in New Issue
Block a user