Skip to content
Snippets Groups Projects
Commit 8b04f869 authored by Tamer Tas's avatar Tamer Tas
Browse files

Refactor template directory initialization checks

parent b830cb6f
No related branches found
No related tags found
No related merge requests found
......@@ -9,7 +9,6 @@ import (
"github.com/tmrts/boilr/pkg/util/exit"
"github.com/tmrts/boilr/pkg/util/osutil"
"github.com/tmrts/boilr/pkg/util/tlog"
)
const (
......@@ -57,6 +56,10 @@ func TemplatePath(name string) (string, error) {
return filepath.Join(Configuration.TemplateDirPath, name), nil
}
func IsTemplateDirInitialized() (bool, error) {
return osutil.DirExists(Configuration.TemplateDirPath)
}
func init() {
homeDir := os.Getenv("HOME")
if homeDir == "" {
......@@ -67,17 +70,6 @@ func init() {
Configuration.FilePath = filepath.Join(homeDir, ConfigDirPath, ConfigFileName)
Configuration.TemplateDirPath = filepath.Join(homeDir, ConfigDirPath, TemplateDir)
IsTemplateDirInitialized, err := osutil.DirExists(Configuration.TemplateDirPath)
if err != nil {
exit.Error(err)
}
// TODO perform this in related commands only with ValidateInitialization
if !IsTemplateDirInitialized {
tlog.Warn("Template registry is not initialized. Please run `init` command to create it.")
return
}
// Read .config/boilr/config.json if exists
// TODO use defaults if config.json doesn't exist
hasConfig, err := osutil.FileExists(Configuration.FilePath)
......
......@@ -20,6 +20,8 @@ var Delete = &cli.Command{
Run: func(c *cli.Command, args []string) {
MustValidateVarArgs(args, validate.Argument{"template-path", validate.Alphanumeric})
MustValidateTemplateDir()
for _, templateName := range args {
targetDir := filepath.Join(boilr.Configuration.TemplateDirPath, templateName)
......
......@@ -103,6 +103,8 @@ var Download = &cli.Command{
{"template-tag", validate.Alphanumeric},
})
MustValidateTemplateDir()
templateURL, templateName := args[0], args[1]
targetDir, err := boilr.TemplatePath(templateName)
......
......@@ -42,6 +42,8 @@ var List = &cli.Command{
Run: func(c *cli.Command, args []string) {
MustValidateArgs(args, []validate.Argument{})
MustValidateTemplateDir()
templateNames, err := ListTemplates()
if err != nil {
exit.Error(fmt.Errorf("list: %s", err))
......
......@@ -3,6 +3,7 @@ package cmd
import (
"fmt"
"github.com/tmrts/boilr/pkg/boilr"
"github.com/tmrts/boilr/pkg/cmd/util"
"github.com/tmrts/boilr/pkg/util/exit"
"github.com/tmrts/boilr/pkg/util/validate"
......@@ -37,3 +38,15 @@ func MustValidateTemplate(path string) {
exit.Fatal(fmt.Errorf("validate: %s", ErrTemplateInvalid))
}
}
// MustValidateTemplateDir ensures that template directory is initialized.
func MustValidateTemplateDir() {
isInitialized, err := boilr.IsTemplateDirInitialized()
if err != nil {
exit.Error(err)
}
if !isInitialized {
exit.Error(fmt.Errorf("Template registry is not initialized. Please run `init` command to initialize it."))
}
}
......@@ -30,6 +30,8 @@ var Rename = &cli.Command{
{"new-template-tag", validate.UnixPath},
})
MustValidateTemplateDir()
tmplName, newTmplName := args[0], args[1]
if ok, err := TemplateInRegistry(tmplName); err != nil {
......
......@@ -25,6 +25,8 @@ var Save = &cli.Command{
{"template-tag", validate.Alphanumeric},
})
MustValidateTemplateDir()
tmplDir, templateName := args[0], args[1]
MustValidateTemplate(tmplDir)
......
......@@ -34,6 +34,8 @@ var Use = &cli.Command{
{"target-dir", validate.UnixPath},
})
MustValidateTemplateDir()
tmplName, targetDir := args[0], args[1]
if ok, err := TemplateInRegistry(tmplName); err != nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment