# sifis-generate
[![Actions Status][actions badge]][actions]
[![LICENSE][license badge]][license]
**NOTE** the development is now happening as [ci-generate](https://github.com/SoftengPoliTo/ci-generate/).
This tool generates either new projects for some build systems or configuration
files for some Continuous Integration with the use of templates.
Templates define the layout for a project and allow developers to insert data
at runtime.
Each template contains all files necessary to build a project with a build
system, in addition to Continuous Integration and Docker files used to run
tests and implement further checks.
## Supported build systems
| meson | C / C++ | provided | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| poetry | Python | provided | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :white_check_mark: | :heavy_check_mark: |
| maven | Java | provided | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :white_check_mark: | :heavy_check_mark: |
| cargo | Rust | offloaded | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| yarn | Javascript / Typescript| offloaded | :x: | :heavy_check_mark: | :x: | :x: | :x: | :white_check_mark: | :heavy_check_mark: |
:white_check_mark:: Not necessary for the considered language
## Commands
To see the list of supported commands, run: `sifis-generate --help`
Each command has an optional argument to define a license and an optional argument to
override the project name instead of using the last component of the project-path.
The default value for the license argument is `MIT`.
### cargo
```
$ sifis-generate cargo [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path
```
### maven
```
$ sifis-generate maven [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-group project-path
```
### meson
```
$ sifis-generate meson [--kind meson-project-kind] [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path
```
Admitted values for the `kind` argument:
- `c`
- `c++`
### poetry
```
$ sifis-generate poetry [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path
```
### yarn
```
$ sifis-generate yarn [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path
```
## Configuration
It is possible to save a `config.toml` in `${XDG_CONFIG_HOME}/sifis-generate` (Usually `~/.config/sifis-generate`) with overrides for
all the default and optional values, e.g:
``` toml
[default]
license = "BSD-3-Clause"
[meson]
kind = "c++"
```
Will override the default `license` and `meson.kind` configuration items and it would be equivalent to call:
``` sh
$ sifis-generate meson -k c++ -l BSD-3-Clause
```
The cli arguments take priority over the built-in defaults and the `config.toml` overrides so
```
$ sifis-generate meson -l LGPL-2.1
```
Would take the `kind = c++` from the `config.toml` and `LGPL-2.1` from the command line.
## License
Released under the [MIT License](LICENSES/MIT.txt).
## Acknowledgements
This software has been developed in the scope of the H2020 project SIFIS-Home with GA n. 952652.
[actions]: https://github.com/sifis-home/sifis-generate/actions
[license]: LICENSES/MIT.txt
[actions badge]: https://github.com/sifis-home/sifis-generate/workflows/sifis-generate/badge.svg
[license badge]: https://img.shields.io/badge/license-MIT-blue.svg