Packaging and docker publishing
This commit is contained in:
parent
e4fb12d173
commit
5797dc0dee
7 changed files with 127 additions and 32 deletions
31
Dockerfile
Normal file
31
Dockerfile
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
FROM python:3.13.1-alpine3.20
|
||||||
|
|
||||||
|
ARG DIST_VERSION=1.0
|
||||||
|
ARG DIST_FILENAME=dumbremind-${DIST_VERSION}-py3-none-any.whl
|
||||||
|
|
||||||
|
RUN apk update && apk add bash && apk add wget
|
||||||
|
|
||||||
|
# Timezone
|
||||||
|
RUN apk add tzdata
|
||||||
|
RUN cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
|
||||||
|
RUN echo "Europe/Paris" > /etc/timezone
|
||||||
|
|
||||||
|
# Clean apk cache
|
||||||
|
RUN rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
COPY docker/docker-init.sh /usr/local/bin/
|
||||||
|
RUN chmod +x usr/local/bin/docker-init.sh
|
||||||
|
|
||||||
|
RUN cd /
|
||||||
|
COPY dist/${DIST_FILENAME} /
|
||||||
|
RUN python3 -m pip install ${DIST_FILENAME}
|
||||||
|
# --target /app
|
||||||
|
RUN rm -f ${DIST_FILENAME}
|
||||||
|
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
# NEVER PUBLISH IMAGE ON PUBLIC REPOSITORY
|
||||||
|
COPY .env /.env
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
WORKDIR /
|
||||||
|
CMD ["docker-init.sh"]
|
||||||
39
Makefile
Normal file
39
Makefile
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
ifeq (run,$(firstword $(MAKECMDGOALS)))
|
||||||
|
# use the rest as arguments for "run"
|
||||||
|
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
||||||
|
# ...and turn them into do-nothing targets
|
||||||
|
$(eval $(RUN_ARGS):;@:)
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: all build run test
|
||||||
|
|
||||||
|
# code quality
|
||||||
|
all: black typehint lint
|
||||||
|
|
||||||
|
black:
|
||||||
|
uv run isort --multi-line 3 --profile black src/ tests/
|
||||||
|
uv run black --target-version py311 src/ tests/
|
||||||
|
|
||||||
|
typehint:
|
||||||
|
uv run mypy --ignore-missing-imports src/ tests/
|
||||||
|
|
||||||
|
lint:
|
||||||
|
uv run pylint src/
|
||||||
|
|
||||||
|
# check
|
||||||
|
check: all
|
||||||
|
|
||||||
|
# build
|
||||||
|
build:
|
||||||
|
# https://stackoverflow.com/questions/24347450/how-do-you-add-additional-files-to-a-wheel
|
||||||
|
rm -rf build/* dist/* *.egg-info
|
||||||
|
uv sync
|
||||||
|
uv build --wheel --out-dir dist
|
||||||
|
docker build -t source.madyanne.fr/yax/dumbremind .
|
||||||
|
|
||||||
|
publish:
|
||||||
|
docker push source.madyanne.fr/yax/dumbremind
|
||||||
|
|
||||||
|
# run
|
||||||
|
run:
|
||||||
|
uv run -m dumbremind
|
||||||
23
README.md
23
README.md
|
|
@ -2,6 +2,25 @@
|
||||||
|
|
||||||
Dumb CalDAV Reminder: definitively not a kind name but a very useful tool to retrieve CalDAV events and tasks and output them in a concise way. Combined with a cron and a notification system it should help my poor brain to be more efficient.
|
Dumb CalDAV Reminder: definitively not a kind name but a very useful tool to retrieve CalDAV events and tasks and output them in a concise way. Combined with a cron and a notification system it should help my poor brain to be more efficient.
|
||||||
|
|
||||||
Usage : copy .env.default as .env then edit CalDAV connection parameters and and number of days to get.
|
## Usage
|
||||||
|
|
||||||
|
copy .env.default as .env then edit CalDAV connection parameters and number of days to retrieve.
|
||||||
|
|
||||||
|
uv run -m dumbremind
|
||||||
|
|
||||||
|
# or make
|
||||||
|
make run
|
||||||
|
|
||||||
|
## Docker :
|
||||||
|
|
||||||
|
Warning: docker image is designed to be published on a private repository because it includes credentials from your .env file
|
||||||
|
|
||||||
|
# build local image
|
||||||
|
make build
|
||||||
|
|
||||||
|
# change publish target first (mine is source.madyanne.fr/yax/dumbremind)
|
||||||
|
make publish
|
||||||
|
|
||||||
|
# run dumbremind in docker (adapt URI) and remove container on exit
|
||||||
|
docker run --rm source.madyanne.fr/yax/dumbremind
|
||||||
|
|
||||||
More to come: docker packaging
|
|
||||||
6
docker/docker-init.sh
Normal file
6
docker/docker-init.sh
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
python3 -m dumbremind
|
||||||
|
|
||||||
|
# catch for debug
|
||||||
|
#tail -f /dev/null
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[project]
|
[project]
|
||||||
name = "caldav-reminder"
|
name = "dumbremind"
|
||||||
version = "1.0"
|
version = "1.0"
|
||||||
description = "CalDav Reminder"
|
description = "Dumb Remind"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Yax" }
|
{ name = "Yax" }
|
||||||
|
|
@ -12,14 +12,9 @@ dependencies = [
|
||||||
"python-dotenv>=1.1.1",
|
"python-dotenv>=1.1.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[dependency-groups]
|
[project.scripts]
|
||||||
dev = [
|
dumbremind = "dumbremind:main"
|
||||||
]
|
|
||||||
|
|
||||||
[tool.setuptools]
|
|
||||||
|
|
||||||
[tool.setuptools.package-data]
|
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["setuptools>=61.0"]
|
requires = ["uv_build>=0.8.17,<0.9.0"]
|
||||||
build-backend = "setuptools.build_meta"
|
build-backend = "uv_build"
|
||||||
0
src/dumbremind/__init__.py
Normal file
0
src/dumbremind/__init__.py
Normal file
|
|
@ -56,6 +56,7 @@ def display_todo(todo: dict[str, str]):
|
||||||
print("Todo : " + todo["summary"])
|
print("Todo : " + todo["summary"])
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
url = 'https://' + quote_plus(USERNAME) + ":" + quote_plus(PASSWORD) \
|
url = 'https://' + quote_plus(USERNAME) + ":" + quote_plus(PASSWORD) \
|
||||||
+ '@' + BASE_URL + quote_plus(USERNAME) + '/'
|
+ '@' + BASE_URL + quote_plus(USERNAME) + '/'
|
||||||
start = date.today()
|
start = date.today()
|
||||||
|
|
@ -78,3 +79,7 @@ for cal in calendars:
|
||||||
display_todo(fill_todo(component, cal))
|
display_todo(fill_todo(component, cal))
|
||||||
|
|
||||||
print(".")
|
print(".")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Add table
Reference in a new issue