Skip to content

Commit 186acd5

Browse files
committed
spinner stop
1 parent 0bb0ebe commit 186acd5

2 files changed

Lines changed: 23 additions & 8 deletions

File tree

pkg/command/plugin.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ func newInstallPluginCmd() *cobra.Command {
279279
pluginmanager.SetTotalPluginsToInstall(1)
280280
pluginVersion := version
281281
err = pluginmanager.InstallStandalonePlugin(pluginName, pluginVersion, getTarget())
282+
pluginmanager.StopSpinner()
282283
if err != nil {
283284
return err
284285
}

pkg/pluginmanager/manager.go

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"os"
1212
"os/exec"
1313
"path/filepath"
14+
"runtime"
1415
"strings"
1516

1617
"github.com/Masterminds/semver"
@@ -59,6 +60,23 @@ const (
5960
var totalPluginsToInstall = 0
6061
var pluginsInstalledCount = 0
6162
var execCommand = exec.Command
63+
var spinner component.OutputWriterSpinner
64+
65+
func init() {
66+
// Initialize global spinner
67+
spinner = component.NewOutputWriterSpinner(component.WithOutputStream(os.Stderr))
68+
runtime.SetFinalizer(spinner, func(s component.OutputWriterSpinner) {
69+
if s != nil {
70+
s.StopSpinner()
71+
}
72+
})
73+
}
74+
75+
func StopSpinner() {
76+
if spinner != nil {
77+
spinner.StopSpinner()
78+
}
79+
}
6280

6381
type DeletePluginOptions struct {
6482
Target configtypes.Target
@@ -609,7 +627,6 @@ func InstallPluginsFromGroup(pluginName, groupIDAndVersion string, options ...Pl
609627
// from the database
610628
groupIDAndVersion = fmt.Sprintf("%s-%s/%s:%s", pg.Vendor, pg.Publisher, pg.Name, pg.RecommendedVersion)
611629
log.Infof("Installing plugins from plugin group '%s'", groupIDAndVersion)
612-
613630
return InstallPluginsFromGivenPluginGroup(pluginName, groupIDAndVersion, pg)
614631
}
615632

@@ -662,6 +679,7 @@ func InstallPluginsFromGivenPluginGroup(pluginName, groupIDAndVersion string, pg
662679
}
663680
SetTotalPluginsToInstall(0)
664681
SetPluginsInstalledCount(0)
682+
defer StopSpinner()
665683

666684
return groupIDAndVersion, nil
667685
}
@@ -767,16 +785,12 @@ func installOrUpgradePlugin(p *discovery.Discovered, version string, installTest
767785
numPluginsInstalled := fmt.Sprintf("%d plugins installed out of %d", pluginsInstalledCount, totalPluginsToInstall)
768786
numPluginsInstalledWithLog := fmt.Sprintf("%s%s", log.GetLogTypeIndicator(log.LogTypeERROR), numPluginsInstalled)
769787
errMsg = fmt.Sprintf("%s\n%s", errMsg, numPluginsInstalledWithLog)
770-
var spinner component.OutputWriterSpinner
771788

772789
// Initialize the spinner if the spinner is allowed
773-
if component.IsTTYEnabled() {
774-
// Initialize the spinner
775-
spinner = component.NewOutputWriterSpinner(component.WithOutputStream(os.Stderr),
776-
component.WithSpinnerText(installingMsg),
777-
component.WithSpinnerStarted())
790+
if component.IsTTYEnabled() && spinner != nil {
791+
spinner.SetText(installingMsg)
778792
spinner.SetFinalText(errMsg, log.LogTypeERROR)
779-
defer spinner.StopSpinner()
793+
spinner.StartSpinner()
780794
} else {
781795
log.Info(installingMsg)
782796
}

0 commit comments

Comments
 (0)