Skip to content

Commit

Permalink
cleaned __init__
Browse files Browse the repository at this point in the history
  • Loading branch information
faermanj committed Oct 20, 2023
1 parent 332581e commit 9dcfaa4
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 36 deletions.
39 changes: 6 additions & 33 deletions up_cli/src/up_cli/__init__.py
Original file line number Diff line number Diff line change
@@ -1,44 +1,17 @@
import pluggy
import logging as log
from dataclasses import dataclass, field
from typing import TypeAlias
from typing import Callable

Prompt:TypeAlias = list[str]

# Is this the right way to do this?
from .containers import RunConfig
from .match import match_prompt

hookimpl = pluggy.HookimplMarker("up")
pm = pluggy.PluginManager("up")

# https://docker-py.readthedocs.io/en/stable/containers.html
@dataclass
class RunConfig:
name: str = field(kw_only=True, default="")
image: str = field(kw_only=True, default="")
command: list[str] = field(kw_only=True, default_factory=list)
environment: dict[str, str] = field(kw_only=True, default_factory=dict)
ports: dict[str, str] = field(kw_only=True, default_factory=dict)
volumes: dict[str, str] = field(kw_only=True, default_factory=dict)
auto_remove: bool = field(kw_only=True, default=True)
network_mode: str = field(kw_only=True, default="host")


RunConfigs:TypeAlias = list[RunConfig]
Prompt:TypeAlias = list[str]

def does_match(prompt: Prompt, args) -> bool:
for p, a in zip(prompt, args):
if p != a:
return False
return True

def match_prompt(mk_run_config: Callable[[], RunConfig],
prompt: Prompt,
*args) -> list[RunConfig]:
if not prompt:
return None
if does_match(prompt, args):
log.info(f"MATCH: prompt={prompt}, args={args}")
return [mk_run_config(prompt)]
log.info(f"NO MATCH: prompt={prompt}, args={args}")
return None



17 changes: 16 additions & 1 deletion up_cli/src/up_cli/containers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
import logging as log
import docker
from dataclasses import dataclass, field
from typing import TypeAlias

# https://docker-py.readthedocs.io/en/stable/containers.html
@dataclass
class RunConfig:
name: str = field(kw_only=True, default="")
image: str = field(kw_only=True, default="")
command: list[str] = field(kw_only=True, default_factory=list)
environment: dict[str, str] = field(kw_only=True, default_factory=dict)
ports: dict[str, str] = field(kw_only=True, default_factory=dict)
volumes: dict[str, str] = field(kw_only=True, default_factory=dict)
auto_remove: bool = field(kw_only=True, default=True)
network_mode: str = field(kw_only=True, default="host")

RunConfigs:TypeAlias = list[RunConfig]

from up_cli import RunConfig

class DockerContainers:
def run(self, run: RunConfig):
Expand Down
3 changes: 2 additions & 1 deletion up_cli/src/up_cli/hookspec.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import pluggy
from up_cli import Prompt, RunConfigs
from . import Prompt
from .containers import RunConfigs

hookspec = pluggy.HookspecMarker("up")

Expand Down
21 changes: 21 additions & 0 deletions up_cli/src/up_cli/match.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import logging as log
from . import Prompt
from typing import Callable
from .containers import RunConfig

def does_match(prompt: Prompt, args) -> bool:
for p, a in zip(prompt, args):
if p != a:
return False
return True

def match_prompt(mk_run_config: Callable[[], RunConfig],
prompt: Prompt,
*args) -> list[RunConfig]:
if not prompt:
return None
if does_match(prompt, args):
log.info(f"MATCH: prompt={prompt}, args={args}")
return [mk_run_config(prompt)]
log.info(f"NO MATCH: prompt={prompt}, args={args}")
return None
2 changes: 1 addition & 1 deletion up_splat/up_splat/run_for_prompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
def mk_run_config(prompt):
result = RunConfig(
image="fedora",
command=['echo', 'Thank you for trying UP: '] + prompt)
command=['echo', 'Thanks for trying UP: '] + prompt)
return result

@hookimpl
Expand Down

0 comments on commit 9dcfaa4

Please sign in to comment.