From 4e7c7f56a88e89e14d900da99f09bdad0e3b4e44 Mon Sep 17 00:00:00 2001 From: rick <1450685+LinuxSuRen@users.noreply.github.com> Date: Mon, 18 Oct 2021 14:57:10 +0800 Subject: [PATCH] Fix panic due to the package is missing --- cmd/install.go | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/cmd/install.go b/cmd/install.go index 49c14b9..ca9ab70 100644 --- a/cmd/install.go +++ b/cmd/install.go @@ -125,25 +125,31 @@ func (o *installOption) runE(cmd *cobra.Command, args []string) (err error) { } process := &installer.Installer{ - Source: o.downloadOption.Output, - Name: o.name, - Package: o.Package, - Tar: o.Tar, - Output: o.Output, - CleanPackage: o.CleanPackage, - AdditionBinaries: o.Package.AdditionBinaries, - } - // install requirements tools in the post phase - if len(o.Package.Requirements) > 0 { - if len(o.Package.PostInstalls) == 0 { - o.Package.PostInstalls = make([]installer.CmdWithArgs, 0) - } - for i := range o.Package.Requirements { - tool := o.Package.Requirements[i] - o.Package.PostInstalls = append(o.Package.PostInstalls, installer.CmdWithArgs{ - Cmd: "hd", - Args: []string{"install", tool}, - }) + Source: o.downloadOption.Output, + Name: o.name, + Package: o.Package, + Tar: o.Tar, + Output: o.Output, + CleanPackage: o.CleanPackage, + } + + // TODO consider how to handle if the package is missing + // maybe it's possible to provide a default strategy for it. + if o.Package != nil { + process.AdditionBinaries = o.Package.AdditionBinaries + + // install requirements tools in the post phase + if len(o.Package.Requirements) > 0 { + if len(o.Package.PostInstalls) == 0 { + o.Package.PostInstalls = make([]installer.CmdWithArgs, 0) + } + for i := range o.Package.Requirements { + tool := o.Package.Requirements[i] + o.Package.PostInstalls = append(o.Package.PostInstalls, installer.CmdWithArgs{ + Cmd: "hd", + Args: []string{"install", tool}, + }) + } } } err = process.Install()