Morphir
Morphir is a library of tools that works to capture business logic as data.
For the first time, business logic can be shared, stored, translated and visualised, all with the reliability of standardisation ensured in the Morphir framework.
morphir-scala
Provides Scala language bindings and JVM based tooling for Morphir.
Installation
You can install the morphir-cli
in the following ways:
Using Coursier
cs install --channel https://raw.githubusercontent.com/finos/morphir-scala/main/coursier-channel.json morphir-cli
Then run the CLI:
morphir-cli setup
We also offer an insiders channel that grants access to snapshot releases of the CLI.
cs install --channel https://raw.githubusercontent.com/finos/morphir-scala/main/coursier-channel.json morphir-insiders-cli
Then run the CLI:
morphir-cli setup
NOTE: The main channel above (non-insiders), also offers insiders builds under the name morphir-insiders-cli
:
cs install --channel https://raw.githubusercontent.com/finos/morphir-scala/main/coursier-channel.json morphir-insiders-cli
Then run the CLI:
morphir-insiders-cli setup
Development
Gitpod
Click the button below to start a new development environment and start contributing right away:
How to build and test
Morphir-jvm use mill as its build tool.
IntelliJ Setup for Linux
If you are using IntelliJ IDEA to edit morphir-jvm's Scala code, you can create the IntelliJ project files via:
./mill mill.scalalib.GenIdea/idea
BSP Setup
If you are using Visual Studio Code, IntelliJ, or any of the Editors which support BSP you can also generate BSP config files via:
./mill mill.bsp.BSP/install
You can also try the following to use the mill-contrib-bloop
plugin to install and use the Bloop based BSP setup.
NOTE: The recommended BSP based setup for mill is to run:
./mill mill.bsp.BSP/install
as mentioned above.
Run Tests
./mill __.test
or in watch mode:
./mill -w __.test
Formatting Code
Code needs to be formatted according to scalafmt
rules. To run scalafmt
on all the source code using:
./mill mill.scalalib.scalafmt.ScalafmtModule/reformatAll __.sources
or the much shorter:
./mill reformatAll __.sources
or in watch mode to reformat changed files:
./mill -w mill.scalalib.scalafmt.ScalafmtModule/reformatAll __.sources
IntelliJ Setup for Windows
If you are using IntelliJ IDEA to edit morphir-scala's Scala code, you can create the IntelliJ project files via or use the BSP Setup option (BSP is the recommended approach):
.\mill -i mill.scalalib.GenIdea/idea
BSP Setup
If you are using Visual Studio Code, IntelliJ, or any of the Editors which support BSP you can also generate BSP config files via:
.\mill mill.bsp.BSP/install
You can also try the following to use the mill-contrib-bloop
plugin to install and use the Bloop based BSP setup.
NOTE: The recommended BSP based setup for mill is to run:
.\mill mill.bsp.BSP/install
as mentioned above.
.\mill -i --import ivy:com.lihaoyi::mill-contrib-bloop: mill.contrib.bloop.Bloop/install
Run Tests
.\mill -i __.test
or in watch mode:
.\mill -i -w __.test
Formatting Code
Code needs to be formatted according to scalafmt
rules. To run scalafmt
on all the source code using:
.\mill -i mill.scalalib.scalafmt.ScalafmtModule/reformatAll __.sources
or in watch mode to reformat changed files:
.\mill -i -w mill.scalalib.scalafmt.ScalafmtModule/reformatAll __.sources
Building website
./mill -i __.docusaurusBuild
Running website locally
./mill -i __.docusaurusServe
Roadmap
Watch for updates.
Contributing
- Fork it (https://github.com/finos/morphir-scala/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Read our contribution guidelines and Community Code of Conduct
- Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool (or EasyCLA). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.
Need an ICLA? Unsure if you are covered under an existing CCLA? Email [email protected]
License
Copyright 2022 FINOS
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0