build: refactoring build for a more consistent setup
This commit is contained in:
parent
c8c2c80cd2
commit
c3c3d60e5f
25 changed files with 467 additions and 13402 deletions
12
.config/dotnet-tools.json
Normal file
12
.config/dotnet-tools.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"isRoot": true,
|
||||||
|
"tools": {
|
||||||
|
"dotnet-reportgenerator-globaltool": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"commands": [
|
||||||
|
"reportgenerator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -103,7 +103,7 @@ tab_width=2
|
||||||
|
|
||||||
[*.{cs,js,json,jsx,proto,resjson,ts,tsx}]
|
[*.{cs,js,json,jsx,proto,resjson,ts,tsx}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size=space
|
indent_size = 4
|
||||||
tab_width = 4
|
tab_width = 4
|
||||||
|
|
||||||
[*.{asax,ascx,aspx,cshtml,css,htm,html,master,razor,skin,vb,xaml,xamlx,xoml}]
|
[*.{asax,ascx,aspx,cshtml,css,htm,html,master,razor,skin,vb,xaml,xamlx,xoml}]
|
||||||
|
|
3
.envrc
3
.envrc
|
@ -1 +1,2 @@
|
||||||
use flake
|
export PATH=$PWD/scripts:$PATH
|
||||||
|
use flake || use nix
|
||||||
|
|
13
.gitignore
vendored
13
.gitignore
vendored
|
@ -11,8 +11,15 @@ obj/
|
||||||
.idea/
|
.idea/
|
||||||
_ReSharper.Caches/
|
_ReSharper.Caches/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
|
# NixOS
|
||||||
.direnv/
|
.direnv/
|
||||||
coverage/
|
|
||||||
tests/artifacts/
|
# Tests and Coverage
|
||||||
|
coverage
|
||||||
TestResults/
|
TestResults/
|
||||||
.config/
|
tests/artifacts/
|
||||||
|
|
||||||
|
# Lefthook
|
||||||
|
.lefthook-local/
|
||||||
|
lefthook-local.yml
|
||||||
|
|
|
@ -12,14 +12,14 @@ default:
|
||||||
build:
|
build:
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
- nix develop --command .gitlab/build.sh
|
- nix develop --command scripts/build.sh
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_BRANCH
|
- if: $CI_COMMIT_BRANCH
|
||||||
|
|
||||||
test:
|
test:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- nix develop --command .gitlab/test.sh
|
- nix develop --command scripts/test.sh
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
|
@ -35,7 +35,11 @@ test:
|
||||||
|
|
||||||
publish:
|
publish:
|
||||||
stage: release
|
stage: release
|
||||||
|
before_script:
|
||||||
|
# Set it up so we can push the tag
|
||||||
|
- project_url=$(echo $CI_PROJECT_URL | sed 's/https:\/\///')
|
||||||
|
- git remote set-url origin https://oauth2:$GITLAB_TOKEN@$project_url
|
||||||
script:
|
script:
|
||||||
- nix develop --command .gitlab/release.sh
|
- nix develop --command scripts/release.sh
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
@ -1,3 +0,0 @@
|
||||||
npm install --ci
|
|
||||||
npx commitlint-gitlab-ci -x @commitlint/config-conventional
|
|
||||||
npm run build
|
|
|
@ -1,3 +0,0 @@
|
||||||
npm install --ci
|
|
||||||
npm run build
|
|
||||||
npx semantic-release
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
npx --no-install commitlint --edit $1
|
|
8
.prettierignore
Normal file
8
.prettierignore
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
*~
|
||||||
|
flake.*
|
||||||
|
|
||||||
|
node_modules/
|
||||||
|
.direnv/
|
||||||
|
.config/
|
||||||
|
obj/
|
||||||
|
bin/
|
40
CHANGELOG.md
40
CHANGELOG.md
|
@ -1,83 +1,71 @@
|
||||||
## [1.2.3](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.2.2...v1.2.3) (2021-12-07)
|
## [1.2.3](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.2.2...v1.2.3) (2021-12-07)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* fixed the Git root searching plus added tests ([37f5e3f](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/37f5e3f4cbb8a6ed1afecdc6c0514b8fd0d914ea))
|
- fixed the Git root searching plus added tests ([37f5e3f](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/37f5e3f4cbb8a6ed1afecdc6c0514b8fd0d914ea))
|
||||||
|
|
||||||
## [1.2.2](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.2.1...v1.2.2) (2021-12-07)
|
## [1.2.2](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.2.1...v1.2.2) (2021-12-07)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* assemblies are files, not directories ([e69971d](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/e69971df7fa455b91bcd3f1a66939373246822ca))
|
- assemblies are files, not directories ([e69971d](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/e69971df7fa455b91bcd3f1a66939373246822ca))
|
||||||
|
|
||||||
## [1.2.1](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.2.0...v1.2.1) (2021-12-07)
|
## [1.2.1](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.2.0...v1.2.1) (2021-12-07)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* handle directory.Exists caching ([233656a](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/233656abb9417819ea7044067dd194831ae10340))
|
- handle directory.Exists caching ([233656a](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/233656abb9417819ea7044067dd194831ae10340))
|
||||||
|
|
||||||
# [1.2.0](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.1.0...v1.2.0) (2021-12-07)
|
# [1.2.0](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.1.0...v1.2.0) (2021-12-07)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* protect against non-existent directories while finding ([2b562e8](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/2b562e8c34a9de41cf6aceaf4d162ef978e6b6ef))
|
- protect against non-existent directories while finding ([2b562e8](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/2b562e8c34a9de41cf6aceaf4d162ef978e6b6ef))
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* added assembly.GetDirectory() ([53aacbf](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/53aacbf862696f0057371883d936575928896323))
|
- added assembly.GetDirectory() ([53aacbf](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/53aacbf862696f0057371883d936575928896323))
|
||||||
|
|
||||||
# [1.1.0](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.5...v1.1.0) (2021-12-07)
|
# [1.1.0](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.5...v1.1.0) (2021-12-07)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* added more extension methods, updated documentation ([cca890b](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/cca890b061743f1c9192b40aa81beaddbcdb2e6f))
|
- added more extension methods, updated documentation ([cca890b](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/cca890b061743f1c9192b40aa81beaddbcdb2e6f))
|
||||||
|
|
||||||
## [1.0.5](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.4...v1.0.5) (2021-09-11)
|
## [1.0.5](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.4...v1.0.5) (2021-09-11)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* **nuget:** fixing packaging and versioning ([29fd621](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/29fd621de05ec5390d70d7858396a99012c3748d))
|
- **nuget:** fixing packaging and versioning ([29fd621](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/29fd621de05ec5390d70d7858396a99012c3748d))
|
||||||
* **nuget:** fixing packaging and versioning ([24faa43](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/24faa43abe18e4cd28ff4faf41110772648b61b6))
|
- **nuget:** fixing packaging and versioning ([24faa43](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/24faa43abe18e4cd28ff4faf41110772648b61b6))
|
||||||
* **nuget:** fixing packaging and versioning ([4eca768](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/4eca7682a3c3165a4f25cffcae64761d04a7b67d))
|
- **nuget:** fixing packaging and versioning ([4eca768](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/4eca7682a3c3165a4f25cffcae64761d04a7b67d))
|
||||||
|
|
||||||
## [1.0.4](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.3...v1.0.4) (2021-09-11)
|
## [1.0.4](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.3...v1.0.4) (2021-09-11)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* moving directory props in the same place ([7d55de8](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/7d55de864cccd88d53451b1c6adb5252a0ca3b72))
|
- moving directory props in the same place ([7d55de8](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/7d55de864cccd88d53451b1c6adb5252a0ca3b72))
|
||||||
|
|
||||||
## [1.0.3](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.2...v1.0.3) (2021-09-11)
|
## [1.0.3](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.2...v1.0.3) (2021-09-11)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* **semantic-release-nuget:** correcting package version race condition ([f3966a7](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/f3966a73781ee1d92a179ca80760515dbbc4bc86))
|
- **semantic-release-nuget:** correcting package version race condition ([f3966a7](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/f3966a73781ee1d92a179ca80760515dbbc4bc86))
|
||||||
|
|
||||||
## [1.0.2](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.1...v1.0.2) (2021-09-11)
|
## [1.0.2](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.1...v1.0.2) (2021-09-11)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* updating readme to trigger build ([dade5a7](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/dade5a7f9030027af23b2935a8e17bbe6d99cdcb))
|
- updating readme to trigger build ([dade5a7](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/dade5a7f9030027af23b2935a8e17bbe6d99cdcb))
|
||||||
|
|
||||||
## [1.0.1](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.0...v1.0.1) (2021-09-11)
|
## [1.0.1](https://gitlab.com/mfgames-cil/mfgames-io-cil/compare/v1.0.0...v1.0.1) (2021-09-11)
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* updating NuGet description ([2aa87a9](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/2aa87a9115a8baa916e3cc458fc0a8912967b988))
|
- updating NuGet description ([2aa87a9](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/2aa87a9115a8baa916e3cc458fc0a8912967b988))
|
||||||
|
|
||||||
# 1.0.0 (2021-09-11)
|
# 1.0.0 (2021-09-11)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* initial commit ([5adb9cc](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/5adb9ccc52fd75fbd6a7859e1ce221d0d3b9bae7))
|
- initial commit ([5adb9cc](https://gitlab.com/mfgames-cil/mfgames-io-cil/commit/5adb9ccc52fd75fbd6a7859e1ce221d0d3b9bae7))
|
||||||
|
|
132
CODE-OF-CONDUCT.md
Normal file
132
CODE-OF-CONDUCT.md
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||||
|
identity and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
- Demonstrating empathy and kindness toward other people
|
||||||
|
- Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
- Giving and gracefully accepting constructive feedback
|
||||||
|
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
- Focusing on what is best not just for us as individuals, but for the overall
|
||||||
|
community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
- The use of sexualized language or imagery, and sexual attention or advances of
|
||||||
|
any kind
|
||||||
|
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
- Public or private harassment
|
||||||
|
- Publishing others' private information, such as a physical or email address,
|
||||||
|
without their explicit permission
|
||||||
|
- Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement at
|
||||||
|
[INSERT CONTACT METHOD].
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series of
|
||||||
|
actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or permanent
|
||||||
|
ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||||
|
community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.1, available at
|
||||||
|
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by
|
||||||
|
[Mozilla's code of conduct enforcement ladder][mozilla coc].
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
[https://www.contributor-covenant.org/faq][faq]. Translations are available at
|
||||||
|
[https://www.contributor-covenant.org/translations][translations].
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||||
|
[mozilla coc]: https://github.com/mozilla/diversity
|
||||||
|
[faq]: https://www.contributor-covenant.org/faq
|
||||||
|
[translations]: https://www.contributor-covenant.org/translations
|
|
@ -1,5 +1,4 @@
|
||||||
MfGames.IO CIL
|
# MfGames.IO CIL
|
||||||
==============
|
|
||||||
|
|
||||||
This a small collection of classes and extensions to make working with System.IO a little bit easier.
|
This a small collection of classes and extensions to make working with System.IO a little bit easier.
|
||||||
|
|
||||||
|
|
12
flake.lock
12
flake.lock
|
@ -2,11 +2,11 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1638122382,
|
"lastModified": 1659877975,
|
||||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -17,11 +17,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1638198142,
|
"lastModified": 1662019588,
|
||||||
"narHash": "sha256-plU9b8r4St6q4U7VHtG9V7oF8k9fIpfXl/KDaZLuY9k=",
|
"narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8a308775674e178495767df90c419425474582a1",
|
"rev": "2da64a81275b68fdad38af669afeda43d401e94b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
11
flake.nix
11
flake.nix
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
description = "A .NET core library for building tools";
|
description = "A .NET core library for easily building CLI tools";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
|
@ -11,7 +11,14 @@
|
||||||
let pkgs = nixpkgs.legacyPackages.${system};
|
let pkgs = nixpkgs.legacyPackages.${system};
|
||||||
in {
|
in {
|
||||||
devShell = pkgs.mkShell {
|
devShell = pkgs.mkShell {
|
||||||
buildInputs = [ pkgs.dotnet-sdk_5 pkgs.nodejs-16_x pkgs.nixfmt ];
|
buildInputs = [
|
||||||
|
pkgs.dotnet-sdk
|
||||||
|
pkgs.lefthook
|
||||||
|
pkgs.convco
|
||||||
|
pkgs.nodePackages.prettier
|
||||||
|
pkgs.nixfmt
|
||||||
|
pkgs.jq
|
||||||
|
];
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
22
lefthook.yml
Normal file
22
lefthook.yml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
pre-commit:
|
||||||
|
parallel: true
|
||||||
|
commands:
|
||||||
|
dotnet-format:
|
||||||
|
glob: "*.cs"
|
||||||
|
run: dotnet format
|
||||||
|
prettier:
|
||||||
|
run: prettier . --write --loglevel warn
|
||||||
|
nixfmt:
|
||||||
|
run: nixfmt flake.nix
|
||||||
|
|
||||||
|
commit-msg:
|
||||||
|
commands:
|
||||||
|
commit-check:
|
||||||
|
run: convco check -n 1
|
||||||
|
|
||||||
|
skip_output:
|
||||||
|
- meta # Skips lefthook version printing
|
||||||
|
- summary # Skips summary block (successful and failed steps) printing
|
||||||
|
- success # Skips successful steps printing
|
||||||
|
- failure # Skips failed steps printing
|
||||||
|
- execution # Skips printing successfully executed commands and their output (but still prints failed executions)
|
13194
package-lock.json
generated
13194
package-lock.json
generated
File diff suppressed because it is too large
Load diff
23
package.json
23
package.json
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
"name": "mfgames-io-cil",
|
|
||||||
"version": "1.2.3",
|
|
||||||
"private": true,
|
|
||||||
"scripts": {
|
|
||||||
"prepare": "husky install",
|
|
||||||
"build": "dotnet build",
|
|
||||||
"test": "dotnet test"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@commitlint/cli": "^15.0.0",
|
|
||||||
"@commitlint/config-conventional": "^15.0.0",
|
|
||||||
"@semantic-release/changelog": "^6.0.1",
|
|
||||||
"@semantic-release/git": "^10.0.1",
|
|
||||||
"@semantic-release/gitlab": "^7.0.4",
|
|
||||||
"@semantic-release/npm": "^8.0.3",
|
|
||||||
"commitlint-gitlab-ci": "^0.0.4",
|
|
||||||
"husky": "^7.0.2",
|
|
||||||
"semantic-release": "^18.0.1",
|
|
||||||
"semantic-release-dotnet": "^1.0.0",
|
|
||||||
"semantic-release-nuget": "^1.1.1"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,12 +1,13 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
extends: ["@commitlint/config-conventional"],
|
extends: ["@commitlint/config-conventional"],
|
||||||
branches: ["main"],
|
branches: ["main"],
|
||||||
message: "chore(release): v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}",
|
message:
|
||||||
|
"chore(release): v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}",
|
||||||
plugins: [
|
plugins: [
|
||||||
[
|
[
|
||||||
"@semantic-release/commit-analyzer",
|
"@semantic-release/commit-analyzer",
|
||||||
{
|
{
|
||||||
"preset": "conventionalcommits",
|
preset: "conventionalcommits",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"@semantic-release/release-notes-generator",
|
"@semantic-release/release-notes-generator",
|
||||||
|
|
19
scripts/README.md
Normal file
19
scripts/README.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Scripts Directory
|
||||||
|
|
||||||
|
This directory contains the basic scripts for working with the library.
|
||||||
|
|
||||||
|
## `setup.sh`
|
||||||
|
|
||||||
|
This verifies the environment is correct and makes sure everything is configured.
|
||||||
|
|
||||||
|
## `build.sh`
|
||||||
|
|
||||||
|
This builds the project and creates the binaries in debug mode.
|
||||||
|
|
||||||
|
## `test.sh`
|
||||||
|
|
||||||
|
This runs any required tests.
|
||||||
|
|
||||||
|
## `release.sh`
|
||||||
|
|
||||||
|
Intended to run in a CI environment, this creates a NuGet package and publishes it.
|
7
scripts/build.sh
Executable file
7
scripts/build.sh
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
cd $(dirname $0)/..
|
||||||
|
./scripts/setup.sh || exit 1
|
||||||
|
|
||||||
|
echo "$(basename $0): building project"
|
||||||
|
dotnet build
|
4
scripts/format.sh
Executable file
4
scripts/format.sh
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
cd $(dirname $0)/..
|
||||||
|
lefthook run pre-commit
|
50
scripts/release.sh
Executable file
50
scripts/release.sh
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
cd $(dirname $0)/..
|
||||||
|
./scripts/setup.sh || exit 1
|
||||||
|
|
||||||
|
# Verify the input.
|
||||||
|
if [ "x$NUGET_TOKEN" = "x" ]
|
||||||
|
then
|
||||||
|
echo "the environment variable NUGET_TOKEN is not defined"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$NUGET_PUSH_URL" = "x" ]
|
||||||
|
then
|
||||||
|
echo "the environment variable NUGET_PUSH_URL is not defined"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean up everything from the previous runs.
|
||||||
|
echo "$(basename $0): cleaning project"
|
||||||
|
dotnet clean
|
||||||
|
|
||||||
|
# Version the file based on the Git repository.
|
||||||
|
(cd src && dotnet dotnet-gitversion /updateprojectfiles)
|
||||||
|
SEMVER="v$(dotnet gitversion /output json | jq -r .SemVer)"
|
||||||
|
|
||||||
|
if [ "x$SEMVER" = "x" ]
|
||||||
|
then
|
||||||
|
echo "$(basename $0): cannot figure out the semantic version"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build to pick up the new version.
|
||||||
|
echo "$(basename $0): building project $SEMVER"
|
||||||
|
dotnet build
|
||||||
|
|
||||||
|
# Create and publish the NuGet packages.
|
||||||
|
echo "$(basename $0): publishing NuGet package"
|
||||||
|
dotnet pack --include-symbols --include-source
|
||||||
|
dotnet nuget push src/*/bin/Debug/*.nupkg --api-key $NUGET_TOKEN --source $NUGET_PUSH_URL
|
||||||
|
|
||||||
|
# Tag and push, but only if we don't have a tag.
|
||||||
|
if ! git tag | grep $SEMVER >& /dev/null
|
||||||
|
then
|
||||||
|
echo "$(basename $0): tagging and pushing"
|
||||||
|
git tag $SEMVER
|
||||||
|
git push origin $SEMVER
|
||||||
|
else
|
||||||
|
echo "$(basename $0): not tagging, already exists"
|
||||||
|
fi
|
28
scripts/setup.sh
Executable file
28
scripts/setup.sh
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# Normalize our environment.
|
||||||
|
cd $(dirname $0)/..
|
||||||
|
|
||||||
|
# Make sure we have the needed executables installed.
|
||||||
|
for e in dotnet lefthook prettier nixfmt
|
||||||
|
do
|
||||||
|
if ! which $e >& /dev/null
|
||||||
|
then
|
||||||
|
echo "Cannot find '$e' in the path"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Make sure we have lefthook is installed.
|
||||||
|
if [ ! -f .git/hooks/pre-commit ]
|
||||||
|
then
|
||||||
|
echo "$(basename $0): installing lefthook"
|
||||||
|
lefthook install
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure our tools are installed.
|
||||||
|
echo "$(basename $0): install .NET tools"
|
||||||
|
dotnet tool restore
|
||||||
|
|
||||||
|
# Everything is good.
|
||||||
|
exit 0
|
|
@ -1,5 +1,8 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
cd $(dirname $0)/..
|
||||||
|
./scripts/setup.sh || exit 1
|
||||||
|
|
||||||
dotnet test --test-adapter-path:. --logger:"junit;LogFilePath=../artifacts/{assembly}-test-result.xml;MethodFormat=Default;FailureBodyFormat=Verbose" --collect:"XPlat Code Coverage"
|
dotnet test --test-adapter-path:. --logger:"junit;LogFilePath=../artifacts/{assembly}-test-result.xml;MethodFormat=Default;FailureBodyFormat=Verbose" --collect:"XPlat Code Coverage"
|
||||||
dotnet new tool-manifest
|
|
||||||
dotnet tool install dotnet-reportgenerator-globaltool
|
|
||||||
dotnet tool run reportgenerator -reports:tests/*/TestResults/*/coverage.cobertura.xml -targetdir:./coverage "-reporttypes:Cobertura;TextSummary"
|
dotnet tool run reportgenerator -reports:tests/*/TestResults/*/coverage.cobertura.xml -targetdir:./coverage "-reporttypes:Cobertura;TextSummary"
|
||||||
grep "Line coverage" coverage/Summary.txt
|
grep "Line coverage" coverage/Summary.txt
|
Reference in a new issue