Skip to content

[Feature] Add support of grpc federation / add idempotency for symlink error for file exists #222

@DeoEsor

Description

@DeoEsor

Error

❯ easyp g
time=2026-05-06T21:21:44.854+03:00 level=INFO msg="Install package" package=github.com/mercari/grpc-federation version=v1.24.0 commit=5eeb102caed386f0ac53f8ae1fad6a74ed56c9d0
time=2026-05-06T21:21:44.904+03:00 level=INFO msg="generator.Generate: g.moduleReflect.GetModulePath: h.mod.Get: c.storage.Install: extract.Archive: Create link /Users/vdvartumyan/.easyp/mod/github.com/mercari/grpc-federation/v1.24.0/compiler/testdata/federation.proto: symlink ../../proto/grpc/federation/federation.proto /Users/vdvartumyan/.easyp/mod/github.com/mercari/grpc-federation/v1.24.0/compiler/testdata/federation.proto: file exists"

Yaml example with grpc federation

version: v1
deps:
  - github.com/googleapis/googleapis
  - github.com/grpc-ecosystem/grpc-gateway@v2.20.0
  - github.com/bufbuild/protovalidate@v0.14.2
  - github.com/mercari/grpc-federation@v1.24.0
generate:
  inputs:
    - directory: "api"
  plugins:
    - name: go
      out: ./pkg
      opts:
        paths: source_relative

    - name: go-grpc
      out: ./pkg
      opts:
        paths: source_relative
        require_unimplemented_servers: false

    - name: grpc-gateway
      out: ./pkg
      opts:
        paths: source_relative
        allow_delete_body: true

    - name: openapiv2
      out: .
      opts:
        logtostderr: true
        use_go_templates: true
        allow_merge: true
        merge_file_name: service
        simple_operation_ids: false
        generate_unbound_methods: false
        allow_delete_body: true
#        output_format: yaml
    - name: go-grpc-mock
      out: ./pkg
      opts:
        paths: source_relative

    - name: validate
      out: ./pkg
      opts:
        lang: go
        paths: source_relative

    - name: grpc-federation
      out: ./pkg
      opts:
        paths: source_relative
        import_paths: api
build:
  excludes: []
lint:
  use:
    - DEFAULT
  except: []
  ignore: []
  ignore_only: {}
  allow_comment_ignores: false
  enum_zero_value_suffix: NONE
  rpc_allow_same_request_response: false
  rpc_allow_google_protobuf_empty_requests: false
  rpc_allow_google_protobuf_empty_responses: false
  service_suffix: Api
breaking:
  use:
    - FILE
  except: []
  ignore: []
  ignore_only: {}
  ignore_unstable_packages: false

Examples of grpc federation installation https://github.com/mercari/grpc-federation/blob/main/docs/installation.md

Example of grpc federation usages
https://github.com/mercari/grpc-federation/tree/main/_examples

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions