import argparse
import base64
import os
import subprocess
import sys


os.environ["BUILDKITE_ORGANIZATION_SLUG"] = "bazel"
import bazelci


def encrypt(value, kms_key):
    return subprocess.check_output(
        [
            "gcloud",
            "kms",
            "encrypt",
            "--project",
            "bazel-untrusted",
            "--location",
            "global",
            "--keyring",
            "buildkite",
            "--key",
            kms_key,
            "--ciphertext-file",
            "-",
            "--plaintext-file",
            "-",
        ],
        input=value.encode("utf-8"),
        env=os.environ,
    )


def main(argv=None):
    if argv is None:
        argv = sys.argv[1:]

    parser = argparse.ArgumentParser(description="Bazel Continuous Integration Encryption Tool")
    parser.add_argument("--key_name", type=str)
    parser.add_argument("--value", type=str)

    args = parser.parse_args(argv)

    if not args.key_name or not args.value:
        print("Both --key_name and --value must be specified", file=sys.stderr)
        exit(1)

    print("Original: %s" % args.value)

    enc = encrypt(args.value, args.key_name)
    enc = base64.b64encode(enc).decode("utf-8").strip()
    print("Encoded:  %s" % enc)

    dec = bazelci.decrypt_token(enc, args.key_name)
    print("Decoded:  %s" % dec)


if __name__ == "__main__":
    sys.exit(main())
