{
  "markdown": "[![FINOS - Incubating](https://img.shields.io/badge/FINOS-Incubating-blue.svg)](https://finos.org)\n[![Slack](https://img.shields.io/badge/Slack-morphir-blue.svg?logo=slack)](https://finos-lf.slack.com/messages/morphir)\n![Development Workflow](https://github.com/finos/morphir-dotnet/actions/workflows/development.yml/badge.svg)\n![Deployment Workflow](https://github.com/finos/morphir-dotnet/actions/workflows/deployment.yml/badge.svg)\n![CVE Scanning](https://github.com/finos/morphir-dotnet/actions/workflows/cve-scanning.yml/badge.svg)\n![NuGet Version](https://img.shields.io/nuget/v/Morphir?label=NuGet%20Morphir)\n![NuGet Core](https://img.shields.io/nuget/v/Morphir.Core?label=NuGet%20Core)\n![NuGet Tooling](https://img.shields.io/nuget/v/Morphir.Tooling?label=NuGet%20Tooling)\n[![Proto Plugin](https://img.shields.io/badge/proto_plugin-v0.1.1-blue.svg)](https://github.com/finos/morphir-dotnet/releases/tag/plugin-v0.1.1)\n<img src=\"https://github.com/finos/branding/blob/master/project-logos/active-project-logos/Morphir%20Logo/Horizontal/2020_Morphir_Logo_Horizontal.png?raw=true\" width=\"450\">\n\n# Morphir\n\nMorphir is a library of tools that works to capture business logic as data.\n\nFor the first time, business logic can be shared, stored, translated and visualised, all with the reliability of standardisation ensured in the Morphir framework.\n\n## What is it?\n\nA set of tools for integrating technologies. Morphir is composed of a library of tools that facilitate the digitisation of business logic into multiple different languages & platforms. The Morphir framework is unique too in that facilities elements of automation and conversion that were previously unavailable in the field of finance-tech.\n\n## Why is it important?\n\nMakes business logic portable. Business logic digitised provides distinct advantages: capacity for movement across departments and fields & the ability to be converted to new languages and applications.\n\n## How does it work?\n\nDefines a standard format for storing and sharing business logic. A clear set of standards and format is in-place from the input/output, allowing for coherent structure.\n\n## What are the benefits?\n\n### ✔️ Eliminates technical debt risk\n\n> _Refactoring code libraries is often a harmful and time-sensitive issue for businesses, Morphir ensure the standards introduced from input eliminate delays at deployment._\n\n### ✔️ Increases agility\n\n> _Adaptability and usability are key concepts of the Morphir framework, business logic can now move with the code, be easily understood and adopted, in an ever-developing eco-system._\n\n### ✔️ Ensures correctness\n\n> _Certifying that specified functions behave as intended from input to output is assured through the Morphir library / tool chain._\n\n### ✔️ Disseminates information through automation\n\n> _Morphir’s automated processing helps disseminate information which otherwise may not be understood or shared at all, a useful tool when brining elements of business logic to conversation outside of its immediate audience (i.e developers)._\n\n\n## Morphir .NET \n\nProvides tooling for the Morphir ecosystem and .NET libraries that can be used to help you work with Morphir.\n\n## Getting Started\n\n### Quick Start\n\nInstall Morphir using one of the following methods:\n\n**Using proto (Recommended for multi-language toolchains):**\n\n```bash\n# Install proto (if not already installed)\ncurl -fsSL https://moonrepo.dev/install/proto.sh | bash  # Linux/macOS\n# or: irm https://moonrepo.dev/install/proto.ps1 | iex  # Windows\n\n# Add Morphir plugin and install\nproto plugin add morphir \"source:https://github.com/finos/morphir-dotnet/releases/latest/download/morphir_plugin.wasm\"\nproto install morphir\n```\n\n**Using Platform-Specific Install Scripts:**\n\n```bash\n# Linux\ncurl -fsSL https://raw.githubusercontent.com/finos/morphir-dotnet/main/scripts/install-linux.sh | bash\n\n# macOS\ncurl -fsSL https://raw.githubusercontent.com/finos/morphir-dotnet/main/scripts/install-macos.sh | bash\n\n# Windows (PowerShell)\nirm https://raw.githubusercontent.com/finos/morphir-dotnet/main/scripts/install-windows.ps1 | iex\n```\n\n**Using .NET Tool (requires .NET SDK):**\n\n```bash\ndotnet tool install -g Morphir\n```\n\n**Verify Installation:**\n\n```bash\nmorphir --version\n```\n\nFor detailed installation instructions and troubleshooting, see the [Installation Guide](https://finos.github.io/morphir-dotnet/getting-started/installation/).\n\n### Documentation\n\n- [Installation Guide](https://finos.github.io/morphir-dotnet/getting-started/installation/)\n- [Getting Started](https://finos.github.io/morphir-dotnet/getting-started/)\n- [API Documentation](https://finos.github.io/morphir-dotnet/api/)\n- [Morphir Ecosystem](https://morphir.finos.org/)\n\n## Building\n\nThis project uses [Nuke](https://nuke.build/) for build orchestration, providing a strongly-typed, cross-platform build system written in C#.\n\n### Requirements\n\n- [.NET SDK 10.0](https://dotnet.microsoft.com/download) or higher\n\n### Basic Commands\n\n```bash\n# First-time setup: Restore tools and dependencies\ndotnet tool restore\n./build.sh --target Restore\n\n# Build the solution (default target)\n./build.sh\n\n# Run tests\n./build.sh --target Test\n\n# Run linting/formatting checks\n./build.sh --target Lint\n\n# Format code\n./build.sh --target Format\n\n# Run full CI pipeline (restore, build, test, lint)\n./build.sh --target CI\n\n# Show all available targets\n./build.sh --help\n```\n\n**Windows users:** Use `build.cmd` or `build.ps1` instead of `./build.sh`\n\n### Configuration\n\nYou can set the build configuration using the `--configuration` parameter:\n\n```bash\n# Build in Debug mode\n./build.sh --configuration Debug\n\n# Run tests in Debug mode\n./build.sh --target Test --configuration Debug\n```\n\nBy default, commands use `Release` configuration.\n\n### Migration from Just\n\nThis project was recently migrated from Just to Nuke. See [NUKE_MIGRATION.md](NUKE_MIGRATION.md) for the complete migration guide and command mappings. The old `justfile` is preserved for reference.\n\n## Developing\n\n### Project Structure\n\n```\nmorphir-dotnet/\n├── src/\n│   ├── Morphir.Core/          # Core IR types and utilities\n│   ├── Morphir.Tooling/       # Tooling infrastructure\n│   └── Morphir/               # CLI application\n├── tests/\n│   ├── Morphir.Core.Tests/    # Unit tests for Core\n│   ├── Morphir.Tooling.Tests/ # Unit tests for Tooling\n│   └── Morphir.E2E.Tests/     # End-to-end tests (BDD/Gherkin)\n├── build/\n│   ├── _build.csproj          # Nuke build project\n│   └── Build.cs               # Build orchestration (strongly-typed)\n├── scripts/                   # Build and utility scripts (C# scripts)\n├── build.sh/cmd/ps1           # Nuke bootstrap scripts\n└── justfile                   # Legacy build commands (preserved for reference)\n```\n\n### Development Workflow\n\n1. **Restore dependencies:**\n   ```bash\n   ./build.sh --target Restore\n   ```\n\n2. **Build the solution:**\n   ```bash\n   ./build.sh --target Compile\n   ```\n\n3. **Run tests:**\n   ```bash\n   ./build.sh --target Test\n   ```\n\n4. **Check code formatting:**\n   ```bash\n   ./build.sh --target Lint\n   ```\n\n5. **Format code (if needed):**\n   ```bash\n   # Unix/macOS\n   ./build.sh --target Format\n\n   # Windows\n   build.cmd --target Format\n   # or\n   ./build.ps1 --target Format\n   ```\n\n### Scripts\n\nThe project uses C# scripts (`.cs` files) for build automation, leveraging .NET 10's direct C# file execution. These scripts are located in the `scripts/` directory:\n\n- `publish-single-file.cs` - Publishes trimmed single-file executables\n- `publish-single-file-untrimmed.cs` - Publishes untrimmed single-file executables\n- `run-tests.cs` - Runs unit tests\n- `run-e2e-tests.cs` - Runs end-to-end tests\n- `generate-wolverine-code.cs` - Generates Wolverine code\n\n**Note**: The deprecated `build-tool-dll.cs` and `pack-tool-platform.cs` scripts have been removed. Use the Nuke build targets (`PackTool`, `PublishTool`) instead.\n\n### Build Commands\n\nAll Nuke build commands support both Unix/macOS (`./build.sh`) and Windows (`build.cmd` or `./build.ps1`) bootstrap scripts. Examples below show both formats.\n\n#### Building Libraries\n\n```bash\n# Unix/macOS: Pack library projects as NuGet packages\n./build.sh --target PackLibs\n\n# Windows\nbuild.cmd --target PackLibs\n# or\n./build.ps1 --target PackLibs\n\n# Pack all projects (libraries and tool)\n./build.sh --target PackAll                  # Unix/macOS\nbuild.cmd --target PackAll                   # Windows\n\n# Specify configuration and version\n./build.sh --target PackLibs --configuration Debug --version 1.2.3\nbuild.cmd --target PackLibs --configuration Debug --version 1.2.3\n\n# Custom output directory\n./build.sh --target PackLibs --output-dir ./my-packages\nbuild.cmd --target PackLibs --output-dir ./my-packages\n```\n\n#### Building Executables\n\n```bash\n# Build a trimmed single-file executable for a specific platform\n./build.sh --target PublishSingleFile --rid linux-x64        # Unix/macOS\nbuild.cmd --target PublishSingleFile --rid linux-x64         # Windows\n\n# Build an AOT (ahead-of-time compiled) executable\n./build.sh --target PublishExecutable --rid linux-x64\nbuild.cmd --target PublishExecutable --rid linux-x64\n\n# Build an untrimmed executable (larger, better for debugging)\n./build.sh --target PublishSingleFileUntrimmed --rid win-x64\nbuild.cmd --target PublishSingleFileUntrimmed --rid win-x64\n\n# Common RIDs: linux-x64, linux-arm64, win-x64, osx-x64, osx-arm64\n\n# With custom configuration and output directory\n./build.sh --target PublishSingleFile --rid linux-x64 --configuration Debug --output-dir ./bin\nbuild.cmd --target PublishSingleFile --rid linux-x64 --configuration Debug --output-dir ./bin\n```\n\n#### Building the Dotnet Tool\n\n```bash\n# Pack the Morphir CLI as a dotnet tool\n./build.sh --target PackTool                                  # Unix/macOS\nbuild.cmd --target PackTool                                   # Windows\n\n# With version and output directory\n./build.sh --target PackTool --version 2.0.0 --output-dir ./packages\nbuild.cmd --target PackTool --version 2.0.0 --output-dir ./packages\n```\n\n#### Testing\n\n```bash\n# Run unit tests\n./build.sh --target Test                                      # Unix/macOS\nbuild.cmd --target Test                                       # Windows\n\n# Run tests in Debug configuration\n./build.sh --target Test --configuration Debug\nbuild.cmd --target Test --configuration Debug\n\n# Build E2E test project\n./build.sh --target BuildE2ETests\nbuild.cmd --target BuildE2ETests\n\n# Run end-to-end tests\n./build.sh --target TestE2E                                   # Unix/macOS\nbuild.cmd --target TestE2E                                    # Windows\n\n# Run E2E tests for specific executable type (aot, trimmed, untrimmed, or all)\n./build.sh --target TestE2E --executable-type trimmed\nbuild.cmd --target TestE2E --executable-type trimmed\n```\n\n#### Publishing to NuGet\n\n```bash\n# Publish library packages to NuGet.org\n./build.sh --target PublishLibs --api-key YOUR_API_KEY       # Unix/macOS\nbuild.cmd --target PublishLibs --api-key YOUR_API_KEY        # Windows\n\n# Publish the Morphir CLI tool package to NuGet.org\n./build.sh --target PublishTool --api-key YOUR_API_KEY\nbuild.cmd --target PublishTool --api-key YOUR_API_KEY\n\n# Publish all packages\n./build.sh --target PublishAll --api-key YOUR_API_KEY\nbuild.cmd --target PublishAll --api-key YOUR_API_KEY\n\n# Publish to custom NuGet source\n./build.sh --target PublishLibs --nuget-source https://custom-feed.com --api-key YOUR_KEY\nbuild.cmd --target PublishLibs --nuget-source https://custom-feed.com --api-key YOUR_KEY\n\n# Publish to local NuGet feed (for testing)\n./build.sh --target PublishLocalLibs                          # Unix/macOS\nbuild.cmd --target PublishLocalLibs                           # Windows\n\n# With custom local source\n./build.sh --target PublishLocalLibs --local-source ./my-local-feed\nbuild.cmd --target PublishLocalLibs --local-source ./my-local-feed\n\n# Install tool locally from package\n./build.sh --target PublishLocalTool\nbuild.cmd --target PublishLocalTool\n\n# Install globally\n./build.sh --target PublishLocalTool --global true\nbuild.cmd --target PublishLocalTool --global true\n```\n\n### Available Nuke Targets\n\nRun `./build.sh --help` (Unix/macOS) or `build.cmd --help` (Windows) to see all available targets with descriptions and parameters.\n\nKey targets:\n- `Restore` - Restore .NET dependencies\n- `Compile` - Build the solution (default target)\n- `Test` - Run unit tests\n- `Lint` - Check code formatting\n- `Format` - Format code\n- `CI` - Run full CI pipeline (restore, build, test, lint)\n- `PackLibs` - Pack library projects as NuGet packages\n- `PackTool` - Pack the Morphir CLI as a dotnet tool\n- `PackAll` - Pack all projects (libraries and tool)\n- `PublishSingleFile` - Publish trimmed single-file executable (requires `--rid`)\n- `PublishExecutable` - Publish AOT executable (requires `--rid`)\n- `PublishSingleFileUntrimmed` - Publish untrimmed single-file executable (requires `--rid`)\n- `TestE2E` - Run end-to-end tests\n- `PublishLibs` - Publish library packages to NuGet\n- `PublishTool` - Publish tool package to NuGet\n- `PublishAll` - Publish all packages to NuGet\n- `PublishLocalLibs` - Publish libraries to local feed\n- `PublishLocalTool` - Install tool locally from package\n- `PublishLocalAll` - Publish all to local feed\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](https://finos.github.io/morphir-dotnet/contributing/) for details.\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\n## Links\n\n- [Documentation](https://finos.github.io/morphir-dotnet/)\n- [GitHub Repository](https://github.com/finos/morphir-dotnet)\n- [NuGet Packages](https://www.nuget.org/packages?q=morphir)\n- [Morphir Project](https://github.com/finos/morphir)\n- [Morphir Docs](https://morphir.finos.org/)\n",
  "bytes": 13823,
  "sha": "ef5063c8e1ea217f18938a57f30ebbac45478bce65dd2eb32ea631ec78121ce7",
  "repo_slug": "finos/morphir-dotnet",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_finos_morphir_dotnet_claude_skills_relea_a9ccb529/readme"
}