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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions