diff options
author | Andinus <andinus@nand.sh> | 2020-04-25 19:40:09 +0530 |
---|---|---|
committer | Andinus <andinus@nand.sh> | 2020-04-25 19:40:09 +0530 |
commit | 19f545f2b759a7b2281bf5053aff32f7a52d62d2 (patch) | |
tree | ab21f8db91b3b78e767a93a0d259003e252f9e2d | |
parent | 3b888d4fc7f801a14ca265cada84077209714599 (diff) | |
download | pavo-19f545f2b759a7b2281bf5053aff32f7a52d62d2.tar.gz |
Initial version of pavo
-rw-r--r-- | main.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/main.go b/main.go new file mode 100644 index 0000000..5a102b4 --- /dev/null +++ b/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "fmt" + "os" + "os/exec" +) + +var ( + version = "v0.1.0" + + cmd Config + flags []string +) + +func main() { + initPledge() + initUnveil() + + if len(os.Args) == 1 { + fmt.Println("Usage: pavo <command> <flags>") + os.Exit(1) + } + + if os.Args[1] == "version" { + fmt.Println("Pavo", version) + os.Exit(0) + } + + // Parse the config file. + parseConfig() + + // Block futher unveil calls. + blockUnveil() + + // Get path of command. + cmdPath, err := exec.LookPath(cmd.Command) + if err != nil { + fmt.Printf("%s %s :: %s\n", + cmd.Command, + "not found in $PATH", + err.Error()) + os.Exit(1) + } + + // TODO: Make the output realtime. + out, err := exec.Command(cmdPath, flags...).Output() + if err != nil { + err = fmt.Errorf("%s :: %s", + "Failed to execute command", + err.Error()) + os.Exit(1) + } + + // Print the output. + fmt.Printf(string(out)) +} |