diff --git a/cli/main.go b/cli/main.go index a70ba77f..be717bfc 100644 --- a/cli/main.go +++ b/cli/main.go @@ -11,8 +11,9 @@ import ( ) const ( - useCaseFlagName = "use-case" - repoRootFlagName = "repo-root" + useCaseFlagName = "use-case" + repoRootFlagName = "repo-root" + printResultOnlyFlagName = "result-only" ) var ( @@ -28,17 +29,22 @@ func main() { func run() error { useCase := flag.String(useCaseFlagName, "", fmt.Sprintf("Use case to run. Available use cases are: %+v", validUseCases)) + printResultOnly := flag.Bool(printResultOnlyFlagName, false, "Whether or not to print only the result (allocated ip) or print full command logging") // repoRootParam := flag.String(repoRootFlagName, "", fmt.Sprintf("Path to the root of the infra repository.")) // VPN flags vpnClientName := flag.String(vpnClientNameFlagName, "", fmt.Sprintf("Friendly VPN user name.")) vpnClientPubKey := flag.String(vpnClientPubKeyFlagName, "", fmt.Sprintf("VPN client public key.")) - flag.Set("logtostderr", "true") - flag.Set("stderrthreshold", "WARNING") - flag.Set("v", "2") + // Flag definitions above! flag.Parse() + if !*printResultOnly { + flag.Set("logtostderr", "true") + flag.Set("stderrthreshold", "WARNING") + flag.Set("v", "2") + } + // if *repoRootParam == "" { // return fmt.Errorf("'-%s' flag must not be empty", repoRootFlagName) // } @@ -65,12 +71,12 @@ func run() error { switch *useCase { case vpnUseCaseFlagName: // get last used ip and increment - lastIP, err := getAndUpdateIP(gitFs, vpnLastIPConfFileRelative) + ip, err := getAndUpdateIP(gitFs, vpnLastIPConfFileRelative) if err != nil { return errors.Wrapf(err, "failed to get valid last ip from file %s", vpnLastIPConfFileRelative) } // insert new vpn client config - err = addVPNClient(gitFs, *vpnClientName, *vpnClientPubKey, vpnClientsConfFileRelative, lastIP) + err = addVPNClient(gitFs, *vpnClientName, *vpnClientPubKey, vpnClientsConfFileRelative, ip) if err != nil { return errors.Wrapf(err, "failed to add vpn client") } @@ -78,6 +84,9 @@ func run() error { if _, err = worktree.Commit("Added new VPN client config", &git.CommitOptions{All: true, Author: &object.Signature{Name: "Webhook Handler Bot"}}); err != nil { return errors.Wrapf(err, "failed to commit") } + if *printResultOnly { + println(ip) + } default: err = errors.New(fmt.Sprintf("unsupported use case: %s", *useCase)) }