Skip to content

Commit

Permalink
add command for exec a script within config
Browse files Browse the repository at this point in the history
context. refactor a bit.
  • Loading branch information
diversen7 committed Oct 2, 2024
1 parent 8561d11 commit 77e8399
Showing 1 changed file with 35 additions and 12 deletions.
47 changes: 35 additions & 12 deletions stadsarkiv_client/commands/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,15 @@ def get_error_message(self) -> str:
return self.error_message


def _get_config_dir(config_dir):
config_dir = config_dir.rstrip("/\\")
config_dir_validator = ConfigDirValidator(config_dir)
if not config_dir_validator.validate():
logger.info(config_dir_validator.get_error_message())
exit(1)

return config_dir

@click.group()
@click.version_option(version=__version__, prog_name=__program__)
def cli():
Expand All @@ -78,14 +87,10 @@ def cli():
@click.option("--port", default=5555, help="Server port.")
@click.option("--workers", default=3, help="Number of workers.")
@click.option("--host", default="0.0.0.0", help="Server host.")
@click.option("-c", "--config-dir", default="local", help="Specify a local config directory.", required=False)
@click.option("-c", "--config-dir", default="local", help="Specify a path to a config directory.", required=False)
def server_prod(port: int, workers: int, host: str, config_dir: str):

config_dir = config_dir.rstrip("/\\")
config_dir_validator = ConfigDirValidator(config_dir)
if not config_dir_validator.validate():
logger.info(config_dir_validator.get_error_message())
exit(1)
config_dir = _get_config_dir(config_dir)

os.environ["CONFIG_DIR"] = config_dir

Expand Down Expand Up @@ -115,14 +120,10 @@ def server_prod(port: int, workers: int, host: str, config_dir: str):
@click.option("--port", default=5555, help="Server port.")
@click.option("--workers", default=1, help="Number of workers.")
@click.option("--host", default="0.0.0.0", help="Server host.")
@click.option("-c", "--config-dir", default="local", help="Specify a local config directory.", required=False)
@click.option("-c", "--config-dir", default="local", help="Specify a path to a config directory.", required=False)
def server_dev(port: int, workers: int, host: str, config_dir: str, reload=True):

config_dir = config_dir.rstrip("/\\")
config_dir_validator = ConfigDirValidator(config_dir)
if not config_dir_validator.validate():
logger.info(config_dir_validator.get_error_message())
exit(1)
config_dir = _get_config_dir(config_dir)

os.environ["CONFIG_DIR"] = config_dir

Expand Down Expand Up @@ -164,6 +165,28 @@ def server_dev(port: int, workers: int, host: str, config_dir: str, reload=True)
exit(1)


@cli.command(help="Execute a script within a config context.")
@click.option("-s", "--script", help="Path to the script to execute.", required=True)
@click.option("-c", "--config-dir", default="local", help="Specify a path to a config directory.", required=False)
def exec(config_dir: str, script: str):

config_dir = _get_config_dir(config_dir)

os.environ["CONFIG_DIR"] = config_dir

python_executable = sys.executable
cmd = [
python_executable,
script,
]

try:
subprocess.run(cmd, check=True)
except subprocess.CalledProcessError as e:
logger.error(f"Script failed to start: {e}")
exit(1)


@cli.command(help="Generate a session secret.")
@click.option("--length", default=32, help="Length of secret.")
def server_secret(length):
Expand Down

0 comments on commit 77e8399

Please sign in to comment.