Skip to content

Conversation

@kooksee
Copy link
Contributor

@kooksee kooksee commented Jul 11, 2025

No description provided.

@kooksee kooksee merged commit 547308d into main Jul 11, 2025
1 check passed
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @kooksee, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a new format command to the protobuild CLI, leveraging the buf tool to automatically format Protobuf files. This enhancement aims to improve code consistency and developer experience. Additionally, the PR includes a comprehensive update of Go module dependencies and applies consistent formatting across existing Protobuf definition files.

Highlights

  • New protobuild format command: A new format command has been added to the protobuild CLI. This command integrates with the buf tool to automatically format Protobuf files by executing buf format proto -w.
  • Dependency Updates: Numerous Go module dependencies have been updated to their latest versions, ensuring the project uses up-to-date libraries and potentially benefiting from bug fixes and performance improvements.
  • Protobuf File Reformatting: Existing .proto files across the repository have been reformatted for consistency. This includes changes to import order, option declarations, and general spacing, likely as a result of applying buf format or similar tooling.
  • Documentation and Example Updates: The README.md has been updated to include instructions for using the new format command, as well as the existing lint command. A new protobuf.test.yaml example configuration for the linter has also been added.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a format command that utilizes buf format to standardize protobuf file formatting. It also includes updates to dependencies and documentation. The implementation is straightforward, but I've identified a few areas for improvement concerning logging practices, command execution safety, and adherence to Protobuf style conventions. These suggestions aim to enhance the code's robustness and maintainability.


## format

protobuild format -c protobuf.test.yaml

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The indentation for the format command example is inconsistent with the lint command example above it. For better readability and consistency, please align the indentation.

Suggested change
protobuild format -c protobuf.test.yaml
protobuild format -c protobuf.test.yaml

Action: func(ctx context.Context, command *cli.Command) error {
bufPath, err := exec.LookPath("buf")
if err != nil {
slog.Info("buf not found, please install https://github.com/bufbuild/buf/releases")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

When buf is not found, it's an error condition. Using slog.Error instead of slog.Info would better reflect the severity of the situation and improve log-based monitoring and filtering.

Suggested change
slog.Info("buf not found, please install https://github.com/bufbuild/buf/releases")
slog.Error("buf not found, please install https://github.com/bufbuild/buf/releases")

return err
}

shutil.MustRun(bufPath, "format proto -w")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

It's safer to pass command arguments as separate strings rather than a single string. This prevents potential shell injection vulnerabilities and handles arguments with spaces correctly, even though bufPath is unlikely to have spaces here.

Suggested change
shutil.MustRun(bufPath, "format proto -w")
shutil.MustRun(bufPath, "format", "proto", "-w")

import "google/protobuf/timestamp.proto";
import "retag/retag.proto";

option go_package = "github.com/pubgo/protobuild/pkg/orm;ormpb";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The option go_package declaration should be placed at the top of the file, before any import statements, according to Google Protobuf style guide conventions.


import "google/protobuf/timestamp.proto";
import "google/protobuf/descriptor.proto";
import "google/protobuf/timestamp.proto";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The google/protobuf/timestamp.proto import appears to be unused in this file. Please remove unused imports to keep the code clean and reduce unnecessary dependencies.

import "retag/retag.proto";
import "orm/gorm.proto";

option go_package = "github.com/pubgo/protobuild/pkg/orm;ormpb";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The option go_package declaration should be placed at the top of the file, before any import statements, according to Google Protobuf style guide conventions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants