package main

import (
	"flag"
	"fmt"
	"os"

	log "github.com/golang/glog"

	"cos.googlesource.com/cos/tools.git/src/pkg/modules"
)

var (
	rawSigPath = flag.String("rawsig", "", "Path of the raw signature to append to the kernel module. Required.")
	modulePath = flag.String("module", "", "Path of the kernel module needs to be signed. Required.")
	outPath    = flag.String("outpath", "", "Path of the signed module output destination. The default is to append signature in-place.")
)

func main() {
	flag.Parse()
	if err := checkFlags(); err != nil {
		log.Errorf("failed to parse flags: %v", err)
		os.Exit(1)
	}
	if err := modules.AppendSignature(*outPath, *modulePath, *rawSigPath); err != nil {
		log.Errorf("failed to append signature: %v", err)
		os.Exit(1)
	}
}

func checkFlags() error {
	if *rawSigPath == "" {
		return fmt.Errorf("flag -rawsig is required")
	}
	if *modulePath == "" {
		return fmt.Errorf("flag -module is required")
	}
	if *outPath == "" {
		outPath = modulePath
	}
	return nil
}
