package actions

import (
	"context"
	"strings"

	"cos.googlesource.com/cos/tools.git/src/pkg/dkms"
	"github.com/spf13/cobra"
)

var installCmd = &cobra.Command{
	Use:   "install",
	Short: "Installs a module into the install tree",
	Long: strings.TrimSpace(`
Installs all of the modules from a DKMS package into the install tree.

If the package is not already added to the DKMS source tree, this will try to
add it. If the package is not already built, this will try to build it.
See the add and build commands for more details.

For each module in the package, this will check if the version being
installed is newer than the version of the module which is already
installed, if applicable. If the module version is older than the one
already installed, this will skip installing that module and emit an info
message. --force-version-override can be passed to bypass the version
check and install the module anyway.

If --modprobe-on-install is passed, then modprobe will be called on
the module after it is copied to the install tree to insert it into the
running kernel. depmod is run first in order to recalculate any module
dependencies, unless --no-depmod is also passed.
	`),
	Args: ParseArgs,
	RunE: func(cmd *cobra.Command, args []string) error {
		if RootGCSBucket == nil {
			return dkms.Install(RootPackage, RootOptions)
		} else {
			return dkms.CachedInstall(context.Background(), RootPackage, RootGCSBucket, RootOptions)
		}
	},
}

func init() {
	rootCmd.AddCommand(installCmd)
}
