Modify gorepomod to unpin conditionally.

This commit is contained in:
monopole
2021-02-11 14:51:00 -08:00
parent c764bc1618
commit 52fbe73d49
4 changed files with 53 additions and 23 deletions

View File

@@ -51,11 +51,12 @@ const (
)
type Args struct {
cmd Command
moduleName misc.ModuleShortName
version semver.SemVer
bump semver.SvBump
doIt bool
cmd Command
moduleName misc.ModuleShortName
conditionalModule misc.ModuleShortName
version semver.SemVer
bump semver.SvBump
doIt bool
}
func (a *Args) GetCommand() Command {
@@ -74,6 +75,10 @@ func (a *Args) ModuleName() misc.ModuleShortName {
return a.moduleName
}
func (a *Args) ConditionalModule() misc.ModuleShortName {
return a.conditionalModule
}
func (a *Args) Exclusions() (result []string) {
// Make sure the list has no repeats.
for k := range utils.SliceToSet(excSlice) {
@@ -122,6 +127,7 @@ func Parse() (result *Args, err error) {
result.doIt = clArgs.doIt
result.moduleName = misc.ModuleUnknown
result.conditionalModule = misc.ModuleUnknown
if !clArgs.more() {
return nil, fmt.Errorf("command needs at least one arg")
}
@@ -146,6 +152,9 @@ func Parse() (result *Args, err error) {
return nil, fmt.Errorf("unpin needs a moduleName to unpin")
}
result.moduleName = misc.ModuleShortName(clArgs.next())
if clArgs.more() {
result.conditionalModule = misc.ModuleShortName(clArgs.next())
}
result.cmd = UnPin
case cmdTidy:
result.cmd = Tidy

View File

@@ -53,10 +53,17 @@ func (mgr *Manager) Pin(
})
}
func (mgr *Manager) UnPin(doIt bool, target misc.LaModule) error {
func (mgr *Manager) UnPin(
doIt bool, target misc.LaModule, conditional misc.LaModule) error {
return mgr.modules.Apply(func(m misc.LaModule) error {
if yes, oldVersion := m.DependsOn(target); yes {
return edit.New(m, doIt).UnPin(target, oldVersion)
if conditional == nil {
if yes, oldVersion := m.DependsOn(target); yes {
return edit.New(m, doIt).UnPin(target, oldVersion)
}
} else {
if yes, oldVersion := m.DependsOn(conditional); yes {
return edit.New(m, doIt).UnPin(target, oldVersion)
}
}
return nil
})