mirror of
https://github.com/gotson/komga.git
synced 2026-05-09 05:10:19 +02:00
Compare commits
No commits in common. "master" and "v1.2.1" have entirely different histories.
904 changed files with 50114 additions and 102872 deletions
11
.github/ISSUE_TEMPLATE/config.yml
vendored
11
.github/ISSUE_TEMPLATE/config.yml
vendored
|
|
@ -1,11 +1,8 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 💡️Feature idea
|
||||
url: https://github.com/gotson/komga/discussions/new?category=ideas
|
||||
about: Suggest a feature to improve Komga
|
||||
- name: 🖥️ Komga website
|
||||
url: https://komga.org/docs/faq
|
||||
url: https://komga.org/faq/
|
||||
about: Guides, troubleshooting, and answers to common questions
|
||||
- name: ⚠️ Mihon extension
|
||||
url: https://github.com/keiyoushi/extensions-source
|
||||
about: Issues and requests about the Mihon extension should be opened in the keiyoushi/extensions repository instead
|
||||
- name: ⚠️ Tachiyomi extension
|
||||
url: https://github.com/tachiyomiorg/tachiyomi-extensions/issues/new/choose
|
||||
about: Issues and requests about the Tachiyomi extension should be opened in the tachiyomi-extensions repository instead
|
||||
|
|
|
|||
38
.github/ISSUE_TEMPLATE/report_feature.yml
vendored
Normal file
38
.github/ISSUE_TEMPLATE/report_feature.yml
vendored
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
name: ⭐ Feature request
|
||||
description: Suggest a feature to improve Komga
|
||||
labels:
|
||||
- triage
|
||||
body:
|
||||
|
||||
- type: textarea
|
||||
id: feature-description
|
||||
attributes:
|
||||
label: Describe your suggested feature
|
||||
description: How can Komga be improved?
|
||||
placeholder: |
|
||||
Example:
|
||||
"It should work like this..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: other-details
|
||||
attributes:
|
||||
label: Other details
|
||||
placeholder: |
|
||||
Additional details and attachments.
|
||||
|
||||
- type: checkboxes
|
||||
id: acknowledgements
|
||||
attributes:
|
||||
label: Acknowledgements
|
||||
description: Read this carefully, we will close and ignore your issue if you skimmed through this.
|
||||
options:
|
||||
- label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
|
||||
required: true
|
||||
- label: I have written a short but informative title.
|
||||
required: true
|
||||
- label: I have updated the app to the latest version.
|
||||
required: true
|
||||
- label: I will fill out all of the requested information in this form.
|
||||
required: true
|
||||
24
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
24
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
|
|
@ -44,9 +44,7 @@ body:
|
|||
attributes:
|
||||
label: Logs
|
||||
description: |
|
||||
:warning: **Do not share logs with Kobo Sync information publicly !**
|
||||
|
||||
If applicable, add an excerpt of the log file (max 20 lines) _AND_ attach the complete log file or a link to a gist/pastebin containing the log file ([where to find the logs](https://komga.org/docs/faq#where-can-i-find-the-log-files)).
|
||||
If applicable, add an excerpt of the log file (max 20 lines) _AND_ attach the complete log file or a link to a gist/pastebin containing the log file ([where to find the logs](https://komga.org/faq/#where-can-i-find-the-log-files)).
|
||||
placeholder: |
|
||||
You can paste the logs in pure text or upload it as an attachment.
|
||||
|
||||
|
|
@ -56,7 +54,7 @@ body:
|
|||
label: Komga version
|
||||
description: You can find your Komga version at the bottom of the side bar.
|
||||
placeholder: |
|
||||
Example: "1.7.1"
|
||||
Example: "0.143.0"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
|
@ -69,20 +67,6 @@ body:
|
|||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Installation method
|
||||
description: How did you install Komga?
|
||||
multiple: false
|
||||
options:
|
||||
- jar
|
||||
- Docker
|
||||
- Microsoft Store
|
||||
- from download.komga.org
|
||||
- other (please provide more details below)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: other-details
|
||||
attributes:
|
||||
|
|
@ -96,11 +80,11 @@ body:
|
|||
label: Acknowledgements
|
||||
description: Read this carefully, we will close and ignore your issue if you skimmed through this.
|
||||
options:
|
||||
- label: I have searched the existing issues (open AND closed) and this is a new ticket, **NOT** a duplicate or related to another open issue.
|
||||
- label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
|
||||
required: true
|
||||
- label: I have written a short but informative title.
|
||||
required: true
|
||||
- label: I have checked the [FAQ](https://komga.org/docs/faq).
|
||||
- label: I have checked the [FAQ](https://komga.org/faq/).
|
||||
required: true
|
||||
- label: I have updated the app to the latest version.
|
||||
required: true
|
||||
|
|
|
|||
18
.github/dependabot.yml
vendored
18
.github/dependabot.yml
vendored
|
|
@ -3,35 +3,17 @@ updates:
|
|||
- package-ecosystem: "npm"
|
||||
directory: "/komga-webui"
|
||||
open-pull-requests-limit: 0
|
||||
commit-message:
|
||||
prefix: "deps(webui)"
|
||||
# include: "scope"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/komga"
|
||||
open-pull-requests-limit: 0
|
||||
commit-message:
|
||||
prefix: "deps(komga)"
|
||||
# include: "scope"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/komga-tray"
|
||||
open-pull-requests-limit: 0
|
||||
commit-message:
|
||||
prefix: "deps(komga-tray)"
|
||||
# include: "scope"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
commit-message:
|
||||
prefix: "deps(ci)"
|
||||
# include: "scope"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
|
|
|||
13
.github/readme-images/jetbrains.svg
vendored
13
.github/readme-images/jetbrains.svg
vendored
|
|
@ -1,13 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="298" height="64" fill="none" viewBox="0 0 298 64">
|
||||
<defs>
|
||||
<linearGradient id="a" x1=".850001" x2="62.62" y1="62.72" y2="1.81" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF9419"/>
|
||||
<stop offset=".43" stop-color="#FF021D"/>
|
||||
<stop offset=".99" stop-color="#E600FF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<path fill="#000" d="M86.4844 40.5858c0 .8464-.1792 1.5933-.5377 2.2505-.3585.6573-.8564 1.1651-1.5137 1.5236-.6572.3585-1.3941.5378-2.2406.5378H78v6.1044h5.0787c1.912 0 3.6248-.4282 5.1484-1.2846 1.5236-.8564 2.7186-2.0415 3.585-3.5452.8663-1.5037 1.3045-3.1966 1.3045-5.0886V21.0178h-6.6322v19.568Zm17.8556-1.8224h13.891v-5.6065H104.34v-6.3633h15.355v-5.7758H97.8766v29.9743h22.2464v-5.7757H104.34v-6.453Zm17.865-11.8005h8.882v24.0193h6.633V26.9629h8.842v-5.9451h-24.367v5.9551l.01-.01Zm47.022 9.0022c-.517-.2788-1.085-.4879-1.673-.6472.449-.1295.877-.2888 1.275-.488 1.096-.5676 1.962-1.3643 2.579-2.39.618-1.0257.936-2.2007.936-3.5351 0-1.5237-.418-2.8879-1.244-4.0929-.827-1.195-1.992-2.131-3.486-2.8082-1.494-.6672-3.206-1.0058-5.118-1.0058h-13.315v29.9743h13.574c2.011 0 3.804-.3485 5.387-1.0556 1.573-.707 2.798-1.6829 3.675-2.9476.866-1.2547 1.304-2.6887 1.304-4.302 0-1.4837-.338-2.8082-1.026-3.9833-.687-1.175-1.633-2.0812-2.858-2.7285l-.01.0099Zm-13.603-9.9184h5.886c.816 0 1.533.1494 2.161.4382.627.2888 1.115.707 1.464 1.2547.348.5378.527 1.1751.527 1.9021 0 .7269-.179 1.414-.527 1.9817-.349.5676-.837.9958-1.464 1.3045-.628.3087-1.345.4581-2.161.4581h-5.886v-7.3492.0099Zm10.138 18.134c-.378.5676-.916 1.0058-1.603 1.3145-.697.3087-1.484.4581-2.39.4581h-6.145v-7.6878h6.145c.886 0 1.673.1693 2.37.4979.687.3286 1.235.7867 1.613 1.3842.378.5975.578 1.2747.578 2.0414 0 .7668-.19 1.4241-.568 1.9917Zm29.596-5.3077c1.663-.7967 2.947-1.922 3.864-3.3659.916-1.444 1.374-3.117 1.374-5.0289 0-1.912-.448-3.5253-1.344-4.9592-.897-1.434-2.171-2.5394-3.814-3.3261-1.644-.7867-3.546-1.1751-5.717-1.1751h-13.124v29.9743h6.642V40.0779h4.322l6.084 10.9142h7.578l-6.851-11.7208c.339-.1195.677-.249.996-.3983h-.01Zm-2.151-6.1244c-.369.6274-.896 1.1154-1.583 1.444-.688.3386-1.494.5079-2.42.5079h-5.975v-8.2953h5.975c.926 0 1.732.1693 2.42.4979.687.3287 1.214.8166 1.583 1.434.368.6174.558 1.3544.558 2.1908 0 .8365-.19 1.5734-.558 2.2008v.0199Zm20.594-11.7308-10.706 29.9743h6.742l2.121-6.6122h11.114l2.27 6.6122h6.612L220.99 21.0178h-7.189Zm-.339 18.3431 3.445-10.5756.409-1.922.408 1.922 3.685 10.5756h-7.947Zm20.693 11.6312h6.851V21.0178h-6.851v29.9743Zm31.02-9.6993-12.896-20.275h-6.463v29.9743h6.055V30.7172l12.826 20.2749h6.533V21.0178h-6.055v20.275Zm31.528-3.3559c-.647-1.2448-1.564-2.2904-2.729-3.1369-1.165-.8464-2.509-1.4041-4.023-1.6929l-5.098-1.0456c-.797-.1892-1.434-.5178-1.902-.9958-.469-.478-.708-1.0755-.708-1.7825 0-.6473.17-1.205.518-1.683.339-.478.827-.8464 1.444-1.1153.618-.2689 1.335-.3983 2.151-.3983.817 0 1.554.1394 2.181.4182.627.2788 1.115.6672 1.464 1.1751s.528 1.0755.528 1.7228h6.642c-.04-1.7427-.528-3.2863-1.444-4.6207-.916-1.3443-2.201-2.3899-3.834-3.1468-1.633-.7568-3.505-1.1352-5.597-1.1352-2.091 0-3.943.3884-5.566 1.1751-1.623.7867-2.898 1.8721-3.804 3.2663-.906 1.3941-1.364 2.9775-1.364 4.76 0 1.444.288 2.7485.876 3.9036.587 1.1652 1.414 2.1311 2.479 2.8979 1.076.7668 2.311 1.3045 3.725 1.6033l5.397 1.1153c.886.2091 1.584.5975 2.101 1.1551.518.5577.767 1.2448.767 2.0813 0 .6672-.189 1.2747-.567 1.8025-.379.5277-.907.936-1.584 1.2248-.677.2888-1.474.4282-2.39.4282-.916 0-1.782-.1593-2.529-.478-.747-.3186-1.325-.7767-1.733-1.3742-.418-.5875-.617-1.2747-.617-2.0414h-6.642c.029 1.8721.527 3.5152 1.513 4.9492.976 1.424 2.32 2.5394 4.033 3.336 1.713.7967 3.675 1.195 5.886 1.195 2.21 0 4.202-.4083 5.915-1.2249 1.723-.8165 3.057-1.9418 4.023-3.3758.966-1.434 1.444-3.0572 1.444-4.8696 0-1.4838-.329-2.848-.976-4.1028l.02.01Z"/>
|
||||
<path fill="url(#a)" d="M20.34 3.66 3.66 20.34C1.32 22.68 0 25.86 0 29.18V59c0 2.76 2.24 5 5 5h29.82c3.32 0 6.49-1.32 8.84-3.66l16.68-16.68c2.34-2.34 3.66-5.52 3.66-8.84V5c0-2.76-2.24-5-5-5H29.18c-3.32 0-6.49 1.32-8.84 3.66Z"/>
|
||||
<path fill="#000" d="M48 16H8v40h40V16Z"/>
|
||||
<path fill="#fff" d="M30 47H13v4h17v-4Z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.1 KiB |
BIN
.github/readme-images/sponsors-jetbrains.png
vendored
Normal file
BIN
.github/readme-images/sponsors-jetbrains.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
35
.github/workflows/browserlist-update.yml
vendored
35
.github/workflows/browserlist-update.yml
vendored
|
|
@ -1,35 +0,0 @@
|
|||
name: Update Browserslist database
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 2 1 * *'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
update-browserslist-database:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Configure git
|
||||
run: |
|
||||
# Setup for commiting using built-in token. See https://github.com/actions/checkout#push-a-commit-using-the-built-in-token
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
- name: Update Browserslist database and create PR if applies
|
||||
uses: c2corg/browserslist-update-action@v2
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: browserslist-update
|
||||
base_branch: master
|
||||
directory: ./komga-webui
|
||||
commit_message: 'build(webui): update Browserslist db'
|
||||
title: 'Browserslist database update'
|
||||
body: Auto-generated by [browserslist-update-action](https://github.com/c2corg/browserslist-update-action/)
|
||||
labels: 'github_actions'
|
||||
171
.github/workflows/ci.yml
vendored
Normal file
171
.github/workflows/ci.yml
vendored
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'komga-webui/src/locales/*'
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
perform_release:
|
||||
description: 'Perform release'
|
||||
default: false
|
||||
type: boolean
|
||||
bump:
|
||||
description: 'Bump type'
|
||||
required: false
|
||||
default: 'next'
|
||||
type: choice
|
||||
options:
|
||||
- 'next'
|
||||
- 'major'
|
||||
- 'minor'
|
||||
- 'patch'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
java: [ 17, 19 ]
|
||||
name: Test JDK ${{ matrix.java }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: ${{ matrix.java }}
|
||||
java-package: 'jdk'
|
||||
distribution: 'temurin'
|
||||
- name: Build
|
||||
uses: gradle/gradle-build-action@v2
|
||||
with:
|
||||
arguments: build
|
||||
- name: Upload Unit Test Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: test-results-jdk-${{ matrix.java }}
|
||||
path: komga/build/test-results/
|
||||
- name: Upload Unit Test Reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: test-reports-jdk-${{ matrix.java }}
|
||||
path: komga/build/reports/tests/
|
||||
|
||||
webui:
|
||||
runs-on: ubuntu-latest
|
||||
name: Test webui builds
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '16'
|
||||
cache: 'npm'
|
||||
cache-dependency-path: |
|
||||
package-lock.json
|
||||
komga-webui/package-lock.json
|
||||
- name: npm install
|
||||
working-directory: komga-webui
|
||||
run: npm install
|
||||
- name: npm build
|
||||
working-directory: komga-webui
|
||||
run: npm run build
|
||||
- name: npm test
|
||||
working-directory: komga-webui
|
||||
run: npm run test:unit
|
||||
|
||||
version:
|
||||
runs-on: macos-latest
|
||||
if: inputs.perform_release
|
||||
outputs:
|
||||
version_current: ${{ steps.versions.outputs.version_current }}
|
||||
version_next: ${{ steps.versions.outputs.version_next }}
|
||||
should_release: ${{ steps.versions.outputs.should_release }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
- name: Install svu
|
||||
run: brew install caarlos0/tap/svu
|
||||
- name: Compute next version for release
|
||||
run: |
|
||||
echo "VERSION_NEXT=`svu --pattern="v[0-9]*" --strip-prefix ${{ inputs.bump }}`" | tee -a $GITHUB_ENV
|
||||
echo "VERSION_NEXT_SUFFIX=`svu --pattern="v[0-9]*" --strip-prefix ${{ inputs.bump }}`" | tee -a $GITHUB_ENV
|
||||
- name: Set Versions
|
||||
id: versions
|
||||
run: |
|
||||
echo "version_current=`svu --pattern="v[0-9]*" --strip-prefix current`" >> $GITHUB_OUTPUT
|
||||
echo "version_next=${{ env.VERSION_NEXT_SUFFIX }}" >> $GITHUB_OUTPUT
|
||||
[[ `svu --pattern="v[0-9]*" --strip-prefix current` != ${{ env.VERSION_NEXT }} ]] && echo "should_release=true" >> $GITHUB_OUTPUT || echo
|
||||
|
||||
release:
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
needs: [ test, webui, version ]
|
||||
if: needs.version.outputs.should_release
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Display versions
|
||||
run: |
|
||||
echo "Current version: ${{ needs.version.outputs.version_current }}, should release: ${{ needs.version.outputs.version_next }}"
|
||||
- name: Update version in gradle.properties
|
||||
run: sed -i -e "s/version=.*/version=${{ needs.version.outputs.version_next }}/" gradle.properties
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '16'
|
||||
cache: 'npm'
|
||||
cache-dependency-path: |
|
||||
package-lock.json
|
||||
komga-webui/package-lock.json
|
||||
- uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '17'
|
||||
java-package: 'jdk'
|
||||
distribution: 'temurin'
|
||||
cache: 'gradle'
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: JReleaser full release
|
||||
uses: gradle/gradle-build-action@v2
|
||||
with:
|
||||
arguments: copyWebDist generateOpenApiDocs jreleaserFullRelease
|
||||
env:
|
||||
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# workaround for https://github.com/jreleaser/jreleaser/issues/1232
|
||||
JRELEASER_DOCKER_DEFAULT_PASSWORD: workaround
|
||||
# workaround for https://github.com/jreleaser/jreleaser/discussions/1233
|
||||
JRELEASER_DISTRIBUTIONS_KOMGA_DOCKER_REPOSITORY_ACTIVE: NEVER
|
||||
- name: JReleaser release output
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: jreleaser-release
|
||||
path: |
|
||||
komga/build/jreleaser/trace.log
|
||||
komga/build/jreleaser/output.properties
|
||||
- name: Release commit and push
|
||||
uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
message: 'chore(release): ${{ needs.version.outputs.version_next }} [skip ci]'
|
||||
default_author: github_actions
|
||||
18
.github/workflows/dispatch.yml
vendored
18
.github/workflows/dispatch.yml
vendored
|
|
@ -1,18 +0,0 @@
|
|||
name: Dispatch events
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- '**/openapi.json'
|
||||
|
||||
jobs:
|
||||
dispatch:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Repository Dispatch
|
||||
uses: peter-evans/repository-dispatch@v4
|
||||
with:
|
||||
token: ${{ secrets.REPO_ACCESS_TOKEN }}
|
||||
repository: gotson/komga-website
|
||||
event-type: openapi
|
||||
2
.github/workflows/dockerhub_description.yml
vendored
2
.github/workflows/dockerhub_description.yml
vendored
|
|
@ -15,7 +15,7 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: DockerHub Description
|
||||
uses: peter-evans/dockerhub-description@v5.0.0
|
||||
uses: peter-evans/dockerhub-description@v3.4.2
|
||||
env:
|
||||
DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
|
|
|||
14
.github/workflows/gradle-wrapper-validation.yml
vendored
Normal file
14
.github/workflows/gradle-wrapper-validation.yml
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
name: "Validate Gradle Wrapper"
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
|
||||
jobs:
|
||||
validation:
|
||||
name: "Validation"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: gradle/wrapper-validation-action@v1
|
||||
2
.github/workflows/lock.yml
vendored
2
.github/workflows/lock.yml
vendored
|
|
@ -12,7 +12,7 @@ jobs:
|
|||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v6
|
||||
- uses: dessant/lock-threads@v4
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-inactive-days: '30'
|
||||
|
|
|
|||
253
.github/workflows/release.yml
vendored
253
.github/workflows/release.yml
vendored
|
|
@ -1,253 +0,0 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
release_notes:
|
||||
description: Release notes (use \n for newlines)
|
||||
type: string
|
||||
required: false
|
||||
bump:
|
||||
description: 'Bump type'
|
||||
required: false
|
||||
default: 'next'
|
||||
type: choice
|
||||
options:
|
||||
- 'next'
|
||||
- 'major'
|
||||
- 'minor'
|
||||
- 'patch'
|
||||
- 'current'
|
||||
github_release:
|
||||
description: 'Create Github Release'
|
||||
default: true
|
||||
type: boolean
|
||||
conveyor-copied-site:
|
||||
description: 'Conveyor copied site'
|
||||
default: true
|
||||
type: boolean
|
||||
docker_release:
|
||||
description: 'Push Docker images'
|
||||
default: true
|
||||
type: boolean
|
||||
msstore_release:
|
||||
description: 'Release to the MS Store'
|
||||
default: true
|
||||
type: boolean
|
||||
|
||||
jobs:
|
||||
version:
|
||||
runs-on: macos-latest
|
||||
outputs:
|
||||
version_current: ${{ steps.versions.outputs.version_current }}
|
||||
version_next: ${{ steps.versions.outputs.version_next }}
|
||||
should_release: ${{ steps.versions.outputs.should_release }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@main
|
||||
- name: Install svu
|
||||
run: brew install --cask caarlos0/tap/svu
|
||||
- name: Compute next version for release
|
||||
run: |
|
||||
echo "VERSION_NEXT=`svu ${{ inputs.bump }}`" | tee -a $GITHUB_ENV
|
||||
echo "VERSION_NEXT_SUFFIX=`svu ${{ inputs.bump }}`" | tee -a $GITHUB_ENV
|
||||
- name: Set Versions
|
||||
id: versions
|
||||
run: |
|
||||
echo "version_current=`svu current`" >> $GITHUB_OUTPUT
|
||||
echo "version_next=${{ env.VERSION_NEXT_SUFFIX }}" >> $GITHUB_OUTPUT
|
||||
[[ `svu current` != ${{ env.VERSION_NEXT }} ]] && echo "should_release=true" >> $GITHUB_OUTPUT || echo
|
||||
|
||||
release:
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
needs: version
|
||||
steps:
|
||||
- name: Remove unnecessary files
|
||||
run: |
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Display versions
|
||||
run: |
|
||||
echo "Current version: ${{ needs.version.outputs.version_current }}, should release: ${{ needs.version.outputs.version_next }}"
|
||||
|
||||
- name: Update version in gradle.properties
|
||||
if: needs.version.outputs.should_release #only redo if the version changed
|
||||
run: sed -i -e "s/version=.*/version=${{ needs.version.outputs.version_next }}/" gradle.properties
|
||||
|
||||
- uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
cache-dependency-path: komga-webui/package-lock.json
|
||||
|
||||
- name: Setup Java 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
java-version: 21
|
||||
java-package: 'jdk'
|
||||
distribution: 'temurin'
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v6
|
||||
|
||||
- name: Build
|
||||
run: ./gradlew :komga:prepareThymeLeaf :komga:bootJar :komga-tray:jar
|
||||
env:
|
||||
NODE_OPTIONS: "--max-old-space-size=4096"
|
||||
|
||||
- name: Generate OpenAPI docs
|
||||
if: needs.version.outputs.should_release #only redo if the version changed
|
||||
run: ./gradlew :komga:generateOpenApiDocs
|
||||
|
||||
- name: Create release notes
|
||||
run: |
|
||||
mkdir release_notes
|
||||
echo -e "${{ inputs.release_notes }}" >> release_notes/release_notes.md
|
||||
echo "Release notes:"
|
||||
cat release_notes/release_notes.md
|
||||
echo ""
|
||||
|
||||
- name: JReleaser Changelog append
|
||||
if: needs.version.outputs.should_release #only redo if the version changed
|
||||
run: ./gradlew jreleaserChangelog
|
||||
env:
|
||||
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: JReleaser Changelog output
|
||||
if: always() && needs.version.outputs.should_release
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: jreleaser-changelog
|
||||
path: |
|
||||
build/jreleaser/trace.log
|
||||
build/jreleaser/output.properties
|
||||
|
||||
- name: Release commit and push
|
||||
uses: EndBug/add-and-commit@v10
|
||||
if: needs.version.outputs.should_release #only redo if the version changed
|
||||
with:
|
||||
message: 'chore(release): ${{ needs.version.outputs.version_next }} [skip ci]'
|
||||
tag: '${{ needs.version.outputs.version_next }}'
|
||||
default_author: github_actions
|
||||
|
||||
- name: Retrieve the Apple private key and decode it to a file
|
||||
if: inputs.github_release || inputs.conveyor-copied-site
|
||||
env:
|
||||
APPLE_PRIVATE_KEY: ${{ secrets.APPLE_PRIVATE_KEY }}
|
||||
run: |
|
||||
mkdir ./secret
|
||||
echo $APPLE_PRIVATE_KEY | base64 --decode > ./secret/apple_private_key.p8
|
||||
|
||||
- name: Conveyor make copied-site
|
||||
uses: hydraulic-software/conveyor/actions/build@v22.0
|
||||
if: inputs.conveyor-copied-site
|
||||
with:
|
||||
command: --cache-limit=2.0 -f conveyor.ci.conf make copied-site -o ./output/site
|
||||
signing_key: ${{ secrets.CONVEYOR_SIGNING_KEY }}
|
||||
agree_to_license: 1
|
||||
env:
|
||||
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
|
||||
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
|
||||
AWS_S3_BUCKET: ${{ secrets.B2_BUCKET }}
|
||||
AWS_S3_ENDPOINT: 'https://s3.us-east-005.backblazeb2.com'
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.B2_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.B2_SECRET_ACCESS_KEY }}
|
||||
- name: Upload Conveyor log
|
||||
if: always() && inputs.conveyor-copied-site
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: conveyor-make-copied-site
|
||||
path: ~/.cache/hydraulic/conveyor/logs/log.latest.txt
|
||||
|
||||
- name: JReleaser Release
|
||||
if: inputs.github_release
|
||||
run: ./gradlew jreleaserRelease
|
||||
env:
|
||||
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: JReleaser Release output
|
||||
if: always() && inputs.github_release
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: jreleaser-release
|
||||
path: |
|
||||
build/jreleaser/trace.log
|
||||
build/jreleaser/output.properties
|
||||
|
||||
# Sometimes the workflow will fail because it's out of disk space
|
||||
- name: Cleanup Conveyor output
|
||||
run: rm -fr ./output
|
||||
|
||||
- name: JReleaser Publish
|
||||
if: inputs.docker_release
|
||||
run: ./gradlew jreleaserPublish
|
||||
env:
|
||||
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: JReleaser Publish output
|
||||
if: always() && inputs.docker_release
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: jreleaser-publish
|
||||
path: |
|
||||
build/jreleaser/trace.log
|
||||
build/jreleaser/output.properties
|
||||
|
||||
- name: Conveyor - publish to Microsoft Store
|
||||
uses: hydraulic-software/conveyor/actions/build@v22.0
|
||||
if: inputs.msstore_release
|
||||
with:
|
||||
command: --cache-limit=2.0 -f conveyor.msstore.ci.conf make ms-store-release -o ./output/msstore
|
||||
signing_key: ${{ secrets.CONVEYOR_SIGNING_KEY }}
|
||||
agree_to_license: 1
|
||||
env:
|
||||
CONVEYOR_MSSTORE_CLIENT_ID: ${{ secrets.CONVEYOR_MSSTORE_CLIENT_ID }}
|
||||
CONVEYOR_MSSTORE_CLIENT_SECRET: ${{ secrets.CONVEYOR_MSSTORE_CLIENT_SECRET }}
|
||||
CONVEYOR_MSSTORE_TENANT_ID: ${{ secrets.CONVEYOR_MSSTORE_TENANT_ID }}
|
||||
AWS_S3_BUCKET: ${{ secrets.B2_BUCKET }}
|
||||
AWS_S3_ENDPOINT: 'https://s3.us-east-005.backblazeb2.com'
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.B2_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.B2_SECRET_ACCESS_KEY }}
|
||||
- name: Upload Conveyor log
|
||||
if: always() && inputs.msstore_release
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: conveyor-ms-store-release
|
||||
path: ~/.cache/hydraulic/conveyor/logs/log.latest.txt
|
||||
|
||||
dispatch:
|
||||
needs: release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Repository Dispatch
|
||||
uses: peter-evans/repository-dispatch@v4
|
||||
with:
|
||||
token: ${{ secrets.REPO_ACCESS_TOKEN }}
|
||||
repository: gotson/komga-website
|
||||
event-type: komga-release
|
||||
97
.github/workflows/tests.yml
vendored
97
.github/workflows/tests.yml
vendored
|
|
@ -1,97 +0,0 @@
|
|||
name: Tests
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'komga-webui/src/locales/*'
|
||||
- 'komga-tray/src/main/resources/org/gotson/komga/*'
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-latest, macos-latest, windows-latest ]
|
||||
fail-fast: false
|
||||
name: Test server - ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Setup Java 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
java-version: 21
|
||||
java-package: 'jdk'
|
||||
distribution: 'temurin'
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v6
|
||||
|
||||
- name: Build
|
||||
run: ./gradlew build :komga-tray:jar
|
||||
|
||||
- name: Upload Unit Test Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: test-results-${{ matrix.os }}
|
||||
path: komga/build/test-results/
|
||||
|
||||
- name: Upload Unit Test Reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: test-reports-${{ matrix.os }}
|
||||
path: komga/build/reports/tests/
|
||||
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@v6
|
||||
if: always()
|
||||
with:
|
||||
report_paths: '**/build/test-results/test/TEST-*.xml'
|
||||
check_name: 'JUnit Test Report: ${{ matrix.os }}'
|
||||
|
||||
- name: Conveyor - compute JDK module list
|
||||
if: github.event_name == 'push' && github.repository_owner == 'gotson' && contains(matrix.os, 'ubuntu')
|
||||
uses: hydraulic-software/conveyor/actions/build@v22.0
|
||||
with:
|
||||
command: -f conveyor.detect.conf -Kapp.machines=mac.aarch64 make processed-jars
|
||||
signing_key: ${{ secrets.CONVEYOR_SIGNING_KEY }}
|
||||
agree_to_license: 1
|
||||
|
||||
- name: Compare JDK required modules
|
||||
id: conveyor_compare
|
||||
if: github.event_name == 'push' && github.repository_owner == 'gotson' && contains(matrix.os, 'ubuntu')
|
||||
run: diff --unified ./komga-tray/conveyor/required-jdk-modules.txt ./output/required-jdk-modules.txt
|
||||
|
||||
- name: Upload JDK required modules
|
||||
if: steps.conveyor_compare.outcome == 'failure'
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: conveyor-required-jdk-modules
|
||||
path: ./output/required-jdk-modules.txt
|
||||
|
||||
webui:
|
||||
runs-on: ubuntu-latest
|
||||
name: Test webui builds
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
cache-dependency-path: komga-webui/package-lock.json
|
||||
- name: npm install
|
||||
working-directory: komga-webui
|
||||
run: npm install
|
||||
- name: npm build
|
||||
working-directory: komga-webui
|
||||
run: npm run build
|
||||
env:
|
||||
NODE_OPTIONS: "--max-old-space-size=4096"
|
||||
- name: npm test
|
||||
working-directory: komga-webui
|
||||
run: npm run test:unit
|
||||
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -2,9 +2,6 @@
|
|||
.gradle
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
### Kotlin
|
||||
.kotlin
|
||||
|
||||
### NodeJS
|
||||
node_modules
|
||||
|
||||
|
|
@ -52,8 +49,3 @@ nbdist/
|
|||
/config-dir/
|
||||
application-oauth2.yml
|
||||
/benchmark
|
||||
/release_notes
|
||||
|
||||
### Conveyor
|
||||
output/
|
||||
secret/
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
</map>
|
||||
</option>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$/komga" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" value="" />
|
||||
<option name="taskDescriptions">
|
||||
|
|
@ -20,10 +20,7 @@
|
|||
</option>
|
||||
<option name="vmOptions" value="" />
|
||||
</ExternalSystemSettings>
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<RunAsTest>false</RunAsTest>
|
||||
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
</component>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
</map>
|
||||
</option>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$/komga" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" value="" />
|
||||
<option name="taskDescriptions">
|
||||
|
|
@ -20,10 +20,7 @@
|
|||
</option>
|
||||
<option name="vmOptions" value="" />
|
||||
</ExternalSystemSettings>
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<RunAsTest>false</RunAsTest>
|
||||
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
</component>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
</map>
|
||||
</option>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$/komga" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" value="" />
|
||||
<option name="taskDescriptions">
|
||||
|
|
@ -23,7 +23,6 @@
|
|||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<RunAsTest>false</RunAsTest>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
</component>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
</map>
|
||||
</option>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$/komga" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" value="" />
|
||||
<option name="taskDescriptions">
|
||||
|
|
@ -20,10 +20,7 @@
|
|||
</option>
|
||||
<option name="vmOptions" value="" />
|
||||
</ExternalSystemSettings>
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<RunAsTest>false</RunAsTest>
|
||||
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
</component>
|
||||
1
.nvmrc
1
.nvmrc
|
|
@ -1 +0,0 @@
|
|||
18
|
||||
3
.svu.yml
3
.svu.yml
|
|
@ -1,3 +0,0 @@
|
|||
tag:
|
||||
prefix: ''
|
||||
pattern: '[0-9]*'
|
||||
2353
CHANGELOG.md
2353
CHANGELOG.md
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
|||
1. **Before reporting a new issue, take a look at the [FAQ](https://komga.org/docs/faq/), the [changelog](https://github.com/gotson/komga/blob/master/CHANGELOG.md) and the already opened [issues](https://github.com/gotson/komga/issues).**
|
||||
1. **Before reporting a new issue, take a look at the [FAQ](https://komga.org/faq/), the [changelog](https://github.com/gotson/komga/blob/master/CHANGELOG.md) and the already opened [issues](https://github.com/gotson/komga/issues).**
|
||||
1. If you are unsure, ask here: [](https://discord.gg/TdRpkDu)
|
||||
1. **DO NOT** reply on existing issues to say _"+1"_ or _"I am interested in this"_.
|
||||
1. **DO** show your enthusiasm for an existing issue by adding a :+1: reaction on the first message in the discussion.
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ Thanks a lot for contributing to Komga!
|
|||
|
||||
You will need:
|
||||
|
||||
- Java JDK version 21+
|
||||
- Nodejs version 18+ (check the `.nvmrc` file)
|
||||
- Java JDK version 17+
|
||||
- Nodejs version 16+
|
||||
|
||||
## Setting up the project
|
||||
|
||||
|
|
@ -19,10 +19,9 @@ Komga's commit messages follow the [Conventional Commits](https://www.convention
|
|||
|
||||
## Project organization
|
||||
|
||||
Komga is composed of 3 projects:
|
||||
Komga is composed of 2 projects:
|
||||
- `komga`: a Spring Boot backend server that hosts the APIs, but also serves the static assets of the frontend.
|
||||
- `komga-webui`: a VueJS frontend, built at compile time and served by the backend at runtime.
|
||||
- `komga-tray`: a thin desktop wrapper that displays a tray-icon
|
||||
|
||||
## Backend development
|
||||
|
||||
|
|
@ -41,8 +40,7 @@ The backend project uses `gradle` to run all the necessary tasks. If your IDE do
|
|||
|
||||
Here is a list of useful tasks:
|
||||
- `bootRun`: run the application locally, useful for testing your changes.
|
||||
- `prepareThymeLeaf`: build the frontend, and copy the bundle to `/resources/public`. You need to run this manually if
|
||||
you want to test the latest frontend build hosted by Spring.
|
||||
- `copyWebDist`: build the frontend, and copy the bundle to `/resources/public`. You need to run this manually if you want to test the latest frontend build hosted by Spring.
|
||||
- `test`: run automated tests. Always run this before committing.
|
||||
- `jooq-codegen-primary`: generates the jOOQ DSL.
|
||||
|
||||
|
|
@ -69,7 +67,6 @@ Make sure you start the backend with the `dev` profile, else the frontend reques
|
|||
## Docker
|
||||
|
||||
To build the Docker image, you need to:
|
||||
|
||||
- have the webui built and copied to `/resources/public`. To do so, run `./gradlew prepareThymeLeaf`
|
||||
- have the webui built and copied to `/resources/public`. To do so, run `./gradlew copyWebDist`
|
||||
- prepare the docker image via JReleaser. To do so, run `./gradlew jreleaserPackage`
|
||||
- the `Dockerfile` will be available in `komga/build/jreleaser/package/docker/`
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#  Komga
|
||||
|
||||
[Komga](https://github.com/gotson/komga) is a media server for your comics, mangas, BDs, magazines and eBooks.
|
||||
[Komga](https://github.com/gotson/komga) is a free and open source comics/mangas/magazines server.
|
||||
|
||||
## Usage
|
||||
|
||||
|
|
|
|||
|
|
@ -35,11 +35,3 @@
|
|||
| ERR_1029 | ComicRack CBL does not contain any Book element |
|
||||
| ERR_1030 | ComicRack CBL has no Name element |
|
||||
| ERR_1031 | ComicRack CBL Book is missing series or number |
|
||||
| ERR_1032 | EPUB file has wrong media type |
|
||||
| ERR_1033 | Some entries are missing |
|
||||
| ERR_1034 | An API key with that comment already exists |
|
||||
| ERR_1035 | Error while getting EPUB TOC |
|
||||
| ERR_1036 | Error while getting EPUB Landmarks |
|
||||
| ERR_1037 | Error while getting EPUB page list |
|
||||
| ERR_1038 | Error while getting EPUB divina pages |
|
||||
| ERR_1039 | Error while getting EPUB positions |
|
||||
|
|
|
|||
17
PRIVACY.md
17
PRIVACY.md
|
|
@ -1,17 +0,0 @@
|
|||
# Privacy Policy
|
||||
|
||||
Komga is a self-hosted application. It does not transmit any data outside the machine hosting it.
|
||||
|
||||
## Data collected
|
||||
|
||||
Data collected is stored in the local SQLite database required for the application to function, and never leaves your
|
||||
machine.
|
||||
|
||||
### Information provided by the user(s)
|
||||
|
||||
- **Email address**: required to create an account
|
||||
|
||||
### Information collected automatically
|
||||
|
||||
- **IP address and User-Agent of authentication connections**: stored in the local database during authentication
|
||||
attempts. That information is automatically deleted after one month.
|
||||
21
README.md
21
README.md
|
|
@ -1,7 +1,7 @@
|
|||
[](https://opencollective.com/komga) [](https://github.com/sponsors/gotson)
|
||||
[](https://discord.gg/TdRpkDu)
|
||||
|
||||
[](https://github.com/gotson/komga/actions?query=workflow%3ATests+branch%3Amaster)
|
||||
[](https://github.com/gotson/komga/actions?query=workflow%3ACI+branch%3Amaster)
|
||||
[](https://github.com/gotson/komga/releases) [](https://github.com/gotson/komga/releases)
|
||||
[](https://hub.docker.com/r/gotson/komga)
|
||||
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#  Komga
|
||||
|
||||
Komga is a media server for your comics, mangas, BDs, magazines and eBooks.
|
||||
Komga is a free and open source comics/mangas server.
|
||||
|
||||
#### Chat on [Discord](https://discord.gg/TdRpkDu)
|
||||
|
||||
|
|
@ -22,18 +22,15 @@ Komga is a media server for your comics, mangas, BDs, magazines and eBooks.
|
|||
- Webreader with multiple reading modes
|
||||
- Manage multiple users, with per-library access control, age restrictions, and labels restrictions
|
||||
- Offers a REST API, many community tools and scripts can interact with Komga
|
||||
- OPDS v1 and v2 support
|
||||
- Kobo Sync with your Kobo eReader
|
||||
- KOReader Sync
|
||||
- Download book files, whole series, or read lists
|
||||
- Duplicate files detection
|
||||
- Duplicate pages detection and removal
|
||||
- Import books from outside your libraries directly into your series folder
|
||||
- Import ComicRack `cbl` read lists
|
||||
|
||||
## Installation
|
||||
## Download
|
||||
|
||||
Refer to the [website](https://komga.org/docs/category/installation) for instructions.
|
||||
Get the app from our [releases page](https://github.com/gotson/komga/releases) or through [Docker](https://hub.docker.com/r/gotson/komga).
|
||||
|
||||
## Documentation
|
||||
|
||||
|
|
@ -47,15 +44,9 @@ Check the [development guidelines](./DEVELOPING.md).
|
|||
|
||||
[](https://hosted.weblate.org/engage/komga/)
|
||||
|
||||
## Powered by
|
||||
## Sponsors
|
||||
|
||||
[](https://www.jetbrains.com/?from=Komga)
|
||||
|
||||
Thanks to [JetBrains](https://www.jetbrains.com/?from=Komga) for providing the development environment that helps us develop Komga.
|
||||
|
||||
[](https://www.chromatic.com)
|
||||
|
||||
Thanks to [Chromatic](https://www.chromatic.com/) for providing the visual testing platform that helps us review UI changes and catch visual regressions.
|
||||
[](https://www.jetbrains.com/?from=Komga)
|
||||
|
||||
## Credits
|
||||
|
||||
|
|
|
|||
BIN
apple.cer
BIN
apple.cer
Binary file not shown.
157
build.gradle.kts
157
build.gradle.kts
|
|
@ -1,20 +1,14 @@
|
|||
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
|
||||
import org.jreleaser.model.Active
|
||||
import org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR
|
||||
import org.jreleaser.model.api.common.Apply
|
||||
import kotlin.io.path.Path
|
||||
import kotlin.io.path.exists
|
||||
|
||||
plugins {
|
||||
run {
|
||||
val kotlinVersion = "2.2.0"
|
||||
val kotlinVersion = "1.8.22"
|
||||
kotlin("jvm") version kotlinVersion
|
||||
kotlin("plugin.spring") version kotlinVersion
|
||||
kotlin("kapt") version kotlinVersion
|
||||
}
|
||||
id("org.jlleitschuh.gradle.ktlint") version "13.0.0"
|
||||
id("com.github.ben-manes.versions") version "0.52.0"
|
||||
id("org.jreleaser") version "1.19.0"
|
||||
id("org.jlleitschuh.gradle.ktlint") version "11.4.2"
|
||||
id("com.github.ben-manes.versions") version "0.46.0"
|
||||
}
|
||||
|
||||
fun isNonStable(version: String): Boolean {
|
||||
|
|
@ -25,8 +19,6 @@ fun isNonStable(version: String): Boolean {
|
|||
return unstableKeyword || !isStable
|
||||
}
|
||||
|
||||
group = "org.gotson"
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
|
@ -44,150 +36,11 @@ allprojects {
|
|||
}
|
||||
|
||||
configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> {
|
||||
version = "1.7.1"
|
||||
filter {
|
||||
exclude("**/generated-src/**")
|
||||
exclude("**/generated/**")
|
||||
}
|
||||
version.set("0.48.2")
|
||||
}
|
||||
}
|
||||
|
||||
tasks.wrapper {
|
||||
gradleVersion = "8.14.3"
|
||||
gradleVersion = "8.1.1"
|
||||
distributionType = Wrapper.DistributionType.ALL
|
||||
}
|
||||
|
||||
jreleaser {
|
||||
project {
|
||||
description = "Media server for comics/mangas/BDs with API and OPDS support"
|
||||
copyright = "Gauthier Roebroeck"
|
||||
authors.add("Gauthier Roebroeck")
|
||||
license = "MIT"
|
||||
links {
|
||||
homepage = "https://komga.org"
|
||||
}
|
||||
}
|
||||
|
||||
release {
|
||||
github {
|
||||
discussionCategoryName = "Announcements"
|
||||
skipTag = true
|
||||
tagName = "{{projectVersion}}"
|
||||
|
||||
changelog {
|
||||
formatted = Active.ALWAYS
|
||||
preset = "conventional-commits"
|
||||
skipMergeCommits = true
|
||||
links = true
|
||||
content = (if (Path("./release_notes/release_notes.md").exists()) "{{#f_file_read}}{{basedir}}/release_notes/release_notes.md{{/f_file_read}}" else "") +
|
||||
"""
|
||||
## Changelog
|
||||
|
||||
{{changelogChanges}}
|
||||
{{changelogContributors}}
|
||||
""".trimIndent()
|
||||
format = "- {{#commitIsConventional}}{{#conventionalCommitIsBreakingChange}}🚨 {{/conventionalCommitIsBreakingChange}}{{#conventionalCommitScope}}**{{conventionalCommitScope}}**: {{/conventionalCommitScope}}{{conventionalCommitDescription}}{{#conventionalCommitBreakingChangeContent}}: *{{conventionalCommitBreakingChangeContent}}*{{/conventionalCommitBreakingChangeContent}} ({{commitShortHash}}){{/commitIsConventional}}{{^commitIsConventional}}{{commitTitle}} ({{commitShortHash}}){{/commitIsConventional}}{{#commitHasIssues}}, closes{{#commitIssues}} {{issue}}{{/commitIssues}}{{/commitHasIssues}}"
|
||||
hide {
|
||||
uncategorized = true
|
||||
contributors = listOf("Weblate", "GitHub", "semantic-release-bot", "[bot]", "github-actions")
|
||||
}
|
||||
excludeLabels.add("chore")
|
||||
category {
|
||||
title = "🏎 Perf"
|
||||
key = "perf"
|
||||
labels.add("perf")
|
||||
order = 25
|
||||
}
|
||||
category {
|
||||
title = "🌐 Translation"
|
||||
key = "i18n"
|
||||
labels.add("i18n")
|
||||
order = 70
|
||||
}
|
||||
category {
|
||||
title = "⚙️ Dependencies"
|
||||
key = "dependencies"
|
||||
labels.add("dependencies")
|
||||
order = 80
|
||||
}
|
||||
labeler {
|
||||
label = "perf"
|
||||
title = "regex:^(?:perf(?:\\(.*\\))?!?):\\s.*"
|
||||
order = 120
|
||||
}
|
||||
labeler {
|
||||
label = "i18n"
|
||||
title = "regex:^(?:i18n(?:\\(.*\\))?!?):\\s.*"
|
||||
order = 130
|
||||
}
|
||||
labeler {
|
||||
label = "dependencies"
|
||||
title = "regex:^(?:deps(?:\\(.*\\))?!?):\\s.*"
|
||||
order = 140
|
||||
}
|
||||
extraProperties.put("categorizeScopes", true)
|
||||
append {
|
||||
enabled = true
|
||||
title = "# [{{projectVersion}}]({{repoUrl}}/compare/{{previousTagName}}...{{tagName}}) ({{#f_now}}YYYY-MM-dd{{/f_now}})"
|
||||
target = rootDir.resolve("CHANGELOG.md")
|
||||
content =
|
||||
"""
|
||||
{{changelogTitle}}
|
||||
{{changelogChanges}}
|
||||
""".trimIndent()
|
||||
}
|
||||
}
|
||||
|
||||
issues {
|
||||
enabled = true
|
||||
comment = "🎉 This issue has been resolved in `{{tagName}}` ([Release Notes]({{releaseNotesUrl}}))"
|
||||
applyMilestone = Apply.ALWAYS
|
||||
label {
|
||||
name = "released"
|
||||
description = "Issue has been released"
|
||||
color = "#ededed"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
distributions {
|
||||
create("komga") {
|
||||
active = Active.RELEASE
|
||||
distributionType = SINGLE_JAR
|
||||
artifact {
|
||||
path = rootDir.resolve("komga/build/libs/komga-{{projectVersion}}.jar")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
packagers {
|
||||
docker {
|
||||
active = Active.RELEASE
|
||||
continueOnError = false
|
||||
templateDirectory = rootDir.resolve("komga/docker")
|
||||
repository.active = Active.NEVER
|
||||
buildArgs = listOf("--cache-from", "gotson/komga:latest")
|
||||
imageNames =
|
||||
listOf(
|
||||
"komga:latest",
|
||||
"komga:{{projectVersion}}",
|
||||
"komga:{{projectVersionMajor}}.x",
|
||||
)
|
||||
registries {
|
||||
create("docker.io") { externalLogin = true }
|
||||
create("ghcr.io") { externalLogin = true }
|
||||
}
|
||||
buildx {
|
||||
enabled = true
|
||||
createBuilder = false
|
||||
platforms =
|
||||
listOf(
|
||||
"linux/amd64",
|
||||
"linux/arm/v7",
|
||||
"linux/arm64/v8",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,9 +30,6 @@
|
|||
"i18n": {
|
||||
"description": "Changes which affect translation"
|
||||
},
|
||||
"deps": {
|
||||
"description": "Changes which affect dependencies"
|
||||
},
|
||||
"ci": {
|
||||
"description": "Changes which affect CI configuration files and scripts.<br/>Example scopes: travis, circle, browser-stack, sauce-labs"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
include required("conveyor.conf")
|
||||
|
||||
app {
|
||||
mac.certificate = apple.cer
|
||||
|
||||
mac.notarization {
|
||||
issuer-id = ${env.APPLE_ISSUER_ID}
|
||||
key-id = ${env.APPLE_KEY_ID}
|
||||
# the secret is written to file by CI from Github Secrets
|
||||
private-key = ./secret/apple_private_key.p8
|
||||
}
|
||||
|
||||
site {
|
||||
consistency-checks = warn
|
||||
copy-to = "s3:"${env.AWS_S3_BUCKET}/
|
||||
s3 {
|
||||
# Still required by Conveyor even though endpoint is set
|
||||
region = "unused"
|
||||
access-key-id = ${env.AWS_ACCESS_KEY_ID}
|
||||
secret-access-key = ${env.AWS_SECRET_ACCESS_KEY}
|
||||
endpoint = ${env.AWS_S3_ENDPOINT}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
include "#!./gradlew -q :komga-tray:printConveyorConfig"
|
||||
include required("/stdlib/jdk/23/eclipse.conf")
|
||||
|
||||
app {
|
||||
display-name = Komga
|
||||
fsname = komga
|
||||
vcs-url = "https://github.com/gotson/komga"
|
||||
vendor = "Gotson"
|
||||
description = "Media server for comics/mangas/BDs with API and OPDS support"
|
||||
license = MIT
|
||||
icons = "res/komga_text_as_path.svg"
|
||||
|
||||
machines = [
|
||||
windows.amd64,
|
||||
mac
|
||||
]
|
||||
|
||||
jvm {
|
||||
// for NightMonkeys & NightCompress
|
||||
options += "--enable-native-access=ALL-UNNAMED"
|
||||
|
||||
mac.options += "-Dspring.profiles.include=mac"
|
||||
|
||||
windows.options += "-Dspring.profiles.include=windows"
|
||||
|
||||
modules = [
|
||||
java.base
|
||||
java.compiler
|
||||
java.datatransfer
|
||||
java.desktop
|
||||
java.instrument
|
||||
java.logging
|
||||
java.management
|
||||
java.naming
|
||||
java.net.http
|
||||
java.prefs
|
||||
java.rmi
|
||||
java.scripting
|
||||
java.security.jgss
|
||||
java.sql
|
||||
java.sql.rowset
|
||||
java.transaction.xa
|
||||
java.xml
|
||||
jdk.jfr
|
||||
jdk.management
|
||||
jdk.unsupported
|
||||
]
|
||||
}
|
||||
|
||||
windows {
|
||||
exe-installer-basename = "KomgaInstaller"
|
||||
manifests.msix.background-color = transparent
|
||||
inputs += ./komga-tray/lib/windows/x64/
|
||||
amd64.inputs += "https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-windows-64bit.exe" -> kepubify.exe
|
||||
aarch64.inputs += "https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-windows-arm64.exe" -> kepubify.exe
|
||||
}
|
||||
|
||||
mac {
|
||||
info-plist.LSMinimumSystemVersion = 13
|
||||
aarch64.inputs += ./komga-tray/lib/mac/aarch64/
|
||||
aarch64.inputs += "https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-darwin-arm64" -> kepubify
|
||||
amd64.inputs += ./komga-tray/lib/mac/x64/
|
||||
amd64.inputs += "https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-darwin-64bit" -> kepubify
|
||||
}
|
||||
|
||||
site {
|
||||
base-url = "https://download.komga.org"
|
||||
}
|
||||
}
|
||||
|
||||
conveyor.compatibility-level = 18
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
include required("conveyor.conf")
|
||||
|
||||
app.jvm.modules = detect
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
include required("conveyor.msstore.conf")
|
||||
|
||||
app {
|
||||
windows {
|
||||
store {
|
||||
client-id = ${env.CONVEYOR_MSSTORE_CLIENT_ID}
|
||||
client-secret = ${env.CONVEYOR_MSSTORE_CLIENT_SECRET}
|
||||
tenant-id = ${env.CONVEYOR_MSSTORE_TENANT_ID}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
include required("conveyor.conf")
|
||||
|
||||
app {
|
||||
fsname = komga-msstore
|
||||
windows {
|
||||
manifests.msix.use-update-escape-hatch = false
|
||||
store {
|
||||
identity-name = 612Gotson.Komga
|
||||
publisher = "CN=CF37C563-9649-4277-990F-CDD0CDCB78C1"
|
||||
publisher-display-name = Gotson
|
||||
store-id = 9N924KC4S4HG
|
||||
}
|
||||
|
||||
certificate = self signed by ${app.windows.store.publisher}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
version=1.24.4
|
||||
version=1.2.0
|
||||
org.gradle.jvmargs=-Xmx2G
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
[versions]
|
||||
sqliteJdbc = "3.50.2.0"
|
||||
nightmonkeys = "1.0.0"
|
||||
twelvemonkeys = "3.12.0"
|
||||
springboot = "3.5.14"
|
||||
lucene = "9.9.1" # v10 requires JDK 21
|
||||
jooq = "3.19.32" # should be aligned with the version provided by Spring Boot
|
||||
|
||||
[plugins]
|
||||
gradleGitProperties = {id = "com.gorylenko.gradle-git-properties", version = "2.5.7"}
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
|
|
@ -1,7 +1,6 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
|||
37
gradlew
vendored
37
gradlew
vendored
|
|
@ -15,8 +15,6 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
|
|
@ -57,7 +55,7 @@
|
|||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
|
|
@ -85,8 +83,10 @@ done
|
|||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
|
|
@ -114,7 +114,7 @@ case "$( uname )" in #(
|
|||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH="\\\"\\\""
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
|
|
@ -133,13 +133,10 @@ location of your Java installation."
|
|||
fi
|
||||
else
|
||||
JAVACMD=java
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
|
|
@ -147,7 +144,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
|
|
@ -155,7 +152,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
|
|
@ -200,20 +197,16 @@ if "$cygwin" || "$msys" ; then
|
|||
done
|
||||
fi
|
||||
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
# Collect all arguments for the java command;
|
||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
# double quotes to make sure that they get re-expanded; and
|
||||
# * put everything else in single quotes, so that it's not re-expanded.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
|
|
|
|||
26
gradlew.bat
vendored
26
gradlew.bat
vendored
|
|
@ -13,8 +13,6 @@
|
|||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
@rem SPDX-License-Identifier: Apache-2.0
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
|
|
@ -45,11 +43,11 @@ set JAVA_EXE=java.exe
|
|||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
|
|
@ -59,22 +57,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|||
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
plugins {
|
||||
run {
|
||||
kotlin("jvm")
|
||||
kotlin("plugin.spring")
|
||||
}
|
||||
alias(libs.plugins.gradleGitProperties)
|
||||
id("org.jetbrains.compose") version "1.8.2"
|
||||
id("org.jetbrains.kotlin.plugin.compose") version "2.2.0"
|
||||
id("dev.hydraulic.conveyor") version "1.12"
|
||||
application
|
||||
}
|
||||
|
||||
group = "org.gotson"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
google()
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
jvmTarget = JvmTarget.JVM_17
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
withType<JavaCompile> {
|
||||
sourceCompatibility = "17"
|
||||
targetCompatibility = "17"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":komga"))
|
||||
|
||||
implementation(compose.desktop.currentOs)
|
||||
implementation(compose.components.resources)
|
||||
|
||||
linuxAmd64(compose.desktop.linux_x64)
|
||||
macAmd64(compose.desktop.macos_x64)
|
||||
macAarch64(compose.desktop.macos_arm64)
|
||||
windowsAmd64(compose.desktop.windows_x64)
|
||||
}
|
||||
|
||||
application {
|
||||
mainClass = "org.gotson.komga.DesktopApplicationKt"
|
||||
}
|
||||
|
||||
// Work around temporary Compose bugs
|
||||
configurations.all {
|
||||
attributes {
|
||||
attribute(Attribute.of("ui", String::class.java), "awt")
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
java.base
|
||||
java.compiler
|
||||
java.datatransfer
|
||||
java.desktop
|
||||
java.instrument
|
||||
java.logging
|
||||
java.management
|
||||
java.naming
|
||||
java.net.http
|
||||
java.prefs
|
||||
java.rmi
|
||||
java.scripting
|
||||
java.security.jgss
|
||||
java.sql
|
||||
java.sql.rowset
|
||||
java.transaction.xa
|
||||
java.xml
|
||||
jdk.jfr
|
||||
jdk.management
|
||||
jdk.unsupported
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue