From 70fcdd8ef4bf3d5271a95c51332f1a815ff6ff23 Mon Sep 17 00:00:00 2001 From: Cory Bennett Date: Mon, 16 Feb 2015 14:31:39 -0800 Subject: [PATCH] [issue #4] make sure ~/.jira.d/tmp exists before we write to it during create/edit --- jira/cli/cli.go | 4 ++++ jira/cli/commands.go | 13 +------------ jira/cli/util.go | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/jira/cli/cli.go b/jira/cli/cli.go index b85ee37..d009f49 100644 --- a/jira/cli/cli.go +++ b/jira/cli/cli.go @@ -202,6 +202,10 @@ func (c *Cli) getTemplate(name string) string { func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData map[string]interface{}, templateProcessor func(string) error) error { tmpdir := fmt.Sprintf("%s/.jira.d/tmp", os.Getenv("HOME")) + if err := mkdir(tmpdir); err != nil { + return err + } + fh, err := ioutil.TempFile(tmpdir, tmpFilePrefix) if err != nil { log.Error("Failed to make temp file in %s: %s", tmpdir, err) diff --git a/jira/cli/commands.go b/jira/cli/commands.go index 0994fed..54474c7 100644 --- a/jira/cli/commands.go +++ b/jira/cli/commands.go @@ -532,19 +532,8 @@ func (c *Cli) CmdAssign(issue string, user string) error { func (c *Cli) CmdExportTemplates() error { dir := c.opts["directory"] - if stat, err := os.Stat(dir); err != nil && !os.IsNotExist(err) { - log.Error("Failed to stat %s: %s", dir, err) + if err := mkdir(dir); err != nil { return err - } else if err == nil && !stat.IsDir() { - err := fmt.Errorf("%s exists and is not a directory!", dir) - log.Error("%s", err) - return err - } else { - // dir does not exist, so try to create it - if err := os.MkdirAll(dir, 0755); err != nil { - log.Error("Failed to mkdir -p %s: %s", dir, err) - return err - } } for name, template := range all_templates { diff --git a/jira/cli/util.go b/jira/cli/util.go index de8fcfe..0bd117f 100644 --- a/jira/cli/util.go +++ b/jira/cli/util.go @@ -216,3 +216,21 @@ func yamlFixup(data interface{}) (interface{}, error) { return d, nil } } + +func mkdir(dir string) error { + if stat, err := os.Stat(dir); err != nil && !os.IsNotExist(err) { + log.Error("Failed to stat %s: %s", dir, err) + return err + } else if err == nil && !stat.IsDir() { + err := fmt.Errorf("%s exists and is not a directory!", dir) + log.Error("%s", err) + return err + } else { + // dir does not exist, so try to create it + if err := os.MkdirAll(dir, 0755); err != nil { + log.Error("Failed to mkdir -p %s: %s", dir, err) + return err + } + } + return nil +}