Files
Moonlight/Resources/Scripts/buildNuget.sh
ChiaraBm 721570927f Automated nuget package build
So you don't have to do it manually every time
2024-12-01 22:22:07 +01:00

58 lines
1.8 KiB
Bash

#!/bin/bash
set -e
# Note: Run in main directory, i.e. where the Moonlight.sln is
echo "Building nuget packages"
echo "Searching & building project files"
project_files=$(find . -name "*.csproj")
for project in $project_files; do
# Extract project name
project_name=$(basename "$project" .csproj)
# Extract version
project_version=$(grep -oPm1 "(?<=<Version>)[^<]+" "$project")
if [ -z "$project_version" ]; then
echo "No <Version> tag found in $project, skipping."
continue
fi
# Building nuget package
pwd=$(pwd)
project_path=$(dirname $project)
(cd $project_path; dotnet build --configuration Release; dotnet pack --configuration Release --output $pwd/nupkgs)
# Mod nuget package
echo "Modding nuget package"
nugetPackage=$(find $pwd/nupkgs -name "*.nupkg")
unzip -o $nugetPackage -d $pwd/nupkgs/mod
if [ "$project_name" = "Moonlight.ApiServer" ]; then
rm -r $pwd/nupkgs/mod/content
rm -r $pwd/nupkgs/mod/contentFiles
sed -i "/<contentFiles>/,/<\/contentFiles>/d" $pwd/nupkgs/mod/Moonlight.ApiServer.nuspec
fi
if [ "$project_name" = "Moonlight.Client" ]; then
rm -r $pwd/nupkgs/mod/staticwebassets/_framework
sed -i '/<StaticWebAsset Include=.*blazor.webassembly.js.gz.*>/,/<\/StaticWebAsset>/d' $pwd/nupkgs/mod/build/Microsoft.AspNetCore.StaticWebAssets.props
sed -i '/<StaticWebAsset Include=.*blazor.webassembly.js.*>/,/<\/StaticWebAsset>/d' $pwd/nupkgs/mod/build/Microsoft.AspNetCore.StaticWebAssets.props
fi
echo "Repacking nuget package"
rm $nugetPackage
(cd nupkgs/mod/; zip -r -o $nugetPackage *)
mkdir -p $pwd/finalPackages/
mv $nugetPackage $pwd/finalPackages/
echo "Cleaning up"
rm -r $pwd/nupkgs/mod
done