mfgames-cil/Justfile

112 lines
3.2 KiB
Makefile

set dotenv-load := true
export DOTNET_CLI_TELEMETRY_OPTOUT := "1"
@_default:
just --list
# Cleans out the packages.
clean:
dotnet clean -v:m
# Builds all of the components of this repository.
build:
dotnet build
# Runs all the known tests in the repository.
test: test-tool test-packages
test-tool:
dotnet build examples/SampleTool/SampleTool.csproj
dotnet run --no-build --project examples/SampleTool/SampleTool.csproj -- table
dotnet run --no-build --project examples/SampleTool/SampleTool.csproj -- log
test-packages:
#!/usr/bin/env bash
set -euxo pipefail
dotnet tool restore
dotnet test \
--test-adapter-path:. \
--logger:"junit;LogFilePath=../artifacts/{assembly}-test-result.xml;MethodFormat=Default;FailureBodyFormat=Verbose" \
--collect:"XPlat Code Coverage" \
-v:q --nologo || exit 1
dotnet tool run reportgenerator \
-reports:tests/*/TestResults/*/coverage.cobertura.xml \
-targetdir:./coverage \
"-reporttypes:Cobertura;TextSummary"
if [ -f coverage/Summary.txt ];then grep "Line coverage" coverage/Summary.txt; fi
# 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
# Performs a release on all the packages.
release: release-setup release-nuget release-tag
# Makes sure all the release environment variables are set up.
release-setup: restore-tools restore-packages
#!/usr/bin/env bash
set -euxo pipefail
# Verify that all the variables are set.
if [ "x$GITEA_TOKEN" = "x" ]; then
echo "the environment variable GITEA_TOKEN is not defined"
exit 1
fi
# Creates and pushes the NuGet packages.
release-nuget: release-setup
# Rebuild the package in release mode.
dotnet build --configuration Release
dotnet pack \
-p:IncludeSymbols=true \
-p:SymbolPackageFormat=snupkg \
--configuration Release
find -name *.nupkg -o -name *.snupkg
# Publish the packages.
dotnet nuget remove source publish >&/dev/null || true
dotnet nuget add source \
--name publish \
--username dmoonfire \
--password $GITEA_TOKEN \
https://src.mfgames.com/api/packages/mfgames-cil/nuget/index.json \
--store-password-in-clear-text
dotnet nuget push --skip-duplicate --source publish src/*/bin/Debug/*.nupkg
dotnet nuget remove source publish || true
# Tags all the libraries for the release.
release-tag: release-setup
#!/usr/bin/env bash
set -euxo pipefail
git remote add publish https://dmoonfire:$GITEA_TOKEN@src.mfgames.com/mfgames-cil/$(basename $(git config --get remote.origin.url))
for i in src/*/GitVersion.yml
do
# Move into the proper directory.
dir=$(dirname $i)
pkg=$(basename $dir)
pushd $dir
# Check the version and see if we've tagged it already.
tag="$pkg-$(dotnet gitversion /output json | jq -r .SemVer)"
echo "tagging $pkg with $tag"
git tag $tag
git push publish $tag
# Move back so we can finish.
popd
done