mirror of
https://github.com/Threnklyn/jira.git
synced 2026-05-28 16:58:28 +02:00
if no changes are made on edit templates then abort edit
This commit is contained in:
+15
-1
@@ -196,7 +196,7 @@ func (c *Cli) getTemplate(name string) string {
|
|||||||
} else {
|
} else {
|
||||||
return readFile(file)
|
return readFile(file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return all_templates[name]
|
return all_templates[name]
|
||||||
} else {
|
} else {
|
||||||
return readFile(file)
|
return readFile(file)
|
||||||
@@ -222,6 +222,9 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
log.Error("Failed to rename %s to %s: %s", fh.Name(), fmt.Sprintf("%s.yml", fh.Name()), err)
|
log.Error("Failed to rename %s to %s: %s", fh.Name(), fmt.Sprintf("%s.yml", fh.Name()), err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer func() {
|
||||||
|
os.Remove(tmpFileName)
|
||||||
|
}()
|
||||||
|
|
||||||
err = runTemplate(template, templateData, fh)
|
err = runTemplate(template, templateData, fh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -246,6 +249,12 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
editing = false
|
editing = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmpFileNameOrig := fmt.Sprintf("%s-orig")
|
||||||
|
copyFile(tmpFileName,tmpFileNameOrig)
|
||||||
|
defer func() {
|
||||||
|
os.Remove(tmpFileNameOrig)
|
||||||
|
}()
|
||||||
|
|
||||||
for true {
|
for true {
|
||||||
if editing {
|
if editing {
|
||||||
shell, _ := shellquote.Split(editor)
|
shell, _ := shellquote.Split(editor)
|
||||||
@@ -260,6 +269,11 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
diff := exec.Command("diff", "-q", tmpFileNameOrig, tmpFileName)
|
||||||
|
if err := diff.Run(); err == nil {
|
||||||
|
log.Info("No changes found, aborting")
|
||||||
|
return fmt.Errorf("No changes found, aborting")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
edited := make(map[string]interface{})
|
edited := make(map[string]interface{})
|
||||||
|
|||||||
+23
-5
@@ -63,6 +63,22 @@ func readFile(file string) string {
|
|||||||
return string(bytes)
|
return string(bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func copyFile(src, dst string) (err error){
|
||||||
|
var s, d *os.File;
|
||||||
|
if s, err = os.Open(src); err == nil {
|
||||||
|
defer s.Close()
|
||||||
|
if d, err = os.Create(dst); err == nil {
|
||||||
|
if _, err = io.Copy(d, s); err != nil {
|
||||||
|
d.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return d.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
func fuzzyAge(start string) (string, error) {
|
func fuzzyAge(start string) (string, error) {
|
||||||
if t, err := time.Parse("2006-01-02T15:04:05.000-0700", start); err != nil {
|
if t, err := time.Parse("2006-01-02T15:04:05.000-0700", start); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@@ -246,23 +262,25 @@ func yamlFixup(data interface{}) (interface{}, error) {
|
|||||||
}
|
}
|
||||||
return copy, nil
|
return copy, nil
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
|
copy := make(map[string]interface{})
|
||||||
for k, v := range d {
|
for k, v := range d {
|
||||||
if fixed, err := yamlFixup(v); err != nil {
|
if fixed, err := yamlFixup(v); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if fixed != nil {
|
} else if fixed != nil {
|
||||||
d[k] = fixed
|
copy[k] = fixed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return d, nil
|
return copy, nil
|
||||||
case []interface{}:
|
case []interface{}:
|
||||||
for i, val := range d {
|
copy := make([]interface{}, 0, len(d))
|
||||||
|
for _, val := range d {
|
||||||
if fixed, err := yamlFixup(val); err != nil {
|
if fixed, err := yamlFixup(val); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if fixed != nil {
|
} else if fixed != nil {
|
||||||
d[i] = fixed
|
copy = append(copy, fixed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data, nil
|
return copy, nil
|
||||||
case string:
|
case string:
|
||||||
if d == "" {
|
if d == "" {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
|||||||
Reference in New Issue
Block a user