115 lines
2.7 KiB
Go
115 lines
2.7 KiB
Go
package cmd
|
|
|
|
import (
|
|
"os"
|
|
|
|
"git.towk2.me/towk/makeshift/pkg/util"
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
const CONFIG_FILE = `---
|
|
#
|
|
# Makeshift Config
|
|
#
|
|
# Repository: https://git.towk2.me/towk/makeshift
|
|
#
|
|
# Default configuration file for 'makeshift' CLI and service.
|
|
# This file was autogenerated using 'makeshift config new' command.
|
|
#
|
|
|
|
# Set the service host.
|
|
host: http://localhost:5050
|
|
|
|
# Set the path to the file or directory to download.
|
|
path: help.txt
|
|
|
|
# Set the log file path. Logs will be written to this location.
|
|
log-file: logs/makeshift.log
|
|
|
|
# Set the log level. Possible values include 'debug', 'info', 'warn',
|
|
# 'error', 'disabled', and 'trace'.
|
|
log-level: info
|
|
|
|
# Set the plugins to use when downloading files and/or directories.
|
|
plugins:
|
|
- smd
|
|
- jinja2
|
|
|
|
# Set the positional arguments to pass to ALL plugins when downloading
|
|
# files and directories. NOTE: These arguments may be ignored or not
|
|
# used within certain plugins.
|
|
plugin-args:
|
|
|
|
# Set the key-word arguments stored in the data that is passed to ALL
|
|
# plugins when downloading files and directories. NOTE: These arguments
|
|
# may be ignored or not used within certain plugins.
|
|
plugin-kwargs:
|
|
|
|
# Set the profiles to use when downloading files and/or directories.
|
|
profiles:
|
|
- default
|
|
|
|
# Set whether to extract the archive when downloading directories.
|
|
extract: false
|
|
|
|
# Set whether to remove an archive after downloading and extracting.
|
|
# This requires that the 'extract' flag be set to 'true'.
|
|
remove-archive: false
|
|
|
|
# Set the path to a CA certificate.
|
|
cacert: ""
|
|
|
|
# Set the path to a CA key file.
|
|
keyfile: ""
|
|
`
|
|
|
|
var configCmd = &cobra.Command{
|
|
Use: "config",
|
|
Short: "Manage makeshift config file",
|
|
}
|
|
|
|
var configNewCmd = &cobra.Command{
|
|
Use: "new [path]",
|
|
Example: `
|
|
# create a new default config at specified path
|
|
makeshift config new configs/makeshift.yaml
|
|
`,
|
|
Args: cobra.ExactArgs(1),
|
|
Short: "Create a new config file",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
for _, path := range args {
|
|
var (
|
|
overwrite, _ = cmd.Flags().GetBool("overwrite")
|
|
|
|
exists bool
|
|
err error
|
|
)
|
|
if exists, err = util.PathExists(path); err != nil {
|
|
log.Error().
|
|
Err(err).
|
|
Str("path", path).
|
|
Msg("failed to determine if path exists")
|
|
} else {
|
|
if exists && !overwrite {
|
|
log.Error().Msg("file exists and '--overwrite' flag not passed")
|
|
return
|
|
}
|
|
err := os.WriteFile(path, []byte(CONFIG_FILE), 0o644)
|
|
if err != nil {
|
|
log.Error().
|
|
Err(err).
|
|
Str("path", path).
|
|
Msg("failed to write diefault config file to path")
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
configNewCmd.Flags().BoolP("overwrite", "f", false, "Set whether to overwrite an existing file")
|
|
configCmd.AddCommand(configNewCmd)
|
|
rootCmd.AddCommand(configCmd)
|
|
}
|