Skip to content

Commit

Permalink
protolint: configure protolint and fix the protolinting issues
Browse files Browse the repository at this point in the history
This PR addresses the following:
- Install and Configure protolint to enforce the protobuf style guide rules in the CI.
- Fix the protolinting issues (package and import ordering) while maintaining the comaptibility.
  • Loading branch information
mohamedawnallah committed Jan 22, 2024
1 parent ec5b824 commit 1402ffd
Show file tree
Hide file tree
Showing 10 changed files with 92 additions and 14 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,9 @@ jobs:
- name: check go modules tidiness
run: make tidy-module-check

- name: lint proto files
run: make protolint

- name: lint
run: GOGC=50 make lint

Expand Down
70 changes: 70 additions & 0 deletions .protolint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# The example configuration file for the protolint is located here:
# https://github.com/yoheimuta/protolint/blob/master/_example/config/.protolint.yaml
---
# Lint directives.
lint:
# Linter rules.
# Run `protolint list` to see all available rules.
rules:
# Determines whether or not to include the default set of linters.
no_default: true

# Set the default to all linters. This option works the other way around as no_default does.
# If you want to enable this option, delete the comment out below and no_default.
# all_default: true.

# The specific linters to add.
add:
- MESSAGE_NAMES_UPPER_CAMEL_CASE
- MAX_LINE_LENGTH
- INDENT
- FILE_NAMES_LOWER_SNAKE_CASE
- IMPORTS_SORTED
- PACKAGE_NAME_LOWER_CASE
- ORDER
- SERVICES_HAVE_COMMENT
- RPCS_HAVE_COMMENT
- PROTO3_FIELDS_AVOID_REQUIRED
- PROTO3_GROUPS_AVOID
- SYNTAX_CONSISTENT
- RPC_NAMES_CASE
- QUOTE_CONSISTENT

# Linter rules option.
rules_option:
# MAX_LINE_LENGTH rule option.
max_line_length:
# Enforces a maximum line length.
max_chars: 80
# Specifies the character count for tab characters.
tab_chars: 2

# INDENT rule option.
indent:
# Available styles are 4(4-spaces), 2(2-spaces) or tab.
style: 4
# Specifies if it should stop considering and inserting new lines at the appropriate positions.
# when the inner elements are on the same line. Default is false.
not_insert_newline: true

# QUOTE_CONSISTENT rule option.
quote_consistent:
# Available quote are "double" or "single".
quote: double

# ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH rule option.
enum_field_names_zero_value_end_with:
suffix: INVALID

# SERVICE_NAMES_END_WITH rule option.
service_names_end_with:
text: Service

# REPEATED_FIELD_NAMES_PLURALIZED rule option.
## The spec for each rules follows the implementation of https://github.com/gertd/go-pluralize.
## Plus, you can refer to this rule's test code.
repeated_field_names_pluralized:
uncountable_rules:
- paper
irregular_rules:
Irregular: Regular
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,11 @@ lint: docker-tools
@$(call print, "Linting source.")
$(DOCKER_TOOLS) golangci-lint run -v $(LINT_WORKERS)

#? protolint: Lint proto files using protolint
protolint:
@$(call print, "Linting proto files.")
docker run --rm --volume "$$(pwd):/workspace" --workdir /workspace yoheimuta/protolint lint lnrpc/

#? tidy-module: Run `go mod` tidy for all modules
tidy-module:
echo "Running 'go mod tidy' for all modules"
Expand Down
4 changes: 2 additions & 2 deletions lnrpc/devrpc/dev.proto
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
syntax = "proto3";

import "lightning.proto";

package devrpc;

import "lightning.proto";

option go_package = "github.com/lightningnetwork/lnd/lnrpc/devrpc";

/*
Expand Down
4 changes: 2 additions & 2 deletions lnrpc/invoicesrpc/invoices.proto
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
syntax = "proto3";

import "lightning.proto";

package invoicesrpc;

import "lightning.proto";

option go_package = "github.com/lightningnetwork/lnd/lnrpc/invoicesrpc";

/*
Expand Down
4 changes: 2 additions & 2 deletions lnrpc/lnclipb/lncli.proto
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
syntax = "proto3";

import "verrpc/verrpc.proto";

package lnclipb;

import "verrpc/verrpc.proto";

option go_package = "github.com/lightningnetwork/lnd/lnrpc/lnclipb";

message VersionResponse {
Expand Down
4 changes: 2 additions & 2 deletions lnrpc/peersrpc/peers.proto
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
syntax = "proto3";

import "lightning.proto";

package peersrpc;

import "lightning.proto";

option go_package = "github.com/lightningnetwork/lnd/lnrpc/peersrpc";

// Peers is a service that can be used to get information and interact
Expand Down
4 changes: 2 additions & 2 deletions lnrpc/routerrpc/router.proto
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
syntax = "proto3";

import "lightning.proto";

package routerrpc;

import "lightning.proto";

option go_package = "github.com/lightningnetwork/lnd/lnrpc/routerrpc";

/*
Expand Down
4 changes: 2 additions & 2 deletions lnrpc/walletrpc/walletkit.proto
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
syntax = "proto3";

package walletrpc;

import "lightning.proto";
import "signrpc/signer.proto";

package walletrpc;

option go_package = "github.com/lightningnetwork/lnd/lnrpc/walletrpc";

/*
Expand Down
4 changes: 2 additions & 2 deletions lnrpc/walletunlocker.proto
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
syntax = "proto3";

import "lightning.proto";

package lnrpc;

import "lightning.proto";

option go_package = "github.com/lightningnetwork/lnd/lnrpc";

/*
Expand Down

0 comments on commit 1402ffd

Please sign in to comment.