Skip to content

Commit d0aa221

Browse files
committed
switch to new dependency when changing type
1 parent 0b0463a commit d0aa221

File tree

5 files changed

+39
-20
lines changed

5 files changed

+39
-20
lines changed

pkg/gui/dependencies_panel.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ func (gui *Gui) linkPathMap() map[string]bool {
5454

5555
func (gui *Gui) handleDepInstall(dep *commands.Dependency) error {
5656
cmdStr := fmt.Sprintf("npm install %s", dep.Name)
57-
return gui.newMainCommand(cmdStr, dep.ID())
57+
return gui.newMainCommand(cmdStr, dep.ID(), newMainCommandOptions{})
5858
}
5959

6060
func (gui *Gui) handleDepUpdate(dep *commands.Dependency) error {
6161
cmdStr := fmt.Sprintf("npm update %s", dep.Name)
62-
return gui.newMainCommand(cmdStr, dep.ID())
62+
return gui.newMainCommand(cmdStr, dep.ID(), newMainCommandOptions{})
6363
}
6464

6565
func (gui *Gui) handleOpenDepPackageConfig(dep *commands.Dependency) error {
@@ -81,7 +81,7 @@ func (gui *Gui) handleDepUninstall(dep *commands.Dependency) error {
8181
{
8282
displayStrings: []string{"uninstall", utils.ColoredString(uninstallStr, color.FgYellow)},
8383
onPress: func() error {
84-
return gui.newMainCommand(uninstallStr, dep.ID())
84+
return gui.newMainCommand(uninstallStr, dep.ID(), newMainCommandOptions{})
8585
},
8686
},
8787
}
@@ -99,13 +99,13 @@ func (gui *Gui) handleDepUninstall(dep *commands.Dependency) error {
9999
{
100100
displayStrings: []string{"uninstall and save", utils.ColoredString(uninstallAndSaveCmdStr, color.FgYellow)},
101101
onPress: func() error {
102-
return gui.newMainCommand(uninstallAndSaveCmdStr, dep.ID())
102+
return gui.newMainCommand(uninstallAndSaveCmdStr, dep.ID(), newMainCommandOptions{})
103103
},
104104
},
105105
{
106106
displayStrings: []string{"just uninstall", utils.ColoredString(uninstallCmdStr, color.FgYellow)},
107107
onPress: func() error {
108-
return gui.newMainCommand(uninstallCmdStr, dep.ID())
108+
return gui.newMainCommand(uninstallCmdStr, dep.ID(), newMainCommandOptions{})
109109
},
110110
},
111111
}
@@ -144,7 +144,15 @@ func (gui *Gui) handleChangeDepType(dep *commands.Dependency) error {
144144
menuItems = append(menuItems, &menuItem{
145145
displayStrings: []string{kindKeyMap[kindFlag.Kind], utils.ColoredString(cmdStr, color.FgYellow)},
146146
onPress: func() error {
147-
return gui.newMainCommand(cmdStr, dep.ID())
147+
return gui.newMainCommand(cmdStr, dep.ID(), newMainCommandOptions{onSuccess: func() {
148+
for i, newDep := range gui.State.Deps {
149+
if newDep.Name == dep.Name && newDep.Kind == kindFlag.Kind {
150+
gui.State.Panels.Deps.SelectedLine = i
151+
gui.refreshDepsView()
152+
break
153+
}
154+
}
155+
}})
148156
},
149157
})
150158
}
@@ -158,7 +166,7 @@ func (gui *Gui) handleAddDependency(dep *commands.Dependency) error {
158166
prompt := func(cmdStr string) error {
159167
return gui.createPromptPanel(gui.getDepsView(), "enter dependency name", "", func(input string) error {
160168
newCmdStr := fmt.Sprintf("%s %s", cmdStr, input)
161-
return gui.newMainCommand(newCmdStr, dep.ID())
169+
return gui.newMainCommand(newCmdStr, dep.ID(), newMainCommandOptions{})
162170
})
163171
}
164172

@@ -186,3 +194,8 @@ func (gui *Gui) handleEditDepConstraint(dep *commands.Dependency) error {
186194
return gui.finalStep(gui.NpmManager.EditDepConstraint(dep, packageConfigPath, input))
187195
})
188196
}
197+
198+
func (gui *Gui) refreshDepsView() {
199+
displayStrings := presentation.GetDependencyListDisplayStrings(gui.State.Deps, gui.State.CommandViewMap, gui.getLeftSideWidth() > 70)
200+
gui.renderDisplayStrings(gui.getDepsView(), displayStrings)
201+
}

pkg/gui/packages_panel.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ func (gui *Gui) refreshListViews() {
6969
displayStrings := presentation.GetPackageListDisplayStrings(gui.State.Packages, gui.linkPathMap(), gui.State.CommandViewMap)
7070
gui.renderDisplayStrings(gui.getPackagesView(), displayStrings)
7171

72-
displayStrings = presentation.GetDependencyListDisplayStrings(gui.State.Deps, gui.State.CommandViewMap, gui.getLeftSideWidth() > 70)
73-
gui.renderDisplayStrings(gui.getDepsView(), displayStrings)
72+
gui.refreshDepsView()
7473

7574
displayStrings = presentation.GetScriptListDisplayStrings(gui.getScripts(), gui.State.CommandViewMap)
7675
gui.renderDisplayStrings(gui.getScriptsView(), displayStrings)
@@ -147,7 +146,7 @@ func (gui *Gui) handleLinkPackage() error {
147146
}
148147
}
149148

150-
return gui.newMainCommand(cmdStr, selectedPkg.ID())
149+
return gui.newMainCommand(cmdStr, selectedPkg.ID(), newMainCommandOptions{})
151150
}
152151

153152
func (gui *Gui) handleGlobalLinkPackage(pkg *commands.Package) error {
@@ -162,7 +161,7 @@ func (gui *Gui) handleGlobalLinkPackage(pkg *commands.Package) error {
162161
cmdStr = "npm link"
163162
}
164163

165-
return gui.newMainCommand(cmdStr, pkg.ID())
164+
return gui.newMainCommand(cmdStr, pkg.ID(), newMainCommandOptions{})
166165
}
167166

168167
func (gui *Gui) handleInstall(pkg *commands.Package) error {
@@ -173,7 +172,7 @@ func (gui *Gui) handleInstall(pkg *commands.Package) error {
173172
cmdStr = "npm install --prefix " + pkg.Path
174173
}
175174

176-
return gui.newMainCommand(cmdStr, pkg.ID())
175+
return gui.newMainCommand(cmdStr, pkg.ID(), newMainCommandOptions{})
177176
}
178177

179178
func (gui *Gui) handleBuild(pkg *commands.Package) error {
@@ -184,7 +183,7 @@ func (gui *Gui) handleBuild(pkg *commands.Package) error {
184183
cmdStr = "npm run build --prefix " + pkg.Path
185184
}
186185

187-
return gui.newMainCommand(cmdStr, pkg.ID())
186+
return gui.newMainCommand(cmdStr, pkg.ID(), newMainCommandOptions{})
188187
}
189188

190189
func (gui *Gui) handleOpenPackageConfig(pkg *commands.Package) error {
@@ -227,7 +226,7 @@ func (gui *Gui) handlePackPackage(pkg *commands.Package) error {
227226
cmdStr = fmt.Sprintf("npm pack %s", pkg.Path)
228227
}
229228

230-
return gui.newMainCommand(cmdStr, pkg.ID())
229+
return gui.newMainCommand(cmdStr, pkg.ID(), newMainCommandOptions{})
231230
}
232231

233232
func (gui *Gui) selectedPackageID() string {
@@ -252,7 +251,7 @@ func (gui *Gui) handlePublish(name string, scoped bool, id string) error {
252251
cmdStr = fmt.Sprintf("%s --tag=%s", cmdStr, tag)
253252
}
254253
cmdStr = fmt.Sprintf("%s %s", cmdStr, name)
255-
return gui.newMainCommand(cmdStr, id)
254+
return gui.newMainCommand(cmdStr, id, newMainCommandOptions{})
256255
})
257256
}
258257

pkg/gui/pty.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ import (
1414
"github.com/jesseduffield/lazynpm/pkg/utils"
1515
)
1616

17-
func (gui *Gui) newMainCommand(cmdStr string, contextKey string) error {
17+
type newMainCommandOptions struct {
18+
onSuccess func()
19+
}
20+
21+
func (gui *Gui) newMainCommand(cmdStr string, contextKey string, opts newMainCommandOptions) error {
1822
cmd := gui.OSCommand.ExecutableFromString(cmdStr)
1923

2024
mainPanelLeft, mainPanelTop, mainPanelRight, mainPanelBottom, err := gui.getMainViewDimensions()
@@ -124,7 +128,7 @@ func (gui *Gui) newMainCommand(cmdStr string, contextKey string) error {
124128

125129
gui.State.CommandViewMap[contextKey] = commandView
126130

127-
if err := gui.newPtyTask(contextKey, commandView, cmdStr); err != nil {
131+
if err := gui.newPtyTask(contextKey, commandView, cmdStr, opts); err != nil {
128132
gui.Log.Error(err)
129133
}
130134

@@ -161,7 +165,7 @@ func (gui *Gui) onResize() error {
161165
// which is just an io.Reader. the pty package lets us wrap a command in a
162166
// pseudo-terminal meaning we'll get the behaviour we want from the underlying
163167
// command.
164-
func (gui *Gui) newPtyTask(viewName string, commandView *commands.CommandView, cmdStr string) error {
168+
func (gui *Gui) newPtyTask(viewName string, commandView *commands.CommandView, cmdStr string, opts newMainCommandOptions) error {
165169
go func() {
166170
view, err := gui.g.View(viewName)
167171
if err != nil {
@@ -202,6 +206,9 @@ func (gui *Gui) newPtyTask(viewName string, commandView *commands.CommandView, c
202206
if commandView.Cancelled {
203207
fmt.Fprint(view, utils.ColoredString("\n\ncommand cancelled", color.FgRed))
204208
} else if commandView.Cmd.ProcessState.Success() {
209+
if opts.onSuccess != nil {
210+
opts.onSuccess()
211+
}
205212
fmt.Fprint(view, utils.ColoredString("\n\ncommand completed successfully", color.FgGreen))
206213
} else {
207214
fmt.Fprint(view, utils.ColoredString("\n\ncommand failed", color.FgRed))

pkg/gui/scripts_panel.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (gui *Gui) handleScriptSelect(g *gocui.Gui, v *gocui.View) error {
3737

3838
func (gui *Gui) handleRunScript(script *commands.Script) error {
3939
return gui.createPromptPanel(gui.getScriptsView(), "run script", fmt.Sprintf("npm run %s", script.Name), func(input string) error {
40-
return gui.newMainCommand(input, script.ID())
40+
return gui.newMainCommand(input, script.ID(), newMainCommandOptions{})
4141
})
4242
}
4343

pkg/gui/tarballs_panel.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (gui *Gui) handleDeleteTarball(tarball *commands.Tarball) error {
6969

7070
func (gui *Gui) handleInstallTarball(tarball *commands.Tarball) error {
7171
cmdStr := fmt.Sprintf("npm install %s", tarball.Name)
72-
return gui.newMainCommand(cmdStr, tarball.ID())
72+
return gui.newMainCommand(cmdStr, tarball.ID(), newMainCommandOptions{})
7373
}
7474

7575
func (gui *Gui) handlePublishTarball(tarball *commands.Tarball) error {

0 commit comments

Comments
 (0)