messing around with nested commands in click
This commit is contained in:
parent
66e0ef1a51
commit
830ec3b3d0
16
.vscode/settings.json
vendored
Normal file
16
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.organizeImports": "explicit"
|
||||||
|
},
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"files.trimTrailingWhitespace": true,
|
||||||
|
"[python]": {
|
||||||
|
"diffEditor.ignoreTrimWhitespace": false,
|
||||||
|
"gitlens.codeLens.symbolScopes": [
|
||||||
|
"!Module"
|
||||||
|
],
|
||||||
|
"editor.formatOnType": false,
|
||||||
|
"editor.wordBasedSuggestions": "off",
|
||||||
|
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||||
|
}
|
||||||
|
}
|
1
Pipfile
1
Pipfile
|
@ -6,6 +6,7 @@ name = "pypi"
|
||||||
[packages]
|
[packages]
|
||||||
gotify = "*"
|
gotify = "*"
|
||||||
click = "*"
|
click = "*"
|
||||||
|
toml = "*"
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
|
|
||||||
|
|
66
goat_monitor.py
Normal file
66
goat_monitor.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# %% imports
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
import click
|
||||||
|
import gotify
|
||||||
|
import toml
|
||||||
|
|
||||||
|
__version__ = "v0.0.0"
|
||||||
|
|
||||||
|
|
||||||
|
# %% commands
|
||||||
|
|
||||||
|
|
||||||
|
@click.command()
|
||||||
|
@click.pass_context
|
||||||
|
# @click.option(
|
||||||
|
# "--config",
|
||||||
|
# default="~/.config/goat_monitor.toml",
|
||||||
|
# type=click.Path(exists=False, writable=True, path_type=Path),
|
||||||
|
# help="Specify a .toml configuration file location",
|
||||||
|
# )
|
||||||
|
# def init(config: Path):
|
||||||
|
# with open(config, "w") as f:
|
||||||
|
# cfg_data = dict()
|
||||||
|
# toml.dump(cfg_data, f)
|
||||||
|
def create_config(ctx):
|
||||||
|
print("init called")
|
||||||
|
print(ctx)
|
||||||
|
|
||||||
|
|
||||||
|
@click.group(invoke_without_command=True)
|
||||||
|
@click.argument("command", nargs=-1, required=False, type=str)
|
||||||
|
@click.option(
|
||||||
|
"--config",
|
||||||
|
default="~/.config/goat_monitor.toml",
|
||||||
|
type=click.Path(path_type=Path),
|
||||||
|
help="Use a .toml configuration file",
|
||||||
|
)
|
||||||
|
@click.option("--init", is_flag=True, default=False, help="Create a configuration file")
|
||||||
|
@click.pass_context
|
||||||
|
def wrap(ctx, command: List[str], config: Path, init: bool): # , config: Path):
|
||||||
|
"""Wrap an arbitrary command with gotify notifications"""
|
||||||
|
|
||||||
|
if init:
|
||||||
|
print("calling init")
|
||||||
|
create_config(command)
|
||||||
|
else:
|
||||||
|
# run the command
|
||||||
|
result = subprocess.run(
|
||||||
|
command,
|
||||||
|
shell=True,
|
||||||
|
stderr=subprocess.STDOUT,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
# TODO: print lines real time as the subprocess runs
|
||||||
|
print(result.stdout, end="")
|
||||||
|
|
||||||
|
return result.returncode
|
||||||
|
|
||||||
|
|
||||||
|
# %% main
|
||||||
|
if __name__ == "__main__":
|
||||||
|
wrap()
|
17
pyproject.toml
Normal file
17
pyproject.toml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
[tool.black]
|
||||||
|
line-length = 120
|
||||||
|
exclude = '''
|
||||||
|
/(
|
||||||
|
\.eggs
|
||||||
|
| \.git
|
||||||
|
| \.hg
|
||||||
|
| \.mypy_cache
|
||||||
|
| \.tox
|
||||||
|
| \.venv
|
||||||
|
| \.vscode
|
||||||
|
| _build
|
||||||
|
| buck-out
|
||||||
|
| build
|
||||||
|
| dist
|
||||||
|
)/
|
||||||
|
'''
|
4
setup.cfg
Normal file
4
setup.cfg
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
[flake8]
|
||||||
|
exclude = **/*__init__.py,.venv/*,tox/*,build/*,dist/*
|
||||||
|
ignore = C901,E203,E731,W503
|
||||||
|
max-line-length = 120
|
Loading…
Reference in New Issue
Block a user