From 07a33c5794ee5849f9b035f0e00d4577fad692b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com>
Date: Thu, 16 Apr 2020 15:25:27 +0200
Subject: [PATCH] Basic readme and makefile

---
 Makefile              |  51 ++++++++++++++++++
 README.md             | 118 ++++++++++++++++++++++++++++++++++++++++++
 requirements/base.in  |   2 +
 requirements/base.txt |  30 +++++++++++
 4 files changed, 201 insertions(+)
 create mode 100644 Makefile
 create mode 100644 README.md
 create mode 100644 requirements/base.in
 create mode 100644 requirements/base.txt

diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..3cf90142
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,51 @@
+#!/usr/bin/make -f
+
+PYTHON = python
+VENV   = .venv
+PORT   = 8006
+
+help:
+	@echo "Setup:"
+	@echo "  venv           Setup virtual environment"
+	@echo "  install        Install dependencies to venv"
+	@echo "  install-hooks  Install pre-commit hooks"
+	@echo "  hooks          Run pre-commit hooks manually"
+	@echo ""
+	@echo "Application:"
+	@echo "  run            Run the application on port ${PORT}"
+	@echo "  shell          Run Django shell"
+	@echo ""
+	@echo "Database:"
+	@echo "  migrations     Generate migrations"
+	@echo "  migrate        Run migrations"
+	@echo ""
+
+venv: .venv/bin/python
+.venv/bin/python:
+	${PYTHON} -m venv ${VENV}
+
+install: venv
+	${VENV}/bin/pip install -r requirements/base.txt
+
+install-hooks:
+	pre-commit install --install-hooks
+
+hooks:
+	pre-commit run -a
+
+run: venv
+	${VENV}/bin/python manage.py runserver ${PORT}
+
+shell: venv
+	${VENV}/bin/python manage.py shell_plus
+
+migrations: venv
+	${VENV}/bin/python manage.py makemigrations
+
+migrate: venv
+	${VENV}/bin/python manage.py migrate
+
+.PHONY: help venv install install-hooks hooks run shell
+.PHONY: migrations migrate
+
+# EOF
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..e5ea509c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,118 @@
+# Maják
+
+Maják je CMS pro Pirátské weby. Postavený je na [Wagtail](https://wagtail.io/).
+
+## Vývoj
+
+Pro vývoj je definován pomocný `Makefile` pro časté akce.
+
+### Lokální instalace a spuštění
+
+#### Vytvoření virtualenv pro instalaci závislostí
+
+Vytvoř virtualenv:
+
+    $ make venv
+
+Vytvoří virtualenv ve složce `.venv`. Předpokládá že výchozí `python` v terminálu
+je Python 3. Pokud tomu tak není, použijte třeba [Pyenv](https://github.com/pyenv/pyenv)
+pro instalaci více verzí Pythonu bez rizika rozbití systému.
+
+#### Aktivace virtualenvu
+
+Před prací na projektu je třeba aktivovat virtualenv. To bohužel nejde dělat
+pomocí nástroje `make`. Je třeba zavolat příkaz:
+
+    $ source .venv/bin/activate
+
+Můžete asi na to vytvořit alias pro shell. Do `~/.bash_profile` nebo `~/.zshrc`
+nebo jiného konfiguračního souboru dle vašeho shellu přidejte:
+
+    alias senv='source .venv/bin/activate'
+
+A pak můžete virtualenv aktivovat pouze jednoduchým voláním:
+
+    $ senv
+
+Pro sofistikovanější řešení, které vám aktivuje virtualenv při změně adresáře na
+adresář s projektem, slouží nástroj [direnv](https://direnv.net/).
+
+Deaktivace virtualenvu se dělá příkazem:
+
+    $ deactivate
+
+#### Instalace závislostí
+
+V aktivovaném virtualenvu spusťte:
+
+    $ make install
+
+To nainstaluje Pythonní závislosti pro vývoj projektu na lokále.
+
+#### Nastavení environment proměnných
+
+Nastav environment proměnné (viz konfigurace výše). Pro jednoduchost doporučujeme
+použít [direnv](https://direnv.net/), který nastaví environment proměnné pro vývoj
+při změně adresáře na adresář s projektem. 
+
+### Management projektu
+
+#### Migrace databáze
+
+Aplikuj migrace databáze:
+
+    $ make migrate
+
+Při změně modelů vygeneruj migrace pomocí:
+
+    $ make migrations
+
+#### Spuštění development serveru
+
+Django development server na portu `8003` se spustí příkazem:
+
+    $ make run
+
+Poté můžete otevřít web na adrese [http://localhost:8003](http://localhost:8003)
+
+#### Django shell
+
+Django shell používající `shell_plus` z Django extensions spustíte:
+
+    $ make shell
+
+### Code quality
+
+K formátování kódu se používá [black](https://github.com/psf/black). Doporučujeme
+ho nainstalovat do vašeho editoru kódu, aby soubory přeformátoval po uložení.
+
+Přeformátování kódu nástrojem `black` je součástí `pre-commit` hooks (viz níže).
+
+Součástí `pre-commit` hooků je také automatické seřazení importů v Pythonních
+souborech nástrojem [isort](https://github.com/timothycrosley/isort/).
+
+### Pre-commit hooky
+
+Použivá se [pre-commit](https://pre-commit.com/) framework pro management git
+pre-commit hooks.
+
+Máte-li pre-commit framework [nainstalovaný](https://pre-commit.com/#installation)
+spusttě příkaz:
+
+    $ make install-hooks
+
+Ten naisntaluje hooky pro projekt. A poté při každém commitu dojde k požadovaným
+akcím na změněných souborech.
+
+Ručně se dají hooky na všechny soubory spustit příkazem:
+
+    $ make hooks
+
+## Upgrade závislostí
+
+K upgrade se používají [pip-tools](https://github.com/jazzband/pip-tools) (`pip install pip-tools`):
+
+    $ cd requirements/
+    $ pip-compile -U base.in
+
+Tím se vygenerují `base.txt`.
diff --git a/requirements/base.in b/requirements/base.in
new file mode 100644
index 00000000..30640e47
--- /dev/null
+++ b/requirements/base.in
@@ -0,0 +1,2 @@
+wagtail
+django-extensions
diff --git a/requirements/base.txt b/requirements/base.txt
new file mode 100644
index 00000000..c5d3144e
--- /dev/null
+++ b/requirements/base.txt
@@ -0,0 +1,30 @@
+#
+# This file is autogenerated by pip-compile
+# To update, run:
+#
+#    pip-compile base.in
+#
+asgiref==3.2.7            # via django
+beautifulsoup4==4.6.0     # via wagtail
+certifi==2020.4.5.1       # via requests
+chardet==3.0.4            # via requests
+django-extensions==2.2.9  # via -r base.in
+django-modelcluster==5.0.1  # via wagtail
+django-taggit==1.2.0      # via wagtail
+django-treebeard==4.3.1   # via wagtail
+django==3.0.5             # via django-taggit, django-treebeard, djangorestframework, wagtail
+djangorestframework==3.11.0  # via wagtail
+draftjs-exporter==2.1.7   # via wagtail
+html5lib==1.0.1           # via wagtail
+idna==2.9                 # via requests
+l18n==2018.5              # via wagtail
+pillow==6.2.2             # via wagtail
+pytz==2019.3              # via django, django-modelcluster, l18n
+requests==2.23.0          # via wagtail
+six==1.14.0               # via django-extensions, html5lib, l18n
+sqlparse==0.3.1           # via django
+unidecode==1.1.1          # via wagtail
+urllib3==1.25.8           # via requests
+wagtail==2.8.1            # via -r base.in
+webencodings==0.5.1       # via html5lib
+willow==1.3               # via wagtail
-- 
GitLab