kleinCommand/commands/config/subcommands.go
2024-05-24 21:07:13 +02:00

79 lines
1.6 KiB
Go

package config
import (
"context"
"encoding/base64"
"errors"
"fmt"
"github.com/DariusKlein/kleinCommand/services"
"github.com/google/go-github/github"
"github.com/urfave/cli/v2"
"os"
)
func subcommands() []*cli.Command {
return []*cli.Command{
{
Name: "create",
Usage: "Generates a new configuration file",
Action: creatAction,
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "force",
Aliases: []string{"f"},
Usage: "force overwrite",
},
},
},
{
Name: "get",
Usage: "prints configuration file to stdout",
Action: printAction,
},
}
}
func creatAction(c *cli.Context) error {
path, configPath, err := services.GetConfigPath()
if err != nil {
fmt.Println(err)
}
fmt.Println(path)
fmt.Println(configPath)
fmt.Println("Creating configuration file")
if err = os.MkdirAll(path, 0770); err != nil {
return err
}
if _, err = os.Stat(configPath); errors.Is(err, os.ErrNotExist) || c.Bool("force") {
client := github.NewClient(nil)
defaultConfig, _, _, _ := client.Repositories.GetContents(context.Background(), "DariusKlein", "kleinCommand", "config.toml", nil)
configString, _ := base64.StdEncoding.DecodeString(*defaultConfig.Content)
err = os.WriteFile(configPath, configString, 0644)
if err != nil {
return err
}
fmt.Println("Created: " + configPath)
} else {
fmt.Println("Configuration file already exists")
}
return nil
}
func printAction(c *cli.Context) error {
_, configPath, err := services.GetConfigPath()
if err != nil {
fmt.Println(err)
}
file, err := os.ReadFile(configPath)
if err != nil {
return err
}
fmt.Println(string(file))
return nil
}