mirror of
https://github.com/gregtwallace/apc-p15-tool.git
synced 2025-01-22 08:14:08 +00:00
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
|
package app
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
|
||
|
"github.com/peterbourgon/ff/v4"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
ErrExtraArgs = errors.New("extra args present")
|
||
|
)
|
||
|
|
||
|
// app's config options from user
|
||
|
type config struct {
|
||
|
logLevel *string
|
||
|
create struct {
|
||
|
keyPemFilePath *string
|
||
|
certPemFilePath *string
|
||
|
outFilePath *string
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// getConfig returns the app's configuration from either command line args,
|
||
|
// or environment variables
|
||
|
func (app *app) getConfig() {
|
||
|
// make config
|
||
|
cfg := &config{}
|
||
|
|
||
|
// commands:
|
||
|
// create
|
||
|
// TODO:
|
||
|
// upload
|
||
|
// unpack (both key & key+cert)
|
||
|
|
||
|
// apc-p15-tool -- root command
|
||
|
rootFlags := ff.NewFlagSet("apc-p15-tool")
|
||
|
|
||
|
cfg.logLevel = rootFlags.StringEnum('l', "loglevel", "log level: debug, info, warn, error, dpanic, panic, or fatal",
|
||
|
"info", "debug", "warn", "error", "dpanic", "panic", "fatal")
|
||
|
|
||
|
rootCmd := &ff.Command{
|
||
|
Name: "apc-p15-tool",
|
||
|
Usage: "apc-p15-tool [FLAGS] SUBCOMMAND ...",
|
||
|
Flags: rootFlags,
|
||
|
}
|
||
|
|
||
|
// create -- subcommand
|
||
|
createFlags := ff.NewFlagSet("create").SetParent(rootFlags)
|
||
|
|
||
|
cfg.create.keyPemFilePath = createFlags.StringLong("keyfile", "", "path and filename of the rsa-2048 key in pem format")
|
||
|
cfg.create.certPemFilePath = createFlags.StringLong("certfile", "", "path and filename of the rsa-2048 key in pem format")
|
||
|
cfg.create.outFilePath = createFlags.StringLong("outfile", createDefaultOutFilePath, "path and filename to write the p15 file to")
|
||
|
|
||
|
createCmd := &ff.Command{
|
||
|
Name: "create",
|
||
|
Usage: "apc-p15-tool create --keyfile key.pem --certfile cert.pem [--outfile apctool.p15]",
|
||
|
ShortHelp: "create an apc p15 file from the specified key and cert pem files",
|
||
|
Flags: createFlags,
|
||
|
Exec: app.cmdCreate,
|
||
|
}
|
||
|
|
||
|
rootCmd.Subcommands = append(rootCmd.Subcommands, createCmd)
|
||
|
|
||
|
// set app cmd & cfg
|
||
|
app.cmd = rootCmd
|
||
|
app.config = cfg
|
||
|
}
|