Added a simple setup command
This commit is contained in:
parent
a180f306ab
commit
73ce95d30b
81
cmd/setup.go
Normal file
81
cmd/setup.go
Normal file
@ -0,0 +1,81 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"os/user"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var (
|
||||
configDirectory string = strings.Join([]string{getHomeDir(), ".muldap"}, "/")
|
||||
configFile string = "config.toml"
|
||||
configFilePath string = strings.Join([]string{configDirectory, configFile}, "/")
|
||||
defaultPerms os.FileMode = 0700
|
||||
)
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(setupCmd)
|
||||
}
|
||||
|
||||
var setupCmd = &cobra.Command{
|
||||
Use: "setup",
|
||||
Short: "Set up your user environment for muldap",
|
||||
Long: "An easy way to get your environment up and running using muldap",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
// check if the configuration directory exists
|
||||
if _, err := os.Stat(configDirectory); os.IsNotExist(err) {
|
||||
fmt.Printf("Creating new configuration directory at %s\n", configDirectory)
|
||||
_ = os.Mkdir(configDirectory, defaultPerms)
|
||||
}
|
||||
|
||||
// check if the configuration file exists
|
||||
if _, err := os.Stat(configFilePath); os.IsNotExist(err) {
|
||||
fmt.Printf("Creating new configuration file at %s\n", configFilePath)
|
||||
_, err = os.Create(configFilePath)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// write the configuration to the new file
|
||||
copyFile("./config.toml", configFilePath)
|
||||
} else {
|
||||
// notify the user the file already exists
|
||||
fmt.Printf("Your configuration file already exists at %s\n", configFilePath)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
// get user's home directory
|
||||
func getHomeDir() string {
|
||||
usr, err := user.Current()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
return usr.HomeDir
|
||||
}
|
||||
|
||||
// copy a file
|
||||
func copyFile(src, dst string) {
|
||||
in, err := os.OpenFile(src, os.O_RDONLY, os.ModeAppend)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer in.Close()
|
||||
|
||||
out, err := os.OpenFile(dst, os.O_WRONLY, os.ModeAppend)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
_, err = io.Copy(out, in)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user