mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-06-05 14:45:28 -04:00
* Updated to net7.0 * Updated GA to .net 7 * Updated System.IO.Abstractions to use New factory. * Converted Regex into SourceGenerator in Parser. * Updated more regex to source generators. * Enabled Nullability and more regex changes throughout codebase. * Parser is 100% GeneratedRegexified * Lots of nullability code * Enabled nullability for all repositories. * Fixed another unit test * Refactored some code around and took care of some todos. * Updating code for nullability and cleaning up methods that aren't used anymore. Refctored all uses of Parser.Normalize() to use new extension * More nullability exercises. 500 warnings to go. * Fixed a bug where custom file uploads for entities wouldn't save in webP. * Nullability is done for all DTOs * Fixed all unit tests and nullability for the project. Only OPDS is left which will be done with an upcoming OPDS enhancement. * Use localization in book service after validating * Code smells * Switched to preview build of swashbuckle for .net7 support * Fixed up merge issues * Disable emulate comic book when on single page reader * Fixed a regression where double page renderer wouldn't layout the images correctly * Updated to swashbuckle which support .net 7 * Fixed a bad GA action * Some code cleanup * More code smells * Took care of most of nullable issues * Fixed a broken test due to having more than one test run in parallel * I'm really not sure why the unit tests are failing or are so extremely slow on .net 7 * Updated all dependencies * Fixed up build and removed hardcoded framework from build scripts. (this merge removes Regex Source generators). Unit tests are completely busted. * Unit tests and code cleanup. Needs shakeout now. * Adjusted Series model since a few fields are not-nullable. Removed dead imports on the project. * Refactored to use Builder pattern for all unit tests. * Switched nullability down to warnings. It wasn't possible to switch due to constraint issues in DB Migration.
150 lines
3.4 KiB
Bash
Executable File
150 lines
3.4 KiB
Bash
Executable File
#! /bin/bash
|
|
set -e
|
|
|
|
outputFolder='_output'
|
|
|
|
CheckRequirements()
|
|
{
|
|
if ! command -v npm &> /dev/null
|
|
then
|
|
echo "Warning!!! npm not found, it is required for building Kavita!"
|
|
fi
|
|
if ! command -v dotnet &> /dev/null
|
|
then
|
|
echo "Warning!!! dotnet not found, it is required for building Kavita!"
|
|
fi
|
|
}
|
|
|
|
ProgressStart()
|
|
{
|
|
echo "Start '$1'"
|
|
}
|
|
|
|
ProgressEnd()
|
|
{
|
|
echo "Finish '$1'"
|
|
}
|
|
|
|
UpdateVersionNumber()
|
|
{
|
|
# TODO: Read from KavitaCommon and update in Info.plist
|
|
if [ "$KAVITAVERSION" != "" ]; then
|
|
echo "Updating Version Info"
|
|
sed -i'' -e "s/<AssemblyVersion>[0-9.*]\+<\/AssemblyVersion>/<AssemblyVersion>$KAVITAVERSION<\/AssemblyVersion>/g" src/Directory.Build.props
|
|
sed -i'' -e "s/<AssemblyConfiguration>[\$()A-Za-z-]\+<\/AssemblyConfiguration>/<AssemblyConfiguration>${BUILD_SOURCEBRANCHNAME}<\/AssemblyConfiguration>/g" src/Directory.Build.props
|
|
sed -i'' -e "s/<string>10.0.0.0<\/string>/<string>$KAVITAVERSION<\/string>/g" macOS/Kavita.app/Contents/Info.plist
|
|
fi
|
|
}
|
|
|
|
Build()
|
|
{
|
|
ProgressStart 'Build'
|
|
|
|
rm -rf $outputFolder
|
|
|
|
slnFile=Kavita.sln
|
|
|
|
dotnet clean $slnFile -c Release
|
|
|
|
if [[ -z "$RID" ]];
|
|
then
|
|
dotnet msbuild -restore $slnFile -p:Configuration=Release -p:Platform="Any CPU"
|
|
else
|
|
dotnet msbuild -restore $slnFile -p:Configuration=Release -p:Platform="Any CPU" -p:RuntimeIdentifiers=$RID
|
|
fi
|
|
|
|
ProgressEnd 'Build'
|
|
}
|
|
|
|
BuildUI()
|
|
{
|
|
ProgressStart 'Building UI'
|
|
echo 'Removing old wwwroot'
|
|
rm -rf API/wwwroot/*
|
|
cd UI/Web/ || exit
|
|
echo 'Installing web dependencies'
|
|
npm ci --legacy-peer-deps
|
|
echo 'Building UI'
|
|
npm run prod
|
|
echo 'Copying back to Kavita wwwroot'
|
|
mkdir -p ../../API/wwwroot
|
|
cp -R dist/* ../../API/wwwroot
|
|
cd ../../ || exit
|
|
ProgressEnd 'Building UI'
|
|
}
|
|
|
|
Package()
|
|
{
|
|
local runtime="$1"
|
|
local lOutputFolder=../_output/"$runtime"/Kavita
|
|
|
|
ProgressStart "Creating $runtime Package"
|
|
|
|
# TODO: Use no-restore? Because Build should have already done it for us
|
|
echo "Building"
|
|
cd API
|
|
echo dotnet publish -c Release --self-contained --runtime $runtime -o "$lOutputFolder"
|
|
dotnet publish -c Release --self-contained --runtime $runtime -o "$lOutputFolder"
|
|
|
|
echo "Recopying wwwroot due to bug"
|
|
cp -R ./wwwroot/* $lOutputFolder/wwwroot
|
|
|
|
echo "Copying Install information"
|
|
cp ../INSTALL.txt "$lOutputFolder"/README.txt
|
|
|
|
echo "Copying LICENSE"
|
|
cp ../LICENSE "$lOutputFolder"/LICENSE.txt
|
|
|
|
echo "Renaming API -> Kavita"
|
|
if [ $runtime == "win-x64" ] || [ $runtime == "win-x86" ]
|
|
then
|
|
mv "$lOutputFolder"/API.exe "$lOutputFolder"/Kavita.exe
|
|
else
|
|
mv "$lOutputFolder"/API "$lOutputFolder"/Kavita
|
|
fi
|
|
|
|
echo "Copying appsettings.json"
|
|
cp config/appsettings.json $lOutputFolder/config/appsettings.json
|
|
echo "Removing appsettings.Development.json"
|
|
rm $lOutputFolder/config/appsettings.Development.json
|
|
|
|
echo "Creating tar"
|
|
cd ../$outputFolder/"$runtime"/
|
|
tar -czvf ../kavita-$runtime.tar.gz Kavita
|
|
|
|
|
|
ProgressEnd "Creating $runtime Package"
|
|
|
|
|
|
}
|
|
|
|
|
|
RID="$1"
|
|
|
|
CheckRequirements
|
|
BuildUI
|
|
Build
|
|
|
|
dir=$PWD
|
|
|
|
if [[ -z "$RID" ]];
|
|
then
|
|
Package "win-x64"
|
|
cd "$dir"
|
|
Package "win-x86"
|
|
cd "$dir"
|
|
Package "linux-x64"
|
|
cd "$dir"
|
|
Package "linux-arm"
|
|
cd "$dir"
|
|
Package "linux-arm64"
|
|
cd "$dir"
|
|
Package "linux-musl-x64"
|
|
cd "$dir"
|
|
Package "osx-x64"
|
|
cd "$dir"
|
|
else
|
|
Package "$RID"
|
|
cd "$dir"
|
|
fi
|