Compare commits
14 Commits
c1f9cb996b
...
main
Author | SHA1 | Date | |
---|---|---|---|
6095290195 | |||
afd46ee7d2 | |||
59f8adf860 | |||
4623f63bed | |||
074cb16b1c | |||
92dace165b | |||
e65e16d37b | |||
5df275fba9 | |||
cd426cdcb2 | |||
a3c53cd015 | |||
2cc4ff1b85 | |||
f994988fdd | |||
81bc1886fd | |||
ebd4e8c9dc |
14
.drone.yml
14
.drone.yml
@ -5,18 +5,18 @@ name: build and publish
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: python
|
||||
image: registry.kucharczyk.tech/python-pypi
|
||||
commands:
|
||||
- python -m build
|
||||
- name: publish
|
||||
image: plugins/pypi
|
||||
settings:
|
||||
username:
|
||||
image: registry.kucharczyk.tech/python-pypi
|
||||
commands:
|
||||
- python -m twine upload -u $USERNAME -p $PASSWORD dist/*
|
||||
environment:
|
||||
USERNAME:
|
||||
from_secret: pypi_username
|
||||
password:
|
||||
PASSWORD:
|
||||
from_secret: pypi_password
|
||||
trigger:
|
||||
branch:
|
||||
- main
|
||||
event:
|
||||
- tag
|
||||
|
14
.editorconfig
Normal file
14
.editorconfig
Normal file
@ -0,0 +1,14 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
trim_trailing_whitespace = true
|
||||
end_of_line = lf
|
||||
insert_final_newline = false
|
||||
charset = utf-8
|
||||
|
||||
[*.py]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[Makefile]
|
||||
indent_size = tab
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
.vscode
|
||||
dist
|
||||
src/*.egg-info
|
||||
__pycache__
|
||||
.pytest_cache
|
7
Makefile
Normal file
7
Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
init:
|
||||
pip install -r requirements.txt
|
||||
|
||||
test:
|
||||
py.test tests
|
||||
|
||||
.PHONY: init test
|
29
manga_up/__main__.py
Normal file
29
manga_up/__main__.py
Normal file
@ -0,0 +1,29 @@
|
||||
"""
|
||||
Manga checker and downloader
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Check for manga updates and download them."
|
||||
)
|
||||
parser.add_argument(
|
||||
'-d', '--destination', type=str, required=True, help="Target destination where the download file should be saved."
|
||||
)
|
||||
parser.add_argument(
|
||||
'-s', '--chapter-start', type=int, default=1, help="From which chapter should the program check."
|
||||
)
|
||||
parser.add_argument(
|
||||
'-n', '--notify', type=str, default=None, help="Apprise notification string."
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
destination = os.path.abspath(args.destination)
|
||||
|
||||
if not os.path.exists(destination):
|
||||
print(f'Destination {destination} does not exist.')
|
||||
if not os.path.isdir(destination):
|
||||
print(f'Destination {destination} is not a directory.')
|
@ -6,7 +6,6 @@ author_email = lukas@kucharczyk.xyz
|
||||
description = A simple manga update checker and downloader
|
||||
long_description = file: README.md
|
||||
long_description_content_type = text/markdown
|
||||
license = GPLv3+
|
||||
url = https://git.kucharczyk.xyz/lukas/manga-up
|
||||
project_urls =
|
||||
Bug Tracker = https://git.kucharczyk.xyz/lukas/manga-up/issues
|
||||
|
@ -1,4 +0,0 @@
|
||||
import requests
|
||||
|
||||
response = requests.get('https://httpbin.org/ip')
|
||||
print('Code is {0}.'.format(response.status_code))
|
0
tests/__init__.py
Normal file
0
tests/__init__.py
Normal file
29
tests/test_arguments.py
Normal file
29
tests/test_arguments.py
Normal file
@ -0,0 +1,29 @@
|
||||
from subprocess import CalledProcessError
|
||||
import unittest
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
|
||||
class ArgumentTestClass(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
import tempfile
|
||||
self.existing_dir = tempfile.mkdtemp()
|
||||
|
||||
def test_argument_required(self):
|
||||
with self.assertRaises(CalledProcessError):
|
||||
subprocess.check_output(['python', 'manga_up'])
|
||||
|
||||
def test_destination_exists(self):
|
||||
result = subprocess.check_output(['python', 'manga_up', '--destination', 'nonexistent'])
|
||||
self.assertIn('does not exist', str(result))
|
||||
|
||||
def test_destination_is_not_directory(self):
|
||||
result = subprocess.check_output(['python', 'manga_up', '--destination', self.existing_file])
|
||||
self.assertIn('not a directory', str(result))
|
||||
|
||||
def tearDown(self) -> None:
|
||||
os.rmdir(self.existing_dir)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Reference in New Issue
Block a user