func installCommandAction()

in cmd/install.go [43:118]


func installCommandAction(cmd *cobra.Command, _ []string) error {
	zipPathFile, err := cmd.Flags().GetString(cobraext.ZipPackageFilePathFlagName)
	if err != nil {
		return cobraext.FlagParsingError(err, cobraext.ZipPackageFilePathFlagName)
	}
	packageRootPath, err := cmd.Flags().GetString(cobraext.PackageRootFlagName)
	if err != nil {
		return cobraext.FlagParsingError(err, cobraext.PackageRootFlagName)
	}
	skipValidation, err := cmd.Flags().GetBool(cobraext.BuildSkipValidationFlagName)
	if err != nil {
		return cobraext.FlagParsingError(err, cobraext.BuildSkipValidationFlagName)
	}

	profile, err := cobraext.GetProfileFlag(cmd)
	if err != nil {
		return err
	}

	var opts []kibana.ClientOption
	tlsSkipVerify, _ := cmd.Flags().GetBool(cobraext.TLSSkipVerifyFlagName)
	if tlsSkipVerify {
		opts = append(opts, kibana.TLSSkipVerify())
	}

	kibanaClient, err := stack.NewKibanaClientFromProfile(profile, opts...)
	if err != nil {
		return fmt.Errorf("could not create kibana client: %w", err)
	}

	if zipPathFile == "" && packageRootPath == "" {
		var found bool
		var err error
		packageRootPath, found, err = packages.FindPackageRoot()
		if !found {
			return errors.New("package root not found")
		}
		if err != nil {
			return fmt.Errorf("locating package root failed: %w", err)
		}
	}

	installer, err := installer.NewForPackage(cmd.Context(), installer.Options{
		Kibana:         kibanaClient,
		RootPath:       packageRootPath,
		SkipValidation: skipValidation,
		ZipPath:        zipPathFile,
	})
	if err != nil {
		return fmt.Errorf("package installation failed: %w", err)
	}

	// Check conditions
	keyValuePairs, err := cmd.Flags().GetStringSlice(cobraext.CheckConditionFlagName)
	if err != nil {
		return fmt.Errorf("can't process check-condition flag: %w", err)
	}
	if len(keyValuePairs) > 0 {
		manifest, err := installer.Manifest(cmd.Context())
		if err != nil {
			return err
		}

		cmd.Println("Check conditions for package")
		err = packages.CheckConditions(*manifest, keyValuePairs)
		if err != nil {
			return fmt.Errorf("checking conditions failed: %w", err)
		}
		cmd.Println("Requirements satisfied - the package can be installed.")
		cmd.Println("Done")
		return nil
	}

	_, err = installer.Install(cmd.Context())
	return err
}