fix: unstaged changes handling

See toolshed/organising#651
This commit is contained in:
2024-12-31 11:19:03 +01:00
parent bfed51a69c
commit 5975be6870
26 changed files with 622 additions and 56 deletions

View File

@ -137,8 +137,7 @@ func (r Recipe) EnsureIsClean() error {
}
if !isClean {
msg := "%s (%s) has locally unstaged changes? please commit/remove your changes before proceeding"
return fmt.Errorf(msg, r.Name, r.Dir)
return fmt.Errorf("%s (%s) has locally unstaged changes?", r.Name, r.Dir)
}
return nil
@ -230,8 +229,23 @@ func (r Recipe) EnsureUpToDate() error {
return nil
}
// IsDirty checks whether a recipe is dirty or not. N.B., if you call IsDirty
// from another Recipe method, you should propagate the pointer reference (*).
func (r *Recipe) IsDirty() error {
isClean, err := gitPkg.IsClean(r.Dir)
if err != nil {
return err
}
if !isClean {
r.Dirty = true
}
return nil
}
// ChaosVersion constructs a chaos mode recipe version.
func (r Recipe) ChaosVersion() (string, error) {
func (r *Recipe) ChaosVersion() (string, error) {
var version string
head, err := r.Head()
@ -241,15 +255,10 @@ func (r Recipe) ChaosVersion() (string, error) {
version = formatter.SmallSHA(head.String())
isClean, err := gitPkg.IsClean(r.Dir)
if err != nil {
if err := r.IsDirty(); err != nil {
return version, err
}
if !isClean {
version = fmt.Sprintf("%s+U", version)
}
return version, nil
}