This is the multi-page printable view of this section. Click here to print.
Git
Git rules
- 1: Bzl
- 1.1: al_git_binary
- 1.2: al_git_changelog
- 1.3: al_git_current_state
- 1.4: al_git_extension
- 1.5: al_git_info_file
- 1.6: al_git_repo
- 1.7: al_git_resolved_toolchain
- 1.8: al_git_run_binary
- 1.9: al_git_toolchain
- 2: Proto
- 2.1: contracts
1 - Bzl
Bazel rules
1.1 - al_git_binary
al_git_binary
load("@com_alwaldend_src//tools/git/main/bzl:al_git_binary.bzl", "al_git_binary")
al_git_binary(name, arguments)
Run git binary
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| arguments | Git arguments (templated) | List of strings | optional | [] |
1.2 - al_git_changelog
al_git_changelog
load("@com_alwaldend_src//tools/git/main/bzl:al_git_changelog.bzl", "al_git_changelog")
al_git_changelog(name, visibility, git_binary, subpackages)
Create changelog target
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| name | target name prefix | none |
| visibility | visibility | none |
| git_binary | - |
"@git//:git" |
| subpackages | subpackages | [] |
1.3 - al_git_current_state
1.4 - al_git_extension
al_git_extension
al_git_extension = use_extension("@com_alwaldend_src//tools/git/main/bzl:al_git_extension.bzl", "al_git_extension")
al_git_extension.local_git(name)
Create git repos
TAG CLASSES
local_git
Attributes
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | Name | Name | required |
1.5 - al_git_info_file
al_git_info_file
load("@com_alwaldend_src//tools/git/main/bzl:al_git_info_file.bzl", "al_git_info_file")
al_git_info_file(name, git_state, git_tool, timeout)
Generate git info file
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| git_state | Files that should invalidate the cache on new commit | List of labels | optional | [] |
| git_tool | Git tool to use | Label | optional | "@com_alwaldend_src//tools/git/main/go" |
| timeout | Timeout in seconds | Integer | optional | 60 |
1.6 - al_git_repo
al_git_repo
load("@com_alwaldend_src//tools/git/main/bzl:al_git_repo.bzl", "al_git_repo")
al_git_repo(name, repo_mapping)
Git repo
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this repository. | Name | required | |
| repo_mapping | In WORKSPACE context only: a dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.For example, an entry "@foo": "@bar" declares that, for any time this repository depends on @foo (such as a dependency on @foo//some:target, it should actually resolve that dependency within globally-declared @bar (@bar//some:target).This attribute is not supported in MODULE.bazel context (when invoking a repository rule inside a module extension’s implementation function). |
Dictionary: String -> String | optional |
1.7 - al_git_resolved_toolchain
al_git_resolved_toolchain
load("@com_alwaldend_src//tools/git/main/bzl:al_git_resolved_toolchain.bzl", "al_git_resolved_toolchain")
al_git_resolved_toolchain(name)
Resolved git toolchain
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required |
1.8 - al_git_run_binary
al_git_run_binary
load("@com_alwaldend_src//tools/git/main/bzl:al_git_run_binary.bzl", "al_git_run_binary")
al_git_run_binary(name, srcs, outs, arguments, git)
Run a git binary as a build action
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| srcs | Files to be made available | List of labels | optional | [] |
| outs | Outputs | List of labels; nonconfigurable | required | |
| arguments | Arguments (Location is expanded) | List of strings | optional | [] |
| git | Git binary | Label | required |
1.9 - al_git_toolchain
al_git_toolchain
load("@com_alwaldend_src//tools/git/main/bzl:al_git_toolchain.bzl", "al_git_toolchain")
al_git_toolchain(name, git_dir, git_path, git_root, invalidation)
Local git toolchain
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| git_dir | Git directory path | String | required | |
| git_path | Git binary path | String | required | |
| git_root | Git workspace path | String | required | |
| invalidation | Files that should invalidate git actions | List of labels | optional | [] |
2 - Proto
Protobuf contracts
2.1 - contracts
Proto docs for contracts.proto
Java
load("@rules_java//java:defs.bzl", "java_library")
java_library(
name = "name",
deps = [
"@com_alwaldend_src//tools/git/main/proto/contracts:contracts_java_library",
],
)
Golang
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "name",
deps = [
"@com_alwaldend_src//tools/git/main/proto/contracts:contracts",
],
)
Proto
syntax = "proto3";
package git;
option go_package = "git.alwaldend.com/alwaldend/src/tools/git/main/proto/contracts";
message GitSignature {
string name = 1;
string email = 2;
int64 when = 3;
}
message GitCommit {
string hash = 1;
GitSignature author = 2;
GitSignature committer = 3;
string merge_tag = 4;
string pgp_signature = 5;
string message = 6;
repeated string tags = 7;
map<string, bool> changed_files = 8;
}
message GitTagAnnotated {
GitSignature tagger = 1;
string hash = 2;
string message = 3;
string pgp_signature = 4;
}
message GitTag {
string name = 1;
string target = 2;
GitTagAnnotated annotated = 3;
}
message GitRemote {
string name = 1;
repeated string urls = 2;
}
message GitInfo {
map<string, GitCommit> commits = 1;
repeated string commits_order = 2;
map<string, GitTag> tags = 3;
repeated GitRemote remotes = 4;
}