# Compatibility for version_x_defs from k8s.io/component-base & co.
# This makes all the defs be autopopulated from //bzl:workspace-status.sh.

def version_x_defs():
    stamp_pkgs = [
        "k8s.io/component-base/version",
        "k8s.io/client-go/pkg/version",
    ]

    # This should match the list of vars in kube::version::ldflags
    # It should also match the list of vars set in hack/print-workspace-status.sh.
    stamp_vars = [
        "buildDate",
        "gitCommit",
        "gitMajor",
        "gitMinor",
        "gitTreeState",
        "gitVersion",
    ]

    # Generate the cross-product.
    x_defs = {}
    for pkg in stamp_pkgs:
        for var in stamp_vars:
            x_defs["%s.%s" % (pkg, var)] = "{STABLE_KUBERNETES_%s}" % var
    return x_defs
