Compare commits
1 Commits
main
...
47d1b35514
| Author | SHA1 | Date | |
|---|---|---|---|
| 47d1b35514 |
@@ -1,21 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2023 DB Systel GmbH
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: "Reusable Poetry build workflow"
|
||||
inputs:
|
||||
poetry_install_args:
|
||||
default: ""
|
||||
description: "Value for additional poetry install arguments"
|
||||
required: false
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Add pipx to PATH
|
||||
run: echo "/root/.local/bin" >> ${GITHUB_PATH}
|
||||
- name: Install poetry
|
||||
run: pipx install poetry
|
||||
- name: Install poetry package
|
||||
run: poetry install --no-interaction ${{ inputs.poetry_install_args }}
|
||||
shell: bash
|
||||
@@ -1,41 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: Python Linters
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
pylint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install dependencies
|
||||
uses: ./.gitea/actions/poetrybuild
|
||||
- name: Lint with pylint
|
||||
run: poetry run pylint seafile_mirror
|
||||
|
||||
formatting:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install dependencies
|
||||
uses: ./.gitea/actions/poetrybuild
|
||||
- name: Test formatting with isort and black
|
||||
run: |
|
||||
poetry run isort --check seafile_mirror/
|
||||
poetry run black .
|
||||
|
||||
mypy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install dependencies
|
||||
uses: ./.gitea/actions/poetrybuild
|
||||
- name: Test typing with mypy
|
||||
run: poetry run mypy
|
||||
@@ -1,18 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: Python package
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Build and publish to PyPI
|
||||
uses: https://github.com/JRubics/poetry-publish@v2.1
|
||||
with:
|
||||
pypi_token: ${{ secrets.PYPI_TOKEN }}
|
||||
@@ -1,19 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: REUSE Compliance
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
reuse:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Check REUSE Compliance
|
||||
uses: https://github.com/fsfe/reuse-action@v6
|
||||
@@ -1,59 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2023 DB Systel GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: Selftests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
# Test building the package and installing it via pip3
|
||||
test-build-install:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Add pipx to PATH
|
||||
run: echo "/root/.local/bin" >> ${GITHUB_PATH}
|
||||
- name: Install poetry
|
||||
run: pipx install poetry
|
||||
- name: Build package
|
||||
run: poetry build
|
||||
- name: Install package
|
||||
run: pip3 install dist/seafile_mirror-*.tar.gz
|
||||
- name: Run package
|
||||
run: |
|
||||
seafile-mirror --version
|
||||
seafile-mirror --help
|
||||
|
||||
# Run tool and sync a test library
|
||||
test-sync:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install dependencies
|
||||
uses: ./.gitea/actions/poetrybuild
|
||||
# using minimal set of dependencies
|
||||
with:
|
||||
poetry_install_args: "--without dev"
|
||||
- name: Install seaf-cli
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y seafile-cli
|
||||
- name: Configure seaf-cli and start daemon
|
||||
run: |
|
||||
seaf-cli init -d /tmp
|
||||
seaf-cli start
|
||||
- name: Fill configuration for test library
|
||||
run: |
|
||||
sed -i "s|__seafile_server__|${{ secrets.SEAFILE_SERVER }}|" tests/seafile_mirror.conf.yaml
|
||||
sed -i "s|__seafile_user__|${{ secrets.SEAFILE_USER }}|" tests/seafile_mirror.conf.yaml
|
||||
sed -i "s|__seafile_pass__|${{ secrets.SEAFILE_PASS }}|" tests/seafile_mirror.conf.yaml
|
||||
- name: Sync the library
|
||||
run: poetry run seafile-mirror -c tests -v
|
||||
- name: Attempt to find expected string in library
|
||||
run: grep "__ci_test_expect__" tests/ci-test/testfile.txt
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,4 +8,3 @@ venv/
|
||||
/seafile_mirror.conf.yaml
|
||||
__pycache__/
|
||||
*.log
|
||||
tests/ci-test/
|
||||
|
||||
960
poetry.lock
generated
960
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@
|
||||
|
||||
[tool.poetry]
|
||||
name = "seafile-mirror"
|
||||
version = "0.2.2"
|
||||
version = "0.1.0"
|
||||
description = "Handle clean read-only (re-)syncs of Seafile libraries to mirror them"
|
||||
authors = ["Max Mehl <mail@mehl.mx>"]
|
||||
license = "Apache-2.0"
|
||||
@@ -20,13 +20,12 @@ python = "^3.10"
|
||||
pyyaml = "^6.0.1"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pylint = "^4.0.0"
|
||||
isort = "^8.0.0"
|
||||
black = "^26.0.0"
|
||||
pylint = "^3.0.0"
|
||||
isort = "^5.12.0"
|
||||
black = "^23.9.1"
|
||||
mypy = "^1.5.1"
|
||||
pylama = "^8.4.1"
|
||||
types-pyyaml = "^6.0.12.11"
|
||||
bump-my-version = "^1.0.0"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
@@ -42,16 +41,3 @@ line-length = 100
|
||||
# MYPY settings
|
||||
[tool.mypy]
|
||||
files = ["seafile_mirror/*.py"]
|
||||
|
||||
# Bump-My-Version
|
||||
[tool.bumpversion]
|
||||
commit = true
|
||||
tag = true
|
||||
allow_dirty = false
|
||||
tag_name = "v{new_version}"
|
||||
|
||||
[[tool.bumpversion.files]]
|
||||
filename = "pyproject.toml"
|
||||
regex = true
|
||||
search = "^version = \"{current_version}\""
|
||||
replace = "version = \"{new_version}\""
|
||||
|
||||
@@ -1,18 +1,4 @@
|
||||
{
|
||||
$schema: "https://docs.renovatebot.com/renovate-schema.json",
|
||||
extends: ["local>renovate-bot/renovate-config"],
|
||||
"packageRules": [
|
||||
// Group and merge all dev dependencies, even major versions
|
||||
{
|
||||
"matchDepTypes": ["dev"],
|
||||
"groupName": "all-dev-dependencies",
|
||||
"automerge": true
|
||||
},
|
||||
// Merge all other patch and minor dependencies
|
||||
{
|
||||
"matchUpdateTypes": ["minor", "patch"],
|
||||
"matchCurrentVersion": "!/^0/",
|
||||
"automerge": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
@@ -1,10 +1,3 @@
|
||||
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
"""Global init file"""
|
||||
|
||||
from importlib.metadata import version
|
||||
|
||||
__version__ = version("seafile-mirror")
|
||||
|
||||
@@ -14,7 +14,6 @@ from time import sleep
|
||||
|
||||
import yaml
|
||||
|
||||
from . import __version__
|
||||
from ._cachedb import db_read
|
||||
from ._helpers import convert_bytes, findstring, get_lock
|
||||
from ._seafile import (
|
||||
@@ -27,11 +26,6 @@ from ._seafile import (
|
||||
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("-c", "--configdir", required=True, help="The config directory")
|
||||
parser.add_argument(
|
||||
"-l",
|
||||
"--logfile",
|
||||
help="The path to the logfile. Default: <configdir>/seafile_mirror.log",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-d",
|
||||
"--dry",
|
||||
@@ -54,20 +48,16 @@ parser.add_argument(
|
||||
default=False,
|
||||
help="Print and log DEBUG messages",
|
||||
)
|
||||
parser.add_argument("--version", action="version", version="%(prog)s " + __version__)
|
||||
|
||||
|
||||
def main(): # pylint: disable=too-many-locals, too-many-statements, too-many-branches
|
||||
def main():
|
||||
"""Main function"""
|
||||
args = parser.parse_args()
|
||||
# Set files depending on configdir
|
||||
configdir = args.configdir.rstrip("/") + "/"
|
||||
configfile = configdir + "seafile_mirror.conf.yaml"
|
||||
cachefile = configdir + ".seafile_mirror.db.json"
|
||||
if args.logfile:
|
||||
logfile = args.logfile
|
||||
else:
|
||||
logfile = configdir + "seafile_mirror.log"
|
||||
logfile = configdir + "seafile_mirror.log"
|
||||
|
||||
# Logging
|
||||
log = logging.getLogger()
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# Configuration file for seafile-mirror which will be filled in and applied in
|
||||
# the CI test
|
||||
- server: __seafile_server__
|
||||
user: __seafile_user__
|
||||
password: __seafile_pass__
|
||||
# The default resync interval
|
||||
resync_interval_days: 7
|
||||
# Define the libraries which shall be synced
|
||||
libs:
|
||||
- name: ci-test
|
||||
# ID of the Seafile library (can be seen in the web UI)
|
||||
id: 558667f5-cee2-443d-8f8e-668e70a23e9f
|
||||
# local directory where the mirror shall be created
|
||||
dir: tests/ci-test
|
||||
Reference in New Issue
Block a user