8 Commits

4 changed files with 74 additions and 39 deletions

View File

@@ -1,24 +0,0 @@
[tool.bumpversion]
current_version = "0.2.0"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
serialize = ["{major}.{minor}.{patch}"]
search = "{current_version}"
replace = "{new_version}"
regex = false
ignore_missing_version = false
ignore_missing_files = false
tag = true
sign_tags = false
tag_name = "v{new_version}"
tag_message = "Bump version: {current_version} → {new_version}"
allow_dirty = false
commit = true
message = "Bump version: {current_version} → {new_version}"
moveable_tags = []
commit_args = ""
setup_hooks = []
pre_commit_hooks = []
post_commit_hooks = []
[[tool.bumpversion.files]]
filename = "pyproject.toml"

View File

@@ -1,10 +1,6 @@
on: on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
release_notes:
description: Release notes (use \n for newlines)
type: string
required: false
github_release: github_release:
description: 'Create Gitea Release' description: 'Create Gitea Release'
default: true default: true
@@ -48,13 +44,15 @@ jobs:
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }} branch: ${{ github.ref }}
- name: Create release notes - name: Build Changelog
run: | id: build_changelog
mkdir release_notes uses: https://github.com/mikepenz/release-changelog-builder-action@v5
echo -e "${{ inputs.release_notes }}" >> release_notes/release_notes.md with:
echo "Release notes:" platform: "gitea"
cat release_notes/release_notes.md baseURL: "http://gitea:3000"
echo "" configuration: ".gitea/changelog-config.json"
env:
GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN }}
- name: Build package - name: Build package
run: uv build run: uv build
- name: Publish package - name: Publish package
@@ -68,9 +66,9 @@ jobs:
if: ${{ github.event.inputs.github_release == 'true' }} if: ${{ github.event.inputs.github_release == 'true' }}
uses: softprops/action-gh-release@master uses: softprops/action-gh-release@master
with: with:
tag_name: ${{ env.VERSION }} tag_name: v${{ env.VERSION }}
release_name: Release ${{ env.VERSION }} release_name: Release ${{ env.VERSION }}
body_path: release_notes/release_notes.md body: ${{steps.build_changelog.outputs.changelog}}
draft: false draft: false
prerelease: false prerelease: false
make_latest: true make_latest: true

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "komconfig" name = "komconfig"
version = "0.2.0" version = "0.2.2"
description = "A small library providing a config class that provides settings data for the KomSuite" description = "A small library providing a config class that provides settings data for the KomSuite"
readme = "README.md" readme = "README.md"
authors = [{ name = "WorldTeacher", email = "coding_contact@pm.me" }] authors = [{ name = "WorldTeacher", email = "coding_contact@pm.me" }]
@@ -13,3 +13,25 @@ build-backend = "hatchling.build"
[dependency-groups] [dependency-groups]
test = ["pytest>=8.3.4"] test = ["pytest>=8.3.4"]
[tool.bumpversion]
current_version = "0.2.2"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
serialize = ["{major}.{minor}.{patch}"]
search = "{current_version}"
replace = "{new_version}"
regex = false
ignore_missing_version = false
ignore_missing_files = false
tag = true
sign_tags = false
tag_name = "v{new_version}"
tag_message = "Bump version: {current_version} → {new_version}"
allow_dirty = true
commit = true
message = "Bump version: {current_version} → {new_version}"
moveable_tags = []
commit_args = ""
setup_hooks = []
pre_commit_hooks = []
post_commit_hooks = []

View File

@@ -1,13 +1,48 @@
from dataclasses import dataclass from dataclasses import dataclass
from typing import List, Optional from typing import List, Optional, Union
import os import os
from omegaconf import OmegaConf, DictConfig from omegaconf import OmegaConf, DictConfig
from pathlib import Path from pathlib import Path
from komconfig import CONFIG_PATH from komconfig import CONFIG_PATH
from urllib.parse import quote_plus
SETTINGS_PATH = os.path.join(CONFIG_PATH, "config.yaml") SETTINGS_PATH = os.path.join(CONFIG_PATH, "config.yaml")
@dataclass
class RemoteSettings:
url: str
port: int
user: str
password: str
database_name: str = "komcache"
@dataclass
class Cache:
mode: str
remote: dict[str, Union[str, int]] |RemoteSettings
local_path: str | Path
def __post__init__(self):
if self.mode == "remote":
self.remote = RemoteSettings(**self.remote)
else:
self.remote = None
self.local_path = Path(self.local_path).expanduser()
@property
def path(self):
if self.mode == "local":
return Path(self.local_path).expanduser()
else:
return f"{self.remote.url}:{self.remote.port}"
@property
def url(self):
password = quote_plus(self.remote.password) if self.remote else ""
return f"mysql+pymysql://{self.remote.user}:{password}@{self.remote.url}:{self.remote.port}/{self.remote.database_name}"
@dataclass @dataclass
class Komga: class Komga:
"""Komga server settings.""" """Komga server settings."""
@@ -329,6 +364,10 @@ class Settings:
def komtagger(self): def komtagger(self):
return KomTagger(**self._config.komtagger) return KomTagger(**self._config.komtagger)
@property
def cache(self):
return Cache(**self._config.cache)
def komtagger_attr(self, name): def komtagger_attr(self, name):
return getattr(self.komtagger, name) return getattr(self.komtagger, name)