rlsbl v0.113.0 /rlsbl.targets.go
On this page

Go release target using a VERSION file as source of truth with GoReleaser integration for binaries, module proxy notification, and retract support.

#rlsbl.targets.go

#rlsbl.targets.go

Go release target using a VERSION file as source of truth, with GoReleaser integration for binaries and module proxy notification for libs.

#_go_archive_fn

python
def _go_archive_fn(spec, name)

Return (asset_pattern, extract_cmd, binary_name) for a Go/goreleaser build.

#GoTarget

Release target for Go projects (go.mod + VERSION file).

#name

python
def name(self)

#detect

python
def detect(self, dir_path)

Return True if dir_path contains a go.mod file.

#read_name

python
def read_name(self, dir_path, ctx)

Read the last segment of the module path from go.mod.

#read_metadata

python
def read_metadata(self, dir_path)

Go modules have no license/description in go.mod.

#publication_probe

python
def publication_probe(self, dir_path, version, ctx=None)

Probe for a specific version by checking tag existence via git.

Uses git ls-remote --tags origin <tag> instead of the Go module proxy: tag existence is the authoritative signal for Go module publication (the proxy indexes from tags). This avoids proxy cache lag and works for private modules.

#_is_library

python
def _is_library(self, dir_path, config=None)

Return True when the project publishes a Go module, not a binary.

The go pipeline's artifact key is the operator's committed choice and is AUTHORITATIVE -- validate_pipelines_config makes it mandatory precisely because the two kinds produce different publish workflows and a wrong guess yields a broken one. Filesystem introspection only answers when nothing is declared (a project's very first scaffold, before _ensure_pipeline_config writes the key).

Scanning for package main anywhere in the tree misclassifies a declared library that ships a dev helper under scripts/: scaffold wrote a .goreleaser.yml aimed at the helper plus a version.go inside it, while the publish workflow -- which does read the declaration -- correctly ran no goreleaser job.

#_has_version_var

python
def _has_version_var(self, dir_path, main_dir='.')

Return True if a .go file in main_dir declares a Version variable.

#read_version

python
def read_version(self, dir_path)

Read version from the VERSION file.

#write_version

python
def write_version(self, dir_path, version, ctx)

Write the new version to the VERSION file.

Returns a list of relative file paths that were modified.

#version_file

python
def version_file(self, dir_path=None)

Return the version file name for Go projects.

#tag_format

python
def tag_format(self, version)

Return the git tag string for a Go release version.

#companion_tags

python
def companion_tags(self, name, version, path=None)

Return Go module proxy companion tags for monorepo packages.

When path is set (monorepo member), the Go module proxy needs a tag of the form {path}/v{version} to resolve the module. This tag is identical to the Go target's primary monorepo_tag_format output, so it is only useful as a companion when a different target (e.g. npm) is the primary release target and produces a non-Go-compatible primary tag.

#monorepo_tag_format

python
def monorepo_tag_format(self, name, version, path=None)

Return a Go module proxy compatible tag using the package path prefix.

#monorepo_tag_glob

python
def monorepo_tag_glob(self, name, path=None)

Return a glob pattern matching Go module proxy tags for a monorepo package.

#template_dir

python
def template_dir(self)

Return the path to the Go-specific template directory.

#template_vars

python
def template_vars(self, dir_path, ctx)

Extract template variables from go.mod and .rlsbl/config.json.

#template_mappings

python
def template_mappings(self, ctx)

Return Go template mappings including VERSION, CI, goreleaser, and version.go.

#shared_template_mappings

python
def shared_template_mappings(self, ctx)

Return shared mappings plus npm wrapper mappings if enabled.

#check_project_exists

python
def check_project_exists(self, dir_path)

Return True if go.mod exists in dir_path.

#get_project_init_hint

python
def get_project_init_hint(self)

Return a hint for initializing a Go module.

#dev_install_command

python
def dev_install_command(self, project_dir)

Return install specs for go install using declared install_paths.

Search