Skip to content

Commit 6c95655

Browse files
committed
Fix dependency manager update prompts and filesystem actions
1 parent 5a18fad commit 6c95655

1 file changed

Lines changed: 30 additions & 2 deletions

File tree

internal/dependencymanager/dependencyinstaller.go

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ type categorizedLogs struct {
5959
type pendingPrompt struct {
6060
contractName string
6161
networkName string
62+
contractAddr string
63+
contractData string
6264
needsDeployment bool
6365
needsAlias bool
6466
needsUpdate bool
@@ -125,6 +127,7 @@ type DependencyInstaller struct {
125127
TargetDir string
126128
SkipDeployments bool
127129
SkipAlias bool
130+
SkipUpdatePrompts bool
128131
DeploymentAccount string
129132
Name string
130133
logs categorizedLogs
@@ -165,6 +168,7 @@ func NewDependencyInstaller(logger output.Logger, state *flowkit.State, saveStat
165168
TargetDir: targetDir,
166169
SkipDeployments: flags.skipDeployments,
167170
SkipAlias: flags.skipAlias,
171+
SkipUpdatePrompts: flags.skipUpdatePrompts,
168172
DeploymentAccount: flags.deploymentAccount,
169173
Name: flags.name,
170174
dependencies: make(map[string]config.Dependency),
@@ -620,15 +624,24 @@ func (di *DependencyInstaller) handleFoundContract(dependency config.Dependency,
620624
}
621625

622626
// Check if remote source version is different from local version
623-
// If it is, defer the prompt until after the tree is displayed
627+
// If it is, defer the prompt until after the tree is displayed (unless skip flag is set)
624628
// If no hash, ignore
625629
if existingDependency != nil && existingDependency.Hash != "" && existingDependency.Hash != originalContractDataHash {
630+
// If skip update prompts flag is set, don't prompt and keep existing version
631+
if di.SkipUpdatePrompts {
632+
msg := util.MessageWithEmojiPrefix("⏸️ ", fmt.Sprintf("%s kept at current version (update available)", dependency.Name))
633+
di.logs.stateUpdates = append(di.logs.stateUpdates, msg)
634+
return nil
635+
}
636+
626637
// Find existing pending prompt for this contract or create new one
627638
found := false
628639
for i := range di.pendingPrompts {
629640
if di.pendingPrompts[i].contractName == dependency.Name {
630641
di.pendingPrompts[i].needsUpdate = true
631642
di.pendingPrompts[i].updateHash = originalContractDataHash
643+
di.pendingPrompts[i].contractAddr = contractAddr
644+
di.pendingPrompts[i].contractData = contractData
632645
found = true
633646
break
634647
}
@@ -637,10 +650,13 @@ func (di *DependencyInstaller) handleFoundContract(dependency config.Dependency,
637650
di.pendingPrompts = append(di.pendingPrompts, pendingPrompt{
638651
contractName: dependency.Name,
639652
networkName: networkName,
653+
contractAddr: contractAddr,
654+
contractData: contractData,
640655
needsUpdate: true,
641656
updateHash: originalContractDataHash,
642657
})
643658
}
659+
644660
return nil
645661
}
646662

@@ -707,7 +723,7 @@ func (di *DependencyInstaller) handleAdditionalDependencyTasks(networkName, cont
707723
// If the contract is not a core contract and the user does not want to skip aliasing, then collect for prompting later
708724
needsAlias := !di.SkipAlias && !util.IsCoreContract(contractName) && !isDefiActionsContract(contractName)
709725

710-
// Only add to pending prompts if we need to prompt for something
726+
// Only add/update pending prompts if we need to prompt for something
711727
if needsDeployment || needsAlias {
712728
di.pendingPrompts = append(di.pendingPrompts, pendingPrompt{
713729
contractName: contractName,
@@ -932,9 +948,21 @@ func (di *DependencyInstaller) processPendingPrompts() error {
932948
di.Logger.Error(fmt.Sprintf("Error updating dependency: %v", err))
933949
return err
934950
}
951+
952+
// Write the updated contract file
953+
err = di.handleFileSystem(pending.contractAddr, pending.contractName, pending.contractData, pending.networkName)
954+
if err != nil {
955+
di.Logger.Error(fmt.Sprintf("Error updating contract file: %v", err))
956+
return err
957+
}
958+
935959
msg := util.MessageWithEmojiPrefix("✅", fmt.Sprintf("%s updated to latest version", pending.contractName))
936960
di.logs.stateUpdates = append(di.logs.stateUpdates, msg)
937961
}
962+
} else {
963+
// User chose not to update - keep the existing file and hash as is
964+
msg := util.MessageWithEmojiPrefix("⏸️", fmt.Sprintf("%s kept at current version", pending.contractName))
965+
di.logs.stateUpdates = append(di.logs.stateUpdates, msg)
938966
}
939967
}
940968
}

0 commit comments

Comments
 (0)