|
1 | | -# BioFSharp.BioContainers |
| 1 | +# BioFSharp.BioContainers |
2 | 2 |
|
3 | 3 |  |
4 | 4 |
|
5 | 5 | A template repository for creating an extension package for BioFSharp. |
6 | 6 |
|
7 | | -## Content |
8 | | - |
9 | | -- `src/BioFSharp.BioContainers`: The main project folder. Contains a library with BioFSharp core dependency. |
10 | | -- `tests/BioFSharp.BioContainers.Tests`: The test project folder. Contains a XUnit test project |
11 | | -- `build/build.fsproj`: A FAKE build project that handles building, testing, packaging, publishing, etc. |
12 | | -- `docs`: the docs folder contains an example index.fsx file with simple documentation boilerplate. |
13 | | - |
14 | | -## Setup |
15 | | - |
16 | | -Here is a list of things you should/might want to do after setting up a repo with this template: |
17 | | - |
18 | | -> [!IMPORTANT] |
19 | | -> Whenever you change a project file name or folder, make sure to fix the solution registration afterwards. |
20 | | -
|
21 | | -- Rename some things: Replace `XYZ` with the name of your package |
22 | | - - `PackageTemplate.sln` |
23 | | - - `src/BioFSharp.BioContainers` |
24 | | - - `src/BioFSharp.BioContainers/BioFSharp.BioContainers.fsproj` |
25 | | - - Rename and add nuget package metadata |
26 | | - - `tests/BioFSharp.BioContainers` |
27 | | - - `tests/BioFSharp.BioContainers.Tests/BioFSharp.BioContainers.Tests.fsproj` |
28 | | - - Also make sure to fix the project reference to BioFSharp.BioContainers when renamed |
29 | | - - in `build/ProjectInfo.fs`: |
30 | | - - Set project name: |
31 | | - ```fsharp |
32 | | - let project = "BioFSharp.BioContainers" // replace with the name of your project |
33 | | - ``` |
34 | | - - Set git owner: |
35 | | - ```fsharp |
36 | | - let gitOwner = "BioFSharp" // replace with github account name or organization where repo is hosted if necessary |
37 | | - ``` |
38 | | - - fix test project path: |
39 | | - ```fsharp |
40 | | - let testProjects = |
41 | | - [ |
42 | | - "tests/BioFSharp.BioContainers.Tests/BioFSharp.BioContainers.Tests.fsproj" // replace with the name of your test project |
43 | | - ] |
44 | | - ``` |
45 | | - - in `.github/workflows/build-and-test.yml`: change codecov slug |
46 | | -- If needed, change the target framework of the project. it currently targets `.netstandard2.0` for maximum backwards compatibility, might want to target a newer `.net` version if you need a specific API. |
47 | | -
|
48 | | -## Build |
49 | | -
|
50 | | -This repo contains a buildproject that can be called either via `build.cmd`, `build.sh`, or directly via `dotnet run`. |
51 | | -
|
52 | | -Find all build targets in `build/Build.fs`. |
53 | | -
|
54 | | -Examples: |
55 | | -
|
56 | | -- run the default build target (`Build`) via build.cmd: |
57 | | - ```bash |
58 | | - ./build.cmd |
59 | | - ``` |
60 | | -- run the `RunTests` target in build.sh: |
61 | | - ```bash |
62 | | - ./build.sh RunTests |
63 | | - ``` |
| 7 | +## Development |
| 8 | + |
| 9 | +### General |
| 10 | + |
| 11 | +BioFSharp repositories usually folllow this structure: |
| 12 | + |
| 13 | +``` |
| 14 | +root |
| 15 | +│ 📄<project name>.sln |
| 16 | +│ 📄build.cmd |
| 17 | +│ 📄build.sh |
| 18 | +├───📁build |
| 19 | +├───📁docs |
| 20 | +├───📁src |
| 21 | +| └───📁<project name> |
| 22 | +└───tests |
| 23 | + └───📁<testproject name> |
| 24 | +``` |
| 25 | + |
| 26 | +- <project name>.sln is the root solution file. |
| 27 | +- `build` contains a [FAKE](https://fake.build/) build project with targets for building, testing and packaging the project. |
| 28 | +- `build/sh` and `build.cmd` in the root are shorthand scripts to execute the buildproject. |
| 29 | +- `docs` contains the documentation in form of literate scripts and notebooks. |
| 30 | +- `src` contains folders with the source code of the project(s). |
| 31 | +- `tests` contains folders with test projects. |
| 32 | + |
| 33 | +### Build |
| 34 | + |
| 35 | +just call `build.sh` or `build.cmd` depending on your OS. |
| 36 | + |
| 37 | +### Test |
| 38 | + |
| 39 | +```bash |
| 40 | +build.sh runtests |
| 41 | +``` |
| 42 | + |
| 43 | +```bash |
| 44 | +build.cmd runtests |
| 45 | +``` |
| 46 | + |
| 47 | +### Create Nuget package |
| 48 | + |
| 49 | +```bash |
| 50 | +build.sh pack |
| 51 | +``` |
| 52 | +```bash |
| 53 | +build.cmd pack |
| 54 | +``` |
| 55 | + |
| 56 | +### Docs |
| 57 | + |
| 58 | +You can watch locally with hot reload via |
| 59 | + |
| 60 | +```bash |
| 61 | +build.sh watchdocs |
| 62 | +``` |
| 63 | +```bash |
| 64 | +build.cmd watchdocs |
| 65 | +``` |
0 commit comments