70 lines
1.2 KiB
Go
70 lines
1.2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var (
|
|
Version = "develop"
|
|
defaultDir string
|
|
|
|
registryFlag string
|
|
sourceFlag string
|
|
)
|
|
|
|
func init() {
|
|
home, err := os.UserHomeDir()
|
|
if err != nil {
|
|
log.Error().Msg("could not locate user's home directory, tmpl will use temp dir for registry")
|
|
defaultDir = filepath.Join(os.TempDir(), ".tmpl")
|
|
return
|
|
}
|
|
defaultDir = filepath.Join(home, ".tmpl")
|
|
}
|
|
|
|
func NewApp() *cli.App {
|
|
app := cli.NewApp()
|
|
app.Name = "tmpl"
|
|
app.Usage = "Template automation"
|
|
app.Description = "Template automation"
|
|
app.Version = Version
|
|
app.Flags = []cli.Flag{
|
|
&cli.StringFlag{
|
|
Name: "registry",
|
|
Aliases: []string{"r"},
|
|
Usage: "Registry directory of tmpl",
|
|
Value: defaultDir,
|
|
DefaultText: "~/.tmpl",
|
|
Destination: ®istryFlag,
|
|
EnvVars: []string{"TMPL_REGISTRY"},
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "source",
|
|
Aliases: []string{"s"},
|
|
Usage: "Short-name source to use",
|
|
Destination: &sourceFlag,
|
|
EnvVars: []string{"TMPL_SOURCE"},
|
|
},
|
|
}
|
|
|
|
app.Commands = []*cli.Command{
|
|
Download,
|
|
Env,
|
|
Init,
|
|
List,
|
|
Remove,
|
|
Restore,
|
|
Save,
|
|
Source,
|
|
Test,
|
|
Update,
|
|
Use,
|
|
}
|
|
|
|
return app
|
|
}
|