syntax = "proto3";
package version.spec;
option go_package = "source.monogon.dev/version/spec";

// Version of an artifact released from the Monogon monorepo.
//
// A few assumptions are made here:
//  1. The version can be serialized to a SemVer 2.0.0 version string, which can
//     then be deserialized back to this proto.
//  2. Not every SemVer 2.0.0 version string can be deserialized back into a
//     Version, notably only a subset of prerelease labels are supported, and no
//     build metadata is supported.
//  3. A Version is valid for a given 'product' built by the monorepo build
//     system - there's no single Version for the entire repository.
message Version {
    // Last release for this artifact. If unset, 0.0.0 is assumed. SemVer
    // major/minor/patch semantics are observed.
    message Release {
        int64 major = 1;
        int64 minor = 2;
        int64 patch = 3;
    }
    Release release = 1;

    // Information gathered from Git at time of build.
    message GitInformation {
        // Hex-encoded commit short hash of the monorepo checked out during
        // build.
        //
        // This will be used to populate the -gXXXXXX prerelease field in the
        // serialized SemVer format.
        string commit_hash = 1;
        // Number of commits since the given Release.
        //
        // If non-zero, this will be used to populate the -devY prerelease field
        // in the serialized SemVer format.
        uint64 commits_since_release = 2;

        // State of the Git checkout during the build.
        //
        // If dirty, this will set the -dirty prerelease field in the serialized
        // SemVer format.
        enum BuildTreeState {
            BUILD_TREE_STATE_INVALID = 0;
            BUILD_TREE_STATE_CLEAN = 1;
            BUILD_TREE_STATE_DIRTY = 2;
        };
        BuildTreeState build_tree_state = 3;
    }
    GitInformation git_information = 2;
}
