refactor!: preparing for mono repository
This commit is contained in:
parent
a2619d4ed0
commit
65fafcc4da
|
@ -3,7 +3,7 @@
|
||||||
"isRoot": true,
|
"isRoot": true,
|
||||||
"tools": {
|
"tools": {
|
||||||
"gitversion.tool": {
|
"gitversion.tool": {
|
||||||
"version": "5.9.0",
|
"version": "5.12.0",
|
||||||
"commands": [
|
"commands": [
|
||||||
"dotnet-gitversion"
|
"dotnet-gitversion"
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,36 +1,36 @@
|
||||||
clone:
|
# clone:
|
||||||
git:
|
# git:
|
||||||
image: woodpeckerci/plugin-git
|
# image: woodpeckerci/plugin-git
|
||||||
settings:
|
# settings:
|
||||||
tags: true
|
# tags: true
|
||||||
|
|
||||||
pipeline:
|
# pipeline:
|
||||||
build:
|
# build:
|
||||||
image: registry.gitlab.com/dmoonfire/nix-flake-docker:latest
|
# image: registry.gitlab.com/dmoonfire/nix-flake-docker:latest
|
||||||
commands:
|
# commands:
|
||||||
- nix develop --command scripts/build.sh
|
# - nix develop --command scripts/build.sh
|
||||||
when:
|
# when:
|
||||||
event: [push, pull_request, tag]
|
# event: [push, pull_request, tag]
|
||||||
tag: v*
|
# tag: v*
|
||||||
|
|
||||||
test:
|
# test:
|
||||||
image: registry.gitlab.com/dmoonfire/nix-flake-docker:latest
|
# image: registry.gitlab.com/dmoonfire/nix-flake-docker:latest
|
||||||
commands:
|
# commands:
|
||||||
- nix develop --command scripts/test.sh
|
# - nix develop --command scripts/test.sh
|
||||||
when:
|
# when:
|
||||||
event: [push, pull_request]
|
# event: [push, pull_request]
|
||||||
#paths:
|
# #paths:
|
||||||
# - ./**/*test-result.xml
|
# # - ./**/*test-result.xml
|
||||||
# - ./coverage/Cobertura.xml
|
# # - ./coverage/Cobertura.xml
|
||||||
# - ./coverage/Summary.*
|
# # - ./coverage/Summary.*
|
||||||
# - ./**/*.nupkg
|
# # - ./**/*.nupkg
|
||||||
|
|
||||||
release-main:
|
# release-main:
|
||||||
image: registry.gitlab.com/dmoonfire/nix-flake-docker:latest
|
# image: registry.gitlab.com/dmoonfire/nix-flake-docker:latest
|
||||||
commands:
|
# commands:
|
||||||
- nix develop --command scripts/release.sh
|
# - nix develop --command scripts/release.sh
|
||||||
secrets:
|
# secrets:
|
||||||
- gitea_token
|
# - gitea_token
|
||||||
when:
|
# when:
|
||||||
event: push
|
# event: push
|
||||||
branch: main
|
# branch: main
|
||||||
|
|
29
Justfile
Normal file
29
Justfile
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
@_default:
|
||||||
|
just --choose
|
||||||
|
|
||||||
|
# Builds all of the components of this repository.
|
||||||
|
build:
|
||||||
|
dotnet build
|
||||||
|
|
||||||
|
# Runs all the known tests in the repository.
|
||||||
|
test: restore-tools
|
||||||
|
dotnet test \
|
||||||
|
--test-adapter-path:. \
|
||||||
|
--logger:"junit;LogFilePath=../artifacts/{assembly}-test-result.xml;MethodFormat=Default;FailureBodyFormat=Verbose" \
|
||||||
|
--collect:"XPlat Code Coverage"
|
||||||
|
dotnet tool run reportgenerator \
|
||||||
|
-reports:tests/*/TestResults/*/coverage.cobertura.xml \
|
||||||
|
-targetdir:./coverage \
|
||||||
|
"-reporttypes:Cobertura;TextSummary"
|
||||||
|
grep "Line coverage" coverage/Summary.txt
|
||||||
|
|
||||||
|
# Restores all the tools and NuGet packages.
|
||||||
|
restore: restore-tools restore-packages
|
||||||
|
|
||||||
|
# Restores all the dotnet tools used.
|
||||||
|
restore-tools:
|
||||||
|
dotnet tool restore
|
||||||
|
|
||||||
|
# Restores all the NuGet packages.
|
||||||
|
restore-packages:
|
||||||
|
dotnet restore
|
|
@ -1,6 +1,6 @@
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
|
|
||||||
Copyright © 2021-2022 Dylan Moonfire
|
Copyright © 2021-2023 Dylan Moonfire
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
Permission is hereby granted, free of charge, to any person
|
||||||
obtaining a copy of this software and associated documentation
|
obtaining a copy of this software and associated documentation
|
||||||
|
|
21
LICENSE.txt
21
LICENSE.txt
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) Moonfire Games
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
|
@ -1,16 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<packageSources>
|
<packageSources>
|
||||||
<clear />
|
<clear />
|
||||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||||
<add key="mfgames.com" value="https://src.mfgames.com/api/packages/mfgames-cil/nuget/index.json" protocolVersion="3" />
|
|
||||||
</packageSources>
|
</packageSources>
|
||||||
<packageSourceMapping>
|
<packageSourceMapping>
|
||||||
<packageSource key="nuget.org">
|
<packageSource key="nuget.org">
|
||||||
<package pattern="*" />
|
<package pattern="*" />
|
||||||
</packageSource>
|
</packageSource>
|
||||||
<packageSource key="mfgames.com">
|
|
||||||
<package pattern="MfGames.*" />
|
|
||||||
</packageSource>
|
|
||||||
</packageSourceMapping>
|
</packageSourceMapping>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
in {
|
in {
|
||||||
devShell = pkgs.mkShell {
|
devShell = pkgs.mkShell {
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[ pkgs.dotnet-sdk pkgs.lefthook pkgs.convco pkgs.nixfmt pkgs.jq ];
|
[ pkgs.dotnet-sdk pkgs.lefthook pkgs.convco pkgs.nixfmt pkgs.jq pkgs.just ];
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
cd $(dirname $0)/..
|
|
||||||
./scripts/setup.sh || exit 1
|
|
||||||
|
|
||||||
echo "$(basename $0): building project"
|
|
||||||
dotnet build
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
cd $(dirname $0)/..
|
|
||||||
lefthook run pre-commit
|
|
|
@ -1,28 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
# Normalize our environment.
|
|
||||||
cd $(dirname $0)/..
|
|
||||||
|
|
||||||
# Make sure we have the needed executables installed.
|
|
||||||
for e in dotnet lefthook 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,12 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
cd $(dirname $0)/..
|
|
||||||
|
|
||||||
if ls ./tests/*/*.csproj >& /dev/null
|
|
||||||
then
|
|
||||||
./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 tool run reportgenerator -reports:tests/*/TestResults/*/coverage.cobertura.xml -targetdir:./coverage "-reporttypes:Cobertura;TextSummary"
|
|
||||||
grep "Line coverage" coverage/Summary.txt
|
|
||||||
fi
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
cd $(dirname $0)/..
|
|
||||||
git pull template main --no-rebase
|
|
|
@ -1,14 +0,0 @@
|
||||||
<Project>
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
|
||||||
<Authors>Dylan Moonfire</Authors>
|
|
||||||
<Company>Moonfire Games</Company>
|
|
||||||
<RepositoryUrl>https://gitlab.com/mfgames-cil/mfgames-toolbuilder-cil</RepositoryUrl>
|
|
||||||
<RepositoryType>Git</RepositoryType>
|
|
||||||
<PackageTags>cli</PackageTags>
|
|
||||||
<PackageProjectUrl>https://gitlab.com/mfgames-cil/mfgames-toolbuilder-cil</PackageProjectUrl>
|
|
||||||
<PackageLicense>MIT</PackageLicense>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
13
src/MfGames.ToolBuilder.Tables/GitVersion.yml
Normal file
13
src/MfGames.ToolBuilder.Tables/GitVersion.yml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
mode: ContinuousDelivery
|
||||||
|
increment: Inherit
|
||||||
|
continuous-delivery-fallback-tag: ci
|
||||||
|
|
||||||
|
major-version-bump-message: "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\\([\\w\\s-]*\\))?(!:|:.*\\n\\n((.+\\n)+\\n)?BREAKING CHANGE:\\s.+)"
|
||||||
|
minor-version-bump-message: "^(feat)(\\([\\w\\s-]*\\))?:"
|
||||||
|
patch-version-bump-message: "^(build|chore|ci|docs|fix|perf|refactor|revert|style|test)(\\([\\w\\s-]*\\))?:"
|
||||||
|
|
||||||
|
assembly-versioning-scheme: MajorMinorPatch
|
||||||
|
assembly-file-versioning-scheme: MajorMinorPatch
|
||||||
|
assembly-informational-format: "{InformationalVersion}"
|
||||||
|
|
||||||
|
tag-prefix: "MfGames.ToolBuilder.Tables-"
|
|
@ -7,6 +7,17 @@
|
||||||
<Description>Provides a tool service for creating tools that output tabular data to the console.</Description>
|
<Description>Provides a tool service for creating tools that output tabular data to the console.</Description>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
<Authors>Dylan Moonfire</Authors>
|
||||||
|
<Company>Moonfire Games</Company>
|
||||||
|
<RepositoryUrl>https://src.mfgames.com/mfgames-cil/mfgames-cil</RepositoryUrl>
|
||||||
|
<RepositoryType>Git</RepositoryType>
|
||||||
|
<PackageTags>cli</PackageTags>
|
||||||
|
<PackageProjectUrl>https://src.mfgames.com/mfgames-cil/mfgames-cil</PackageProjectUrl>
|
||||||
|
<PackageLicense>MIT</PackageLicense>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- System.CommandLine is pre-release and will be for a while. -->
|
<!-- System.CommandLine is pre-release and will be for a while. -->
|
||||||
<NoWarn>$(NoWarn);NU5104</NoWarn>
|
<NoWarn>$(NoWarn);NU5104</NoWarn>
|
||||||
|
@ -17,6 +28,10 @@
|
||||||
<PackageReference Include="ConsoleTableExt" Version="3.2.0" />
|
<PackageReference Include="ConsoleTableExt" Version="3.2.0" />
|
||||||
<PackageReference Include="CsvHelper" Version="30.0.1" />
|
<PackageReference Include="CsvHelper" Version="30.0.1" />
|
||||||
<PackageReference Include="FluentResults" Version="3.15.2" />
|
<PackageReference Include="FluentResults" Version="3.15.2" />
|
||||||
|
<PackageReference Include="GitVersion.MsBuild" Version="5.12.0">
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="Glob" Version="1.1.9" />
|
<PackageReference Include="Glob" Version="1.1.9" />
|
||||||
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
|
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
|
|
@ -10,4 +10,4 @@ assembly-versioning-scheme: MajorMinorPatch
|
||||||
assembly-file-versioning-scheme: MajorMinorPatch
|
assembly-file-versioning-scheme: MajorMinorPatch
|
||||||
assembly-informational-format: "{InformationalVersion}"
|
assembly-informational-format: "{InformationalVersion}"
|
||||||
|
|
||||||
tag-prefix: "[vV]"
|
tag-prefix: "MfGames.ToolBuilder-"
|
|
@ -1,22 +1,34 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<Description>A framework for easily creating command line tools using System.CommandLine, Autofac, and Serilog.</Description>
|
<Description>A framework for easily creating command line tools using System.CommandLine, Autofac, and Serilog.</Description>
|
||||||
|
<GitVersionUseSolutionDir>True</GitVersionUseSolutionDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
<Authors>Dylan Moonfire</Authors>
|
||||||
|
<Company>Moonfire Games</Company>
|
||||||
|
<RepositoryUrl>https://src.mfgames.com/mfgames-cil/mfgames-cil</RepositoryUrl>
|
||||||
|
<RepositoryType>Git</RepositoryType>
|
||||||
|
<PackageTags>cli</PackageTags>
|
||||||
|
<PackageProjectUrl>https://src.mfgames.com/mfgames-cil/mfgames-cil</PackageProjectUrl>
|
||||||
|
<PackageLicense>MIT</PackageLicense>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- System.CommandLine is pre-release and will be for a while. -->
|
<!-- System.CommandLine is pre-release and will be for a while. -->
|
||||||
<NoWarn>$(NoWarn);NU5104</NoWarn>
|
<NoWarn>$(NoWarn);NU5104</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Autofac" Version="7.0.1" />
|
<PackageReference Include="Autofac" Version="7.0.1" />
|
||||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
|
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
|
||||||
<PackageReference Include="ConsoleTableExt" Version="3.2.0" />
|
<PackageReference Include="ConsoleTableExt" Version="3.2.0" />
|
||||||
<PackageReference Include="CsvHelper" Version="30.0.1" />
|
<PackageReference Include="CsvHelper" Version="30.0.1" />
|
||||||
<PackageReference Include="FluentResults" Version="3.15.2" />
|
<PackageReference Include="FluentResults" Version="3.15.2" />
|
||||||
|
<PackageReference Include="GitVersion.MsBuild" Version="5.12.0">
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="Glob" Version="1.1.9" />
|
<PackageReference Include="Glob" Version="1.1.9" />
|
||||||
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
|
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
|
||||||
<PackageReference Include="MfGames.IO" Version="1.2.8" />
|
<PackageReference Include="MfGames.IO" Version="1.2.8" />
|
||||||
|
@ -48,5 +60,4 @@
|
||||||
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
|
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
|
||||||
<PackageReference Include="System.CommandLine.Hosting" Version="0.4.0-alpha.22272.1" />
|
<PackageReference Include="System.CommandLine.Hosting" Version="0.4.0-alpha.22272.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -4,26 +4,6 @@ _An opinionated library for easily creating command-line tools in C#._
|
||||||
|
|
||||||
MfGames.ToolBuilder is a library to encapsulate the setup and running of tools, CLI components arranged with verbs (like `git`). It includes some opinionated decisions on default setup.
|
MfGames.ToolBuilder is a library to encapsulate the setup and running of tools, CLI components arranged with verbs (like `git`). It includes some opinionated decisions on default setup.
|
||||||
|
|
||||||
## Building
|
|
||||||
|
|
||||||
To make sure the environment is correctly set up for build:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
./scripts/setup.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
To build the project:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
./scripts/build.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
To test the project:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
./scripts/test.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
This library is built on top of [System.CommandLine](https://github.com/dotnet/command-line-api) and .NET 6 generic hosting. The commands are combined together using dependency injection (see below) which allows for them to be included as parameters for the constructor or dynamically discovered.
|
This library is built on top of [System.CommandLine](https://github.com/dotnet/command-line-api) and .NET 6 generic hosting. The commands are combined together using dependency injection (see below) which allows for them to be included as parameters for the constructor or dynamically discovered.
|
|
@ -1 +0,0 @@
|
||||||
# Source Directories
|
|
Loading…
Reference in a new issue