Preparing pre-commit setup

This commit is contained in:
jpk 2023-01-10 15:45:35 +01:00
parent 3097807b05
commit ed73c9ebe3
7 changed files with 130 additions and 17 deletions

View File

@ -1 +1 @@
__version__ = '0.1.0' __version__ = "0.1.0"

View File

@ -1,11 +1,11 @@
import click
from pathlib import Path from pathlib import Path
import click
from rich import print from rich import print
from rich.tree import Tree from rich.tree import Tree
from doxy.config import Config
from doxy import services from doxy import services
from doxy.config import Config
@click.group() @click.group()
@ -29,14 +29,20 @@ def list(ctx):
def complete_service_name(ctx, param, incomplete): def complete_service_name(ctx, param, incomplete):
config = Config() config = Config()
config.load() config.load()
return [k for k in services.find_services(Path(config.root_directory)) if k.startswith(incomplete)] return [
k
for k in services.find_services(Path(config.root_directory))
if k.startswith(incomplete)
]
@click.command() @click.command()
@click.argument("service", nargs=1, shell_complete=complete_service_name) @click.argument("service", nargs=1, shell_complete=complete_service_name)
@click.pass_context @click.pass_context
def edit(ctx, service): def edit(ctx, service):
compose_file = services.get_compose_file(Path(ctx.obj["CONFIG"].root_directory) / service) compose_file = services.get_compose_file(
Path(ctx.obj["CONFIG"].root_directory) / service
)
click.edit(filename=Path(compose_file)) click.edit(filename=Path(compose_file))
@ -45,7 +51,9 @@ def edit(ctx, service):
@click.argument("service", nargs=1, shell_complete=complete_service_name) @click.argument("service", nargs=1, shell_complete=complete_service_name)
@click.argument("command", nargs=-1) @click.argument("command", nargs=-1)
def control(ctx, service, command): def control(ctx, service, command):
compose_file = services.get_compose_file(Path(ctx.obj["CONFIG"].root_directory) / service) compose_file = services.get_compose_file(
Path(ctx.obj["CONFIG"].root_directory) / service
)
services.docker_compose_command(command, compose_file) services.docker_compose_command(command, compose_file)

View File

@ -1,14 +1,16 @@
from xdg import xdg_config_home
from pathlib import Path
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path
from xdg import xdg_config_home
from yamldataclassconfig import create_file_path_field from yamldataclassconfig import create_file_path_field
from yamldataclassconfig.config import YamlDataClassConfig from yamldataclassconfig.config import YamlDataClassConfig
@dataclass @dataclass
class Config(YamlDataClassConfig): class Config(YamlDataClassConfig):
root_directory: str = None root_directory: str = ""
compose_executable: str = None compose_executable: str = ""
FILE_PATH: Path = create_file_path_field(Path(xdg_config_home()) / "doxy/config.yml") FILE_PATH: Path = create_file_path_field(
Path(xdg_config_home()) / "doxy/config.yml"
)

View File

@ -1,7 +1,7 @@
import glob import glob
from typing import List
from pathlib import Path
import subprocess import subprocess
from pathlib import Path
from typing import List
import click import click
@ -18,7 +18,7 @@ def get_compose_file(service_path: Path) -> Path:
raise FileNotFoundError raise FileNotFoundError
def docker_compose_command(commands: List[str], compose_file: Path): def docker_compose_command(commands: List[str], compose_file: Path):
ctx = click.get_current_context() ctx = click.get_current_context()
config = ctx.obj["CONFIG"] config = ctx.obj["CONFIG"]
cmd = [config.compose_executable, "-f", compose_file] + list(commands) cmd = [config.compose_executable, "-f", compose_file] + list(commands)

104
poetry.lock generated
View File

@ -22,6 +22,14 @@ tests = ["attrs", "zope.interface"]
tests-no-zope = ["hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist", "cloudpickle", "mypy (>=0.971,<0.990)", "pytest-mypy-plugins"] tests-no-zope = ["hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist", "cloudpickle", "mypy (>=0.971,<0.990)", "pytest-mypy-plugins"]
tests_no_zope = ["hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist", "cloudpickle", "mypy (>=0.971,<0.990)", "pytest-mypy-plugins"] tests_no_zope = ["hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist", "cloudpickle", "mypy (>=0.971,<0.990)", "pytest-mypy-plugins"]
[[package]]
name = "cfgv"
version = "3.3.1"
description = "Validate configuration and produce human readable error messages."
category = "dev"
optional = false
python-versions = ">=3.6.1"
[[package]] [[package]]
name = "click" name = "click"
version = "8.1.3" version = "8.1.3"
@ -68,6 +76,37 @@ typing-inspect = ">=0.4.0"
[package.extras] [package.extras]
dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"] dev = ["pytest (>=6.2.3)", "ipython", "mypy (>=0.710)", "hypothesis", "portray", "flake8", "simplejson", "types-dataclasses"]
[[package]]
name = "distlib"
version = "0.3.6"
description = "Distribution utilities"
category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "filelock"
version = "3.9.0"
description = "A platform independent file lock."
category = "dev"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["furo (>=2022.12.7)", "sphinx-autodoc-typehints (>=1.19.5)", "sphinx (>=5.3)"]
testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)", "pytest (>=7.2)"]
[[package]]
name = "identify"
version = "2.5.12"
description = "File identification library for Python"
category = "dev"
optional = false
python-versions = ">=3.7"
[package.extras]
license = ["ukkonen"]
[[package]] [[package]]
name = "marshmallow" name = "marshmallow"
version = "3.19.0" version = "3.19.0"
@ -112,6 +151,14 @@ category = "main"
optional = false optional = false
python-versions = "*" python-versions = "*"
[[package]]
name = "nodeenv"
version = "1.7.0"
description = "Node.js virtual environment builder"
category = "dev"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
[[package]] [[package]]
name = "packaging" name = "packaging"
version = "23.0" version = "23.0"
@ -120,6 +167,18 @@ category = "main"
optional = false optional = false
python-versions = ">=3.7" python-versions = ">=3.7"
[[package]]
name = "platformdirs"
version = "2.6.2"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.19.5)", "sphinx (>=5.3)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest (>=7.2)"]
[[package]] [[package]]
name = "pluggy" name = "pluggy"
version = "0.13.1" version = "0.13.1"
@ -131,6 +190,21 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[package.extras] [package.extras]
dev = ["pre-commit", "tox"] dev = ["pre-commit", "tox"]
[[package]]
name = "pre-commit"
version = "2.21.0"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
category = "dev"
optional = false
python-versions = ">=3.7"
[package.dependencies]
cfgv = ">=2.0.0"
identify = ">=1.0.0"
nodeenv = ">=0.11.1"
pyyaml = ">=5.1"
virtualenv = ">=20.10.0"
[[package]] [[package]]
name = "py" name = "py"
version = "1.11.0" version = "1.11.0"
@ -215,6 +289,23 @@ python-versions = "*"
mypy-extensions = ">=0.3.0" mypy-extensions = ">=0.3.0"
typing-extensions = ">=3.7.4" typing-extensions = ">=3.7.4"
[[package]]
name = "virtualenv"
version = "20.17.1"
description = "Virtual Python Environment builder"
category = "dev"
optional = false
python-versions = ">=3.6"
[package.dependencies]
distlib = ">=0.3.6,<1"
filelock = ">=3.4.1,<4"
platformdirs = ">=2.4,<3"
[package.extras]
docs = ["proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-argparse (>=0.3.2)", "sphinx-rtd-theme (>=1)", "towncrier (>=22.8)"]
testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"]
[[package]] [[package]]
name = "wcwidth" name = "wcwidth"
version = "0.2.5" version = "0.2.5"
@ -246,11 +337,15 @@ pyyaml = "*"
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.10" python-versions = "^3.10"
content-hash = "72942f32380106b34c1f20b641d7483fe6a897edb751978223a6c971b6b5bb27" content-hash = "170eebbe419588237954ba9ca730e93d253a3c4baba92e4a26a88eff89fce121"
[metadata.files] [metadata.files]
atomicwrites = [] atomicwrites = []
attrs = [] attrs = []
cfgv = [
{file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
{file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
]
click = [ click = [
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
@ -261,6 +356,9 @@ commonmark = [
{file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"},
] ]
dataclasses-json = [] dataclasses-json = []
distlib = []
filelock = []
identify = []
marshmallow = [] marshmallow = []
marshmallow-enum = [] marshmallow-enum = []
more-itertools = [] more-itertools = []
@ -268,8 +366,11 @@ mypy-extensions = [
{file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
] ]
nodeenv = []
packaging = [] packaging = []
platformdirs = []
pluggy = [] pluggy = []
pre-commit = []
py = [ py = [
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
@ -314,6 +415,7 @@ pyyaml = [
rich = [] rich = []
typing-extensions = [] typing-extensions = []
typing-inspect = [] typing-inspect = []
virtualenv = []
wcwidth = [] wcwidth = []
xdg = [] xdg = []
yamldataclassconfig = [] yamldataclassconfig = []

View File

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "doxy" name = "doxy"
version = "0.2.0" version = "0.3.0"
description = "" description = ""
authors = ["jpk <jpk@goatpr0n.de>"] authors = ["jpk <jpk@goatpr0n.de>"]
@ -16,6 +16,7 @@ doxy = "doxy.cli:main"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
pytest = "^5.2" pytest = "^5.2"
pre-commit = "^2.21.0"
[build-system] [build-system]
requires = ["poetry-core>=1.0.0"] requires = ["poetry-core>=1.0.0"]

View File

@ -2,4 +2,4 @@ from doxy import __version__
def test_version(): def test_version():
assert __version__ == '0.1.0' assert __version__ == "0.1.0"