{"id":19196461,"url":"https://github.com/jet/falanx","last_synced_at":"2025-04-15T14:39:34.076Z","repository":{"id":68510432,"uuid":"148336710","full_name":"jet/falanx","owner":"jet","description":"Generates F# code from protobuf schema for binary and json format","archived":false,"fork":false,"pushed_at":"2021-10-17T17:08:46.000Z","size":632,"stargazers_count":143,"open_issues_count":15,"forks_count":26,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-08T15:51:12.894Z","etag":null,"topics":["codegenerator","fsharp","proto3","protobuf"],"latest_commit_sha":null,"homepage":"","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-11T15:11:49.000Z","updated_at":"2025-02-27T03:38:56.000Z","dependencies_parsed_at":"2023-03-11T03:48:16.279Z","dependency_job_id":null,"html_url":"https://github.com/jet/falanx","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jet%2Ffalanx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jet%2Ffalanx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jet%2Ffalanx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jet%2Ffalanx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jet","download_url":"https://codeload.github.com/jet/falanx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249090450,"owners_count":21211161,"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","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":["codegenerator","fsharp","proto3","protobuf"],"created_at":"2024-11-09T12:13:45.156Z","updated_at":"2025-04-15T14:39:34.037Z","avatar_url":"https://github.com/jet.png","language":"F#","readme":"[![Build Status](https://dev.azure.com/jet-opensource/opensource/_apis/build/status/jet.falanx?branchName=master)](https://dev.azure.com/jet-opensource/opensource/_build/latest?definitionId=8?branchName=master)\n[![NuGet](https://img.shields.io/nuget/v/Falanx.Tool.svg)](https://www.nuget.org/packages/Falanx.Tool/)\n\n# Falanx code generation\n\nThis repository contains the code generator to generate F# source (.fs files) from Protobuf v3 schema.\n\nThe general concepts are as follows:\n\n* Code generation, to generate F# source code, rather than types being injected as a type provider.\n* Idiomatic F# code is generated rather than simple .NET 1.1 era code. This means records, discriminated unions, etc., are generated where appropriate.\n\n## How to use\n\nIn a .NET Sdk library project, add the following packages\n\n```xml\n\u003cPackageReference Include=\"Falanx.Proto.Codec.Binary\" Version=\"0.5.*\" /\u003e\n\u003cPackageReference Include=\"Falanx.Proto.Codec.Json\" Version=\"0.5.*\" /\u003e\n\u003cPackageReference Include=\"Falanx.Sdk\" Version=\"0.5.*\" PrivateAssets=\"All\" /\u003e\n```\n\nIt's possibile to use only one of `Falanx.Proto.Codec.Binary` and `Falanx.Proto.Codec.Json` or both, the generated code will depends on the packages referenced\n\nNow specify the `.proto` file path like\n\n```xml\n  \u003cItemGroup\u003e\n    \u003cProtoFile Include=\"..\\proto\\bundle.proto\" /\u003e\n  \u003c/ItemGroup\u003e\n```\n\nand an auto generated file will be created on build\n\nMore info in [example-sdk/README.md](example-sdk/README.md)\n\n### Template\n\nInstall the .NET template for an example library sample\n\n```\ndotnet new -i Falanx.Templates\ndotnet new falanx\n```\n\nuse `--codec` argument to specify the codecs (values `json`,`binary`,`all`)\n\n### Tool\n\nIt's possibile to use falanx as command line .NET global tool\n\n```\ndotnet tool install -g Falanx.Tool\nfalanx --help\n```\n\nTo generate a `.fs` file for a specified `.proto` file:\n\n```\nfalanx --inputfile test\\examples\\schemas\\bundle.proto --defaultnamespace test --outputfile bundle.fs\n```\n\nMore info in [example\\README.md](example/README.md)\n\n## How to build Falanx\n\nMore info in [docs/developer_guide.md](docs/developer_guide.md)\n\nUse the `src/Falanx.sln` solution for development, or directly the projects with .NET Core Sdk (`dotnet`).\n\nProjects:\n\n- `src/Falanx.Tool` the falanx console app, run with `dotnet run`\n- `test/Falanx.Tests` the unit test, run with `dotnet run`\n- `test/Falanx.IntegrationTests` the integration tests, run with `dotnet run`\n\nAs shortcuts, from root:\n\n- `dotnet build` to build the falanx executable `Falanx.Tool`.\n- `dotnet pack` to generate packages in `bin/nupks`\n- `dotnet test -v n` to run tests\n\n### To build packages\n\nFrom root\n\n```\ndotnet pack\n```\n\nThe nupkgs will be in `bin/nupkg`\n\nTo specify a version pass the `Version` property like `/p:Version=0.1.0-alpha7`\n\n### Info\n\nFalanx uses:\n\n- `Type Provider SDK` common type for quotation and AST support\n- `FsAst` untyped F# AST to code via the code formatter Fantomas\n- `Froto` protobuf parser and binary serializer\n- `Fantomas` code formatter and linter\n\n## Security\nThis repository is actively monitored by Jet Engineers and the Jet Security team. Please monitor this repo for security updates and advisories. For more information and contacts, please see [SECURITY](security.md)\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjet%2Ffalanx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjet%2Ffalanx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjet%2Ffalanx/lists"}