chore: librarian release pull request: 20250923T211617Z #2326
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Librarian Version: v0.0.0-20250923210339-2acb5c1bf5ab
Language Image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-release-container@sha256:50dd9b59bcf4f55178f9a35dcd4f81a8db20609da386357fa05a457a8da3b4e9
librarian: 0.2.0
0.2.0 (2025-09-23)
Features
messages are unique per method, and are all children of a different kind
of synthetic message that is unique by service. That parent message
creates the right naming structure.
Updated the templates to demonstrate how this would be used. (7239558)
reorder generate PR body (feat: reorder generate PR body #2312) Fixes librarian(FR): Move BEGIN_COMMIT_OVERRIDE to the top of the PR description for generate #2071 (21922f3)
rename source_commit_hash to commit_hash (feat(librarian): rename source_commit_hash to commit_hash #2224) For now we will support the old field as well until currently onboarded
languages have a chance to source the new field instead. (710e85a)
add a comment to generation PR if generation has a failure (feat: add a comment to generation PR if generation has a failure #2291) Fixes librarian: handle partial generation failures #2287 (dd44dbf)
add flag to configure verbose logging (feat(internal/librarian): add flag to configure verbose logging #2285) Adds -v flag to the CLI that sets the logging level to debug for each
command
Fixes #2148 (3fe4e57)
restore files after build failure (feat: restore files after build failure #2273) Fixes librarian: if one library fails in generation, should revert changes #1682 (6eb18c4)
Set url.template in RequestOptions (feat(rust): Set url.template in RequestOptions #2248) Modifies the transport.rs.mustache template to call
google_cloud_gax::options::internal::set_path_template() for each
binding.
This provides the url.template attribute for OpenTelemetry spans. See
#2212 and googleapis/google-cloud-rust#3346 and googleapis/google-cloud-rust#3368
Tested with #2247 (13bef19)
Part of #1013 (4d3c118)
clean untracked files (feat: clean untracked files #2237) Updates librarian: if one library fails in generation, should revert changes #1682 (fa1c18f)
release_blocked field in per-library configuration (feat: release_blocked field in per-library configuration #2243) Fixes librarian: design a means of blocking library generation/release #897.
This change implements the "release init" command part
(
release_blocked).When library config has release_blocked field set to true, the "release
init" command skips the library processing. If the library ID is
explicitly specified, then
release_blockedis ignored. (f12f284)RFC 6570 templates. This is not the same format as the HTTP annotations
for Protobuf. Compute only uses a subset of the URI template spec,
which allows us to parse the strings and use (without change) the
api.PathTemplatestructure.If compute starts using more complex path templates we can grow the
data structures at that time. (4a33949)
When library config has generate_blocked field set to true, the generate
command skips the library processing.
If the library is explicitly specified in the argument via "--library",
then this Librarian CLI processes the library. (c3c71af)
test uses a mock GitHub server to verify that the command makes the
correct API calls for creating tags and releases.
Part of #1013. (5d05481)
add DeleteBranch() and ClosePullRequest() (feat: add DeleteBranch() and ClosePullRequest() #2232) (234f2a2)
add Restore function (feat: add Restore function #2028) Updates librarian: if one library fails in generation, should revert changes #1682 (e5a86a1)
Ability to include the repository URL of a package in pubspec.yaml (feat: Ability to include the repository URL of a package in pubspec.yaml #2229) (2f526a3)
Force release for a specific library even if there are no releasable changes (feat: Force release for a specific library even if there are no releasable changes #2181) (382e634)
split
model.rsinto modules (feat(sidekick): splitmodel.rsinto modules #2213) In Rust, the documentation browser shows the code, and this code wasgetting too large to render effectively. For some crates, the module is
also too large for some IDE defaults. (de628ec)
add paginator for services proto wrap maxResults (feat(sidekick): add paginator for services proto wrap maxResults #2208) (f7a7c8e)
subcommand to publish Rust crates (feat(sidekick): subcommand to publish Rust crates #2182) (07f666d)
Use dependency constraints specified in configuration (feat: Use dependency constraints specified in configuration #1987) The existing configuration found in .sidekick.toml has configuration
like this:
This PR honors those constraints when generating
pubspec.yaml(1a3e3bb)final(feat: Make the Dart class representing the servicefinal#2178) Dart classes are, by default, also interfaces. This means that adding anew method to a class will break any code that implements it.
The most conservative approach is to make the class
final- we canrelax that restriction and make it
baselater, if it makes sense. (2f447cc)By default Stage release job will only be run on odd weeks, and forceRun
flag is False.
If forceRun is True, Stage release job can be run on even weeks.
Check cloudBuild trigger with triggersRun variable
#2060 (1d68698)
release init can read per-library version override from config.yaml (feat: release init can read per-library version override from config.yaml #2083) Fixes librarian: use
next_versionoverride inrelease initcommand #2041 (4d2e4de)add ability to compare semver versions (feat: add ability to compare semver versions #2047) Towards librarian: use
next_versionoverride inrelease initcommand #2041It's possible the configured value in config.yaml is too old. We will
need to be able to compare 2 semver strings. (7702829)
add per-library override configurations to .librarian/config.yaml (feat: add per-library override configurations to .librarian/config.yaml #2039) (4f8141c)
Add release-please tag to release PRs so louhi flow will get triggered (feat: Add release-please tag to release PRs so louhi flow will get triggered #2050) fixes need to trigger louhi flow for google-cloud-python/google-cloud-go #2038
Tested with
ldetmer@39ab425
contains tag release-please-1 (f114aa2)
mount
repovolume in configure command (feat(internal/docker): mountrepovolume in configure command #2013) Fixes Add a/repovolume when running configure command #1766 (d8dc3d1)return without an error if all generations failed (feat: log success in multiple library generation #1979) Fixes librarian(cleanup): consider opening PR if >0 libraries generated #1885 (0df6d65)
add a "LICENSE" file to Dart packages. (feat: add a "LICENSE" file to Dart packages. #1977) pub.dev requires that packages have a LICENSE file in their root.
The file was named "LICENSE.txt.mustache" because
WalkTemplatesDirelides files without an extension (after ".mustache" is removed).
generatedFilesrenames this file to "LICENSE".There were a few other approaches that we could use:
WalkTemplatesDircould use a different naming convention for elidedfiles (e.g. "internal_<name>.mustache")
generatedFilescould walk the template directory itself. (70bb3c6)add release notes in release pull request (feat: add release notes in release pull request #1905) Fixes librarian: format release pull request body #1899 (eebb5fe)
add pr body to generate pull request (feat: add pr body to generate pull request #1909) Fixes format generation PR and commit message #1703 (9d782cf)
log generation statistics on completion (feat(internal/librarian): log generation statistics on completion #1892) Fixes librarian: log generation stats on completion #1891. (716e677)
add -branch flag for cloning and PRs (feat(internal/librarian): add -branch flag for cloning and PRs #1893) The same flag is used for two purposes (because you'd almost always want
them to be the same):
want to merge into)
The flag is used for "generate" and "release init".
Fixes #812. (3521090)
change README for GA clients (feat(sidekick/rust): change README for GA clients #1889) (9e1450d)
allow APIs to have no service config (feat(librarian): allow APIs to have no service config #1854) This allows libraries from "just protos" to be represented.
Fixes #1712. (f88a51a)
get commit history since last library generation (feat: get commit history since last library generation #1837) Fixes librarian: develop logic to associate a generated change to a library #1706 (8f409cc)
format release notes content for each library (feat(librarian): format release notes content for each library #1827) Format release notes (body of the release pull request) for each
releasable unit (libraries) flagged with ReleaseTriggered. The release
pull request description format expected is specified in
go/librarian:commits, see
tag per library.
Simplifications made for this first attempt:
changes” section. (we do this today with release please). “feat!” and
“feat”, “fix!” and “fix” are equivalent for release notes.
Fixes #1697 (1f3b20a)
rev the required Dart SDK version (feat(dart): rev the required Dart SDK version #1848) (1df05c3)
allow libraries to have no APIs (feat(librarian): allow libraries to have no APIs #1853) This is required for handwritten libraries to be representable in
Librarian state.
For the moment, such libraries are skipped in generate calls.
Fixes #1852. (c1f770e)
implement
commitflag for release init (feat: implementcommitflag for release init #1816) Fixes librarian: [release] Implementrelease initcommand #1008 (c590f20)tag-and-release logic (feat(internal/librarian): tag-and-release logic #1812) (949f02f)
create a pull request in release init command (feat: create a pull request in release init command #1793) Updates librarian: [release] Implement
release initcommand #1008 (152b561)copy libraries and global files from container output to repo in release init command (feat: copy libraries and global files from container output to repo in release init command #1790) Updates librarian: [release] Implement
release initcommand #1008 (f0edfd6)publish-release automation only triggers CloudBuild if a repository contains a merged pull request with label release:pending (feat: publish-release automation only triggers CloudBuild if a repository contains a merged pull request with label release:pending #1789) (bded5dc)
support derive next semver from conventional commits (feat(internal/semver): support derive next semver from conventional commits #1769) Add a semver package for logic to parse and increase semantic version
according to https://semver.org/, then use it to derive next version
from slices of conventional commits. (73c1bc7)
get library changes in
release initcommand (feat: get library changes inrelease initcommand #1780) Updates librarian: [release] Implementrelease initcommand #1008 (8756e01)add ability to create branch and push to remote repository (feat: add ability to create branch and push to remote repository #1775) Fixes librarian:
-pushdoesn't push to GitHub #1762 (e3c9e31)add a skeleton for release init (feat(internal/librarian): add a skeleton for release init #1761) Fixes librarian: Update release-request.json to list all libraries for global file edits #1655
Updates #1008 (6dbc3c0)
add logic to get pull requests (feat(internal/librarian): add logic to get pull requests #1754) (6444b5f)
add logic to parse pr bodies (feat(internal/librarian): add logic to parse pr bodies #1767) (00b91cd)
parse conventional commits for library since last released version -part2 (feat(librarian): parse conventional commits for library since last released version -part2 #1765) Adds method to parse commits since last released for a library to slices
of ConventionalCommit.
Also adds a check for tag-format that {version} is required.
Additional context:
go/librarian:release-please-lite
2nd part of change.
Fixes #1694 (b2e2c93)
conventional commits for library since last released version.
Main changes:
ported from v0.1.0
gitrepo.go
internal/gitrepo/conventional_commits.gobased on regex, inspired bythis
code
Additional context:
go/librarian:release-please-lite
For #1694 (65a9774)
Fixes #1612
Fixes #1571 (2d88ae9)
extends
configure-request.json(feat(internal/docker): extendsconfigure-request.json#1715) Fixes librarian: Update configure-request.json to list all libraries for global file edits #1653 (0190366)partially copy a repo (feat(librarian/docker): partially copy a repo #1686) Fixes librarian: [release] only copy libraries and global files into /repo docker volume #1685 (946e550)
add skeleton for release tag-and-release (feat(internal/librarian): add skeleton for release tag-and-release #1701) Also added the one new flag we will need for this command. (004401f)
add support requred for release (feat(internal/github): add support requred for release #1693) We are going to need more github functionality in order to tag and
release from librarian. This adds all of the functions that should be
required. (c8a858e)
implement
release-initcontainer contract (feat: implementrelease-initcontainer contract #1677) Fixes librarian: [release] Implement Container contract for release-init #1011 (7b883ee)add a global config (feat: add a global config #1663) Fixes Implement global_files_allowlist in .librarian/config.yaml #1656 (4b35724)
add RepositoriesConfig yaml struct (feat: add RepositoriesConfig yaml struct #1661) Adds config file definitions for repositories.yaml which the list of
repositories configured for librarian automation.
Towards #1571 (709adc0)
add labels to a github issue (feat: add labels to a github issue #1642) Fixes librarian: [release] Implement GitHub Integration for
init#1012 (a5b5b68)clone googleapis if apisource is unspecified (feat: clone googleapis if apisource is unspecified #1589) Set api-source value to https://github.com/googleapis/googleapis when
the flag is unspecified.
Also clone googleapis repo. (955052c)
record library generation failure message in PR message (feat(internal/librarian): record library generation failure message in PR message #999) Record library generation failure message in PR message (97720cd)
local binding errors for bad requests (automation: add branch property to repository configuration #2763) (03f8b6b)
hide empty _unknown_fields (doc: update architecture.md to reflect current architecture #2744) * feat(types): hide empty _unknown_fields
fix style (38fab3a)
add push-config flag and corresponding functionality (feat(internal/librarian): add push-config flag and corresponding functionality #868) (aaee79b)
add
push-configflag and its functionality. When push-config and github token both set and exist, we do the following: 1. add all changes to staging. 2. commit them. 3. create pull request and push to the repo. (aaee79b)rework configure container contract (feat(internal/librarian): rework configure container contract #898) Refactor configure command container contract:
Create a
generate-request.jsonfrom stateMount
.librarianto /librarianMount
.librarian/generator-inputto /inputMount
apiRootto /sourceFixes #769, fixes #815
--------- (ae87263)
code
state.yaml.
This is the consistent with old owl-bot logic
(ref).
here).
But os.CopyFS() in Go 1.24 does not support symlink and throws error.
(Will support in next 1.25 release) Added a comment for it. (Python
confirmed it is non-blocking for onboarding)
Will try to fix test coverage while in review
Fixes #775
--------- (3ee39a6)
parse service config from api source (feat: parse service config from api source #873) (90d0c5e)
rework build container contract (feat(internal/librarian): rework build container contract #863) Rework build command container contract
build-request.json.librarianto/librarian/repo(ade9ce0)rework generate container contract (feat(internal/librarian): rework generate container contract #807) Fixes librarian: rework generate container contract #770 (a69aac4)
add
host-mountflag (feat(interanl/config): addhost-mountflag #788) Fixes librarian: add host-mount flag to generate command #768 (2382b7c)add unit tests for file package (feat(testing): add unit tests for file package #757) This change introduces unit tests for the
file.gofile in theinternal/librarianpackage.The tests cover the following functions:
readAllBytesFromFileappendToFilecreateAndWriteToFilecreateAndWriteBytesToFileThe tests use a table-driven approach to test multiple scenarios,
including success, error, and edge cases. (e370eac)
into the sidekick refresh flow.
Logic related to the gcloud.yaml file is moved into a new
internal/config/gcloud/ package, since it must be part of the
config.Config struct to be passed into Generate, and to avoid a
dependency cycle, since config.Config is imported by internal/gcloud. (2ec911e)
See generator/internal/gcloud/testdata/parallelstore/README.md for details on where the testdata is copied from. (d2b2617)
is a first step to evaluate if we can use sidekick for automating
gcloud command generation. (37ed41e)
Bug Fixes
temporarily use short SHA for release links (fix(librarian): temporarily use short SHA for release links #2325) We noticed that we were not able to open the release init PR today
because the character limit exceeds what github allows. For now, by
shortening the SHA links we can get under this limit. We should have a
more robust solution in the future. (2acb5c1)
missing
Debugfor discovery requests (fix(sidekick): missingDebugfor discovery requests #2319) We want to generate theDebugimplementation for children of thediscovery request. (68f137d)
add commit body to release note (fix: add commit body to release note #2316) Release note example:
chore: librarian release pull request: 20250923T174625Z google-cloud-python#14531
Fixes #2234 (9d21e30)
bad link for parent messages (fix(sidekick/rust): bad link for parent messages #2309) For most messages
Name == Codec.Name, but there are a handful ofmessages that are all uppercase in Protobuf (e.g.
CVSSin grafeas),and the naming conventions for Rust convert these to
CamelCase(
Cvssin that example). (dca5878)Filter for commits associated to a library (fix(librarian): Filter for commits associated to a library #2295) (3336fa5)
skip write LastGeneratedCommit field to json (fix(internal): skip write LastGeneratedCommit field to json #2293)
last_generated_commitfield should be omitted from all generated JSONrequest files: release-init-request.json, configure-request.json,
generate-request.json, and build-request.json. Ref
language-onboarding.md
Fixes #2081 (a945eb7)
sort discovery doc elements (fix(sidekick): sort discovery doc elements #2279) This is to preserve their order in the generated code. We want to avoid
spurious changes due to hash table salt. (cefad37)
URI templates need matchers too (fix(sidekick): URI templates need matchers too #2261) (2835eda)
handle multi-line commit message (fix: handle multi-line commit message #2244) Fixes librarian: cater for wrapped nested commits #2234 (cb44b42)
read api dir from temp folder (fix: read api dir from temp folder #2239) (ca32437)
align tag-and-release e2e test with API workflow (fix(testing): align tag-and-release e2e test with API workflow #2240) Updates the end-to-end test for the 'release tag-and-release' command to
align with the refactoring introduced in commit 2807adf.
The refactoring removed the command's dependency on a local repository
clone, causing the existing e2e test to fail as it was still based on a
local git setup. The command now fetches the state.yaml file directly
from the GitHub API.
This change updates the test by:
API process used by the go-github client to download a file (directory
listing followed by content download).
'github-api-endpoint' flag, ensuring the client is properly directed to
the mock server during tests.
Part of #1013. (b38097e)
state.yamlincludes duplicate entries #2186(Additionally, fixes a panic if a test that wants an error doesn't
produce one.) (6188338)
set branch in generate runner (fix: set branch in generate runner #2189) Fixes generate commands failing with missing_field Message #2188 (3cdc998)
Skip release if there are no releasable units (fix: Skip release if there are no releasable units #2010) (0ee547d)
skip bumps for new crates (fix(sidekick): skip bumps for new crates #2169) Renamed
manifestVersionUpdatedto better capture what it does, fix thecode to skip new files, and fixed all the tests. (f93994a)
add cl num in release note (fix: add cl num in release note #2156) Fixes librarian: include CL number in release note, if exists #2112 (973d2df)
parse commit message that contains multiple headers (fix: parse commit message that contains multiple headers #2147) Fixes librarian: Correctly parse nested commits within
BEGIN_COMMIT_OVERRIDEblocks #2120 (2e21c79)format state yaml with indent of 2 for passing lint (fix: format state yaml with indent of 2 for passing lint #2149) Fixes librarian: release PR updates yaml with non-conforming yaml format #2116 (3532f19)
breaking change and feature pre-1.0 yields minor version bump (fix: breaking change and feature pre-1.0 yields minor version bump #2117) Fixes librarian release bumps minor version #2109 (a57e5fd)
Use language repo's commit value as the source_commit_hash (fix: Use language repo's commit value as the source_commit_hash #2078) (cb3c723)
add newline after Flags in help text (fix(internal/cli): add newline after Flags in help text #2125) Currently there is a newline after
Commands:andUsage:in the helptext. Add a newline after
Flags:for consistency. (28e1282)add newline after Usage in help text (fix(internal/cli): add newline after Usage in help text #2110) Currently there is a newline after
Commands:but notUsage:in the help text. Add a newline afterUsage:for consistency. (305d7a5)add link to definition of comitt-ish (docs(internal/github): add link to definition of commit-ish #2085) (27f5eaa)
add a title prefix (fix(internal/librarian): add a title prefix #2082) Prefix a PR title with
chore.The 'release init' process now correctly identifies commits from pull
requests (PRs)
that adhere to the conventional commit message format.
This is because the process only uses the commit message, not the PR
title, to determine conventionality.
Fixes #2079 (c609ee9)
read release init response (fix: read release init response #2075) Fixes librarian:
release initshould read the response from language container #2057 (56d59af)specify the repository when searching for pull requests (fix: specify the repository when searching for pull requests #1986) (919487b)
regen PR title to feat (fix(librarian): regen PR title to feat #2049) (9bef458)
revert fix(release): use --output path directly for container mount #2015 (fix: revert https://github.com/googleapis/librarian/pull/2015 #2046) Addressing
librarian:
librarian release initcreates an unnecessary nested "output" directory within the path specified by--output#2014 (comment) (4ffad18)honor container contract changes format (fix(librarian): honor container contract changes format #2037) This was a regression from a00e91b.
Added a test so this will not happen again and fixed up a couple other
testing quirks. (f393e24)
save librarian state in release init (fix(internal/librarian): save librarian state in release init #2034) Write librarian state after updating libraries in release init.
Modify the test to check
state.yamlin repo to verify the librariesare updated.
Fixes #2030 (0dd0273)
subdirectory within the path provided by the --output flag (aliased to
WorkRoot). This caused the container's /output volume to be mounted to
<workroot>/output instead of <workroot>.
This commit changes the behavior to use the r.workRoot value directly as
the source for the /output volume mount, aligning with user expectations
for the --output flag.
Fixes #2014 (45aa04a)
GAis spelledstable(fix(sidekick/rust):GAis spelledstable#2011) At least that is how you spell it in the.repo-metadata.jsonfiles. (33501c0)generate PR body (fix(librarian): generate PR body #2009) Fixes an issue where the generate PR body parsing code was referencing
the wrong repo. (88abd0d)
clean should preserve and remove files from sourceRoots (fix: clean should preserve and remove files from sourceRoots #1950) (80ec945)
commit the right repo in generate (fix(internal/librarian): commit the right repo in generate #1969) Fixes librarian: generate reports no changes even when there are some #1963 (e98e2be)
format release note correctly for multiple same category commits (fix: format release note correctly for multiple same category commits #1965) Created release pull request in
Librarian release pull request: 20250908T145328Z #1966
Fixes #1957 (e536c9a)
Release pull request created in
#1955
The release note is not well formatted, will address in
#1964.
Fixes #1932 (a00e91b)
report the correct missing environment variable (fix(internal/librarian): report the correct missing environment variable #1962) Fixes librarian: command line help specifies wrong environment variable #1961 (50acf6e)
change merge PR check condition to use merge_at field (fix: change merge PR check condition to use merge_at field #1959) If the PR is merged, then the
merged_atfield has value. Otherwise itis a closed PR, and the
merged_atfield is null.Test Example:
In my forked repo, only
catchyzheng/google-cloud-python#4 is closed PR,
and its
merged_atfield is null. Other PRs were merged and hasmerged_atvalues.The
merged_atfield can be checked here:https://api.github.com/repos/catchyzheng/google-cloud-python/pulls?per_page=100&state=closed (31e3ef3)
Tests and commands run in Windows (fix(sidekick): Tests and commands run in Windows #1954) (f890a37)
do not delete any files in .librarian/generator-input directory (fix: do not delete any files in .librarian/generator-input directory #1934) In case the remove-regex contains a directory that exists in
.librarian/generator-input, the librarian CLI should not delete it when
calling clean. (0d3b7eb)
Add label for PRs on release init (fix: Add label for PRs on release init #1911) (c6e8e2e)
fix pull request url format mismatch (fix: fix pull request url format mismatch #1927) librarian(bug): pullrequest url format mismatch #1924 (ccfcfd9)
support SSH remotes (fix(librarian): support SSH remotes #1898) (3aebde8)
Correct help text for push flag (fix(generate): Correct help text for push flag #1908) Updates help text to refer to the correct '-push' flag instead of the
non-existent '-push-config'.
Fixes #1726
With this fix,
go run ./cmd/librarian generate -hshows:jinseop@jinseop:/workspace/librarian$ go run ./cmd/librarian release
Manages releases of libraries.
Usage:
librarian release <command> [arguments]
Commands:
init initiates a release by creating a release pull request.
tag-and-release tags and creates a GitHub release for a merged pull request.
2025/09/02 16:55:30 command "release" requires a subcommand
exit status 1
> go run ./cmd/librarian release -h
Manages releases of libraries.
Usage:
librarian release <command> [arguments]
Commands:
init initiates a release by creating a release pull request.
tag-and-release tags and creates a GitHub release for a merged pull request.
2025/09/02 17:36:44 flag: help requested
exit status 1
--- FAIL: TestGolangCILint (1.53s)
all_test.go:156: /Users/julieqiu/bin/homebrew/Cellar/go/1.24.4/libexec/bin/go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest run: exit status 1
internal/sidekick/internal/api/model.go:27:2: Comment should end in a period (godot)
// descriptorpb.FieldDescriptorProto_Type
^
internal/sidekick/internal/api/model.go:290:1: Comment should end in a period (godot)
// ```
^
internal/sidekick/internal/api/model.go:368:1: Comment should end in a period (godot)
// OperationInfo contains normalized long running operation info
^
internal/sidekick/internal/api/documentation.go:116:9: QF1004: could use strings.ReplaceAll instead (staticcheck)
new := strings.Replace(*documentation, override.Match, override.Replace, -1)
^
internal/sidekick/internal/dart/annotate.go:593:3: QF1002: could use tagged switch on field.Typez (staticcheck)
switch {
^
internal/sidekick/internal/dart/annotate.go:613:3: QF1002: could use tagged switch on valueField.Typez (staticcheck)
switch {
^
internal/sidekick/internal/dart/annotate.go:669:3: QF1002: could use tagged switch on field.Typez (staticcheck)
switch {
^
internal/sidekick/internal/dart/annotate.go:681:3: QF1002: could use tagged switch on valueField.Typez (staticcheck)
switch {
^
internal/sidekick/internal/dart/annotate.go:730:3: QF1002: could use tagged switch on field.Typez (staticcheck)
switch {
^
internal/sidekick/internal/parser/pagination.go:63:6: QF1001: could apply De Morgan's law (staticcheck)
if !(hasPageSize && hasPageToken != nil) {
^
internal/sidekick/internal/parser/pagination.go:87:6: QF1001: could apply De Morgan's law (staticcheck)
if !(hasNextPageToken && hasRepeatedItem) {
^
internal/sidekick/internal/rust/annotate.go:775:3: QF1002: could use tagged switch on segment (staticcheck)
switch {
^
internal/sidekick/internal/rust/codec.go:492:2: QF1003: could use tagged switch on f.Typez (staticcheck)
if f.Typez == api.MESSAGE_TYPE {
^
internal/sidekick/sidekick_test.go:148:30: QF1004: could use strings.ReplaceAll instead (staticcheck)
"package-name-override": strings.Replace(config.Name, "/", "-", -1) + "-golden-protobuf",
^
internal/sidekick/downloads_cache_test.go:209:49: makeTestContents - result 1 (error) is always nil (unparam)
func makeTestContents(t *testing.T) (*contents, error) {
^
internal/sidekick/internal/dart/annotate.go:202:74: (*annotateModel).annotateModel - result 0 (*github.com/googleapis/librarian/internal/sidekick/internal/dart.modelAnnotations) is never used (unparam)
func (annotate *annotateModel) annotateModel(options map[string]string) (*modelAnnotations, error) {
^
internal/sidekick/internal/golang/gotemplate.go:106:64: annotateModel - result 0 (*github.com/googleapis/librarian/internal/sidekick/internal/golang.modelAnnotations) is never used (unparam)
func annotateModel(model *api.API, options map[string]string) (*modelAnnotations, error) {
^
internal/sidekick/downloads_cache_test.go:33:14: os.MkdirTemp() could be replaced by t.TempDir() in TestExistingDirectory (usetesting)
tmp, err := os.MkdirTemp(t.TempDir(), "sidekick-test-")
^
internal/sidekick/downloads_cache_test.go:65:18: os.MkdirTemp() could be replaced by t.TempDir() in TestWithDownload (usetesting)
testDir, err := os.MkdirTemp(t.TempDir(), "sidekick-test-")
^
internal/sidekick/downloads_cache_test.go:112:18: os.MkdirTemp() could be replaced by t.TempDir() in TestTargetExists (usetesting)
testDir, err := os.MkdirTemp(t.TempDir(), "sidekick-test-")
^
internal/sidekick/downloads_cache_test.go:147:18: os.MkdirTemp() could be replaced by t.TempDir() in TestDownloadGoogleapisRootTgzExists (usetesting)
testDir, err := os.MkdirTemp(t.TempDir(), "sidekick-test-")
^
internal/sidekick/downloads_cache_test.go:170:18: os.MkdirTemp() could be replaced by t.TempDir() in TestDownloadGoogleapisRootNeedsDownload (usetesting)
testDir, err := os.MkdirTemp(t.TempDir(), "sidekick-test-")
^
internal/sidekick/sidekick_dart_test.go:26:17: os.MkdirTemp() could be replaced by t.TempDir() in TestDartFromProtobuf (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_rust_prost_convert_test.go:25:17: os.MkdirTemp() could be replaced by t.TempDir() in TestRustProstConvert (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_rust_prost_test.go:25:17: os.MkdirTemp() could be replaced by t.TempDir() in TestRustProstFromProtobuf (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_sample_test.go:25:17: os.MkdirTemp() could be replaced by t.TempDir() in TestSampleFromProtobuf (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_test.go:43:17: os.MkdirTemp() could be replaced by t.TempDir() in TestRustFromOpenAPI (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_test.go:84:17: os.MkdirTemp() could be replaced by t.TempDir() in TestRustFromProtobuf (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_test.go:176:17: os.MkdirTemp() could be replaced by t.TempDir() in TestRustModuleFromProtobuf (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_test.go:244:17: os.MkdirTemp() could be replaced by t.TempDir() in TestRustBootstrapWkt (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_test.go:311:17: os.MkdirTemp() could be replaced by t.TempDir() in TestRustOverrideTitleAndDescription (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/sidekick_test.go:363:17: os.MkdirTemp() could be replaced by t.TempDir() in TestGoFromProtobuf (usetesting)
outDir, err := os.MkdirTemp(t.TempDir(), "golden")
^
internal/sidekick/update_test.go:39:8: os.Chdir() could be replaced by t.Chdir() in TestUpdateRootConfig (usetesting)
defer os.Chdir(cwd)
^
internal/sidekick/update_test.go:40:12: os.Chdir() could be replaced by t.Chdir() in TestUpdateRootConfig (usetesting)
if err := os.Chdir(tempDir); err != nil {
^