{"id":20031483,"url":"https://github.com/rotorgames/pigeon_build_runner","last_synced_at":"2025-09-20T07:31:45.448Z","repository":{"id":183024182,"uuid":"669460473","full_name":"rotorgames/pigeon_build_runner","owner":"rotorgames","description":"Powerful Dart package that seamlessly integrates the pigeon package with the build_runner package","archived":false,"fork":false,"pushed_at":"2024-01-08T11:42:23.000Z","size":146,"stargazers_count":2,"open_issues_count":2,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T17:23:33.295Z","etag":null,"topics":["buildrunner","dart","dartlang","flutter","pigeon"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rotorgames.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-22T10:56:30.000Z","updated_at":"2024-10-26T07:03:08.000Z","dependencies_parsed_at":"2024-11-13T09:43:24.230Z","dependency_job_id":null,"html_url":"https://github.com/rotorgames/pigeon_build_runner","commit_stats":null,"previous_names":["rotorgames/pigeon_build_runner"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/rotorgames/pigeon_build_runner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rotorgames%2Fpigeon_build_runner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rotorgames%2Fpigeon_build_runner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rotorgames%2Fpigeon_build_runner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rotorgames%2Fpigeon_build_runner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rotorgames","download_url":"https://codeload.github.com/rotorgames/pigeon_build_runner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rotorgames%2Fpigeon_build_runner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276064222,"owners_count":25578997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-20T02:00:10.207Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["buildrunner","dart","dartlang","flutter","pigeon"],"created_at":"2024-11-13T09:33:20.200Z","updated_at":"2025-09-20T07:31:45.164Z","avatar_url":"https://github.com/rotorgames.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo](https://raw.githubusercontent.com/rotorgames/pigeon_build_runner/main/assets/logo.png)\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://pub.dev/packages/pigeon_build_runner\"\u003e\n    \u003cimg alt=\"pub.dev\" src=\"https://img.shields.io/pub/v/pigeon_build_runner\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\nThe `pigeon_build_runner` is a powerful Dart package that seamlessly integrates the `pigeon` package with the `build_runner` package, enhancing the efficiency and simplicity of code generation for Flutter projects. The package acts as a bridge between `pigeon` and `build_runner`, streamlining the communication process and automating the code generation workflow.\n\n### Getting Started\nTo use pigeon_build_runner in your Flutter project, follow these steps:\n\n#### 1. Install Dependencies\nAdd the following dependencies to your pubspec.yaml file:\n```yaml\ndependencies:\n  flutter:\n    sdk: flutter\n\ndev_dependencies:\n  pigeon: ^\u003clatest_pigeon_version\u003e\n  build_runner: ^\u003clatest_build_runner_version\u003e\n  pigeon_build_runner: ^\u003clatest_pigeon_build_runner_version\u003e\n```\nMake sure to replace \u003clatest_pigeon_version\u003e, \u003clatest_build_runner_version\u003e, and \u003clatest_pigeon_build_runner_version\u003e with the most recent versions available. You can find the latest versions on [pub.dev](https://pub.dev).\n\n#### 2. Include a pigeon folder\nIf you have your pigeon files placed outside the lib folder in your Dart project, you will need to create a `build.yaml` file to configure the build system properly. This step is necessary to generate the necessary code from your pigeon files.\n\n**Note:** If you have all your pigeon files placed inside the lib folder, you can skip this step and proceed directly to Step 3.\n\nHere's how you can do it:\n\n1. In the root directory of your Dart project, create a new file named `build.yaml` if it doesn't already exist.\n\n2. Open the `build.yaml` file in a text editor of your choice.\n\n3. Add the following configuration to the `build.yaml` file:\n\n```yaml\nadditional_public_assets:\n    # Add the directories containing your pigeon files here, relative to the root directory\n    - path/to/pigeons/directory/**\n```\n\nReplace `path/to/pigeons/directory` with the actual relative path to the directory where your pigeon files are located. Make sure to indent the lines properly as shown in the example.\n\n#### 3. Configure your project\n\nOpen the pubspec.yaml file in your Flutter project.\n\nAdd the following configuration under the `pigeon` key.\n\nIt's not mandatory to include all the outputs mentioned below. Feel free to configure only the outputs that are necessary for your requirements.\n\n**Note:** Replace paths with the essential paths for your project configuration.\n\n```yaml\npigeon:\n  # main-input defines default values and base paths or package names\n  main-input:\n    input: pigeons/\n    dart:\n      out: lib/src/pigeons/ \n      test-out: test/pigeons/\n    ast:\n      out: lib/src/pigeons_ast/\n    objc:\n      header-out: ios/Runner/\n      source-out: ios/Runner/\n      # Set this to a unique prefix for your plugin or application, per Objective-C naming conventions.\n      prefix: PGN\n    java:\n      out: android/app/src/main/java/dev/flutter/pigeon_example_app\n      package: your.package.name\n    swift:\n      out: ios/Runner/\n    kotlin:\n      out: android/app/src/main/kotlin/dev/flutter/pigeon_example_app\n      package: your.package.name\n    cpp:\n      header-out: windows/runner\n      source-out: windows/runner\n      namespace: CppNamespace\n  inputs:\n    - input: my_pigeon.dart\n      dart:\n        out: my_pigeon.dart\n        test-out: my_pigeon_test.dart\n      ast:\n        out: my_pigeon_ast.dart\n      objc:\n        header-out: my_pigeon.g.h\n        source-out: my_pigeon.g.s\n      java:\n        out: MyPigeon.g.java\n        # Adding `.` before a package will join a package name from main-input with the package belowe\n        # Result: your.package.name.additional.package.name\n        package: .additional.package.name\n      kotlin:\n        out: MyPigeon.g.kt\n        # Adding `.` before a package will join a package name from main-input with the package belowe\n        # Result: your.package.name.additional.package.name\n        package: .additional.package.name\n      swift:\n        out: MyPigeon.g.swift\n      cpp:\n        header-out: my_pigeon.g.h\n        source-out: my_pigeon.g.cpp\n```\n\nUsing main-input is not absolutely mandatory, but it greatly aids in defining base paths for input/output folders and package names, effectively reducing boilerplate.\n\n##### Path configuration\n\nIf the path begins with a forward slash `/`, the main package folder will be utilized.\n\n```yaml\npigeon:\n  main-input:\n    input: pigeons/\n    dart:\n      out: lib/src/pigeons/ \n  inputs:\n    - input: first_pigeon.dart\n      dart:\n        out: first_pigeon.dart # lib/src/pigeons/first_pigeon.dart\n    - input: second_pigeon.dart\n      dart:\n        out: /lib/custom_folder/second_pigeon.dart # /lib/custom_folder/second_pigeon.dart\n```\n\n##### Package configuration\n\nAlso, if the package doesn't start with dot `.`, the package from `main-input` will not be used.\n\n```yaml\npigeon:\n  # main-input defines default values and base paths or package names\n  main-input:\n    input: pigeons/\n    java:\n      out: android/app/src/main/java/dev/flutter/pigeon_example_app\n      package: your.package.name\n  inputs:\n    - input: first_pigeon.dart\n      java:\n        out: FirstPigeon.g.java\n        package: .additional.package.name # your.package.name.additional.package.name\n    - input: second_pigeon.dart\n      java:\n        out: SecondPigeon.g.java\n        package: another.package.name # another.package.name\n```\n\n##### All available properties\nBelow is an overview of all the available properties for the pigeon_build_runner package. For more detailed information about each property, you can refer to the comprehensive [pigeon documentation](https://github.com/flutter/packages/tree/main/packages/pigeon). This documentation will provide you with valuable insights into the functionality and usage of each property\n```yaml\npigeon:\n  main-input:\n    copyright-header: copyright.txt\n    one-language: true\n    debug-generators: true\n\n    input: pigeons/\n\n    ast:\n      out: lib/src/pigeons_ast/\n    objc:\n      header-out: ios/Runner/\n      source-out: ios/Runner/\n      prefix: PGN\n    java:\n      out: android/app/src/main/java/dev/flutter/pigeon_example_app\n      package: your.package.name\n      use-generated-annotation: true\n    swift:\n      out: ios/Runner/\n    kotlin:\n      out: android/app/src/main/kotlin/dev/flutter/pigeon_example_app\n      package: your.package.name\n    cpp:\n      header-out: windows/runner\n      source-out: windows/runner\n      namespace: CppNamespace\n  inputs:\n    - input: my_pigeon.dart\n      \n      copyright-header: custom_copyright.txt\n      one-language: true\n      debug-generators: true\n\n      dart:\n        out: my_pigeon.dart\n        test-out: my_pigeon_test.dart\n      ast:\n        out: my_pigeon_ast.dart\n      objc:\n        header-out: my_pigeon.g.h\n        source-out: my_pigeon.g.s\n        prefix: CustomPrefix\n      java:\n        out: MyPigeon.g.java\n        package: .additional.package.name\n        use-generated-annotation: true\n      kotlin:\n        out: MyPigeon.g.kt\n        package: .additional.package.name\n      swift:\n        out: MyPigeon.g.swift\n      cpp:\n        header-out: my_pigeon.g.h\n        source-out: my_pigeon.g.cpp\n```\n\n### Created by Kirill Liubimov\n\n* LinkedIn: [Kirill Liubimov](https://www.linkedin.com/in/kirill-lyubimov-06a68712b/)\n* Twitter: [@kirillrg](https://twitter.com/kirillrg)\n* Github: [rotorgames](https://github.com/rotorgames)\n\n### License\nMIT License\n\nCopyright (c) 2023 Kirill Liubimov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frotorgames%2Fpigeon_build_runner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frotorgames%2Fpigeon_build_runner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frotorgames%2Fpigeon_build_runner/lists"}