diff --git a/.gitignore b/.gitignore index f80c762de..59b1114f5 100644 --- a/.gitignore +++ b/.gitignore @@ -451,4 +451,6 @@ appsettings.json cache/ /API/wwwroot/ /API/cache/ -/API/temp/ \ No newline at end of file +/API/temp/ +_temp/ +_output/ \ No newline at end of file diff --git a/API/API.csproj b/API/API.csproj index b3ac07324..0a8cfeb3b 100644 --- a/API/API.csproj +++ b/API/API.csproj @@ -16,8 +16,8 @@ - - + + all diff --git a/INSTALL.txt b/INSTALL.txt new file mode 100644 index 000000000..5d052dccd --- /dev/null +++ b/INSTALL.txt @@ -0,0 +1,4 @@ +How to Install +1. Unzip the archive to a directory that is writable. If on windows, do not place in Program Files +2. Open appsettings.json and modify TokenKey to a random string ideally generated from https://passwordsgenerator.net/ +3. Run Kavita executable \ No newline at end of file diff --git a/README.md b/README.md index 9a8dee63e..607bd1f04 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,11 @@ Think: ***Plex but for Manga.*** ## How to Deploy -* Build kavita-webui via ng build --prod. The dest should be placed in the API/wwwroot directory -* Run publish command +- Run build.sh and pass the Runtime Identifier for your OS or just build.sh for all supported RIDs. ## How to install 1. Unzip the archive for your target OS 2. Place in a directory that is writable. If on windows, do not place in Program Files 3. Open appsettings.json and modify TokenKey to a random string ideally generated from [https://passwordsgenerator.net/](https://passwordsgenerator.net/) -4. Run API.exe +4. Run Kavita diff --git a/build.sh b/build.sh new file mode 100644 index 000000000..22a8d09fe --- /dev/null +++ b/build.sh @@ -0,0 +1,107 @@ +#! /bin/bash +set -e + +outputFolder='_output' + +ProgressStart() +{ + echo "Start '$1'" +} + +ProgressEnd() +{ + echo "Finish '$1'" +} + +UpdateVersionNumber() +{ + if [ "$KAVITAVERSION" != "" ]; then + echo "Updating Version Info" + sed -i'' -e "s/[0-9.*]\+<\/AssemblyVersion>/$KAVITAVERSION<\/AssemblyVersion>/g" src/Directory.Build.props + sed -i'' -e "s/[\$()A-Za-z-]\+<\/AssemblyConfiguration>/${BUILD_SOURCEBRANCHNAME}<\/AssemblyConfiguration>/g" src/Directory.Build.props +# sed -i'' -e "s/10.0.0.0<\/string>/$KAVITAVERSION<\/string>/g" macOS/Kavita.app/Contents/Info.plist + fi +} + +Build() +{ + ProgressStart 'Build' + + rm -rf $outputFolder + + slnFile=Kavita.sln + + dotnet clean $slnFile -c Debug + 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' + cd ../kavita-webui/ || exit + npm install + npm run prod + cd ../kavita/ || exit + ProgressEnd 'Building UI' +} + +Package() +{ + local framework="$1" + local runtime="$2" + local lOutputFolder=../_output/"$runtime"/Kavita + + ProgressStart "Creating $runtime Package for $framework" + + BuildUI + + echo "Building" + cd API + echo dotnet publish -c release --self-contained --runtime $runtime -o "$lOutputFolder" --framework $framework + dotnet publish -c release --self-contained --runtime $runtime -o "$lOutputFolder" --framework $framework + + echo "Copying Install information" + cp ../INSTALL.txt "$lOutputFolder"/README.txt + + echo "Renaming API -> Kavita" + mv "$lOutputFolder"/API "$lOutputFolder"/Kavita + + echo "Creating tar" + cd ../$outputFolder/"$runtime"/ + tar -czvf ../kavita-$runtime.tar.gz Kavita + + + ProgressEnd "Creating $runtime Package for $framework" + + +} + + +#UpdateVersionNumber + +RID="$1" + +Build + +if [[ -z "$RID" ]]; +then + Package "net5.0" "win-x64" + Package "net5.0" "win-x86" + Package "net5.0" "linux-x64" + Package "net5.0" "linux-musl-x64" + Package "net5.0" "osx-x64" +else + Package "net5.0" "$RID" +fi + + +