package actions

import (
	"context"
	"strings"

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

var addCmd = &cobra.Command{
	Use:   "add",
	Short: "Adds a package to the DKMS source tree",
	Long: strings.TrimSpace(`
Adds a package to the DKMS source tree.

This checks the user source tree (by default, /usr/src/)
for the package source files. If the sources don't exist there,
this will check the local ${package-name}-${package-version} path
and try to copy sources from there to the user source tree, then
add the copied sources to the DKMS tree.

If a --gcs-bucket is provided, this will check the bucket for
sources if they are not present locally. If --upload is also
specified, this will upload the sources to the DKMS tree in the
bucket after they have been added to the local DKMS tree.

If the DKMS tree does not already exist, this will create it.
If the package has already been added, this does nothing.
`),
	Args: ParseArgs,
	RunE: func(cmd *cobra.Command, args []string) error {
		if RootGCSBucket == nil {
			return dkms.Add(RootPackage, RootOptions)
		} else {
			return dkms.CachedAdd(context.Background(), RootPackage, RootGCSBucket, RootOptions)
		}
	},
}

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