43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
# directory actions registry
|
|
from playbook.action_registry import ActionRegistry
|
|
from playbook.models import StepLog
|
|
|
|
import os
|
|
|
|
|
|
diract = ActionRegistry("directory_actions_reg")
|
|
|
|
|
|
@diract.register(name="directory_exists", version="stat1.0")
|
|
def directory_exists(ctx, name) -> StepLog:
|
|
if not os.path.exists(ctx["repoPath"]):
|
|
return StepLog.fail(name, [
|
|
{"status": "failed", "output": f"dir '{ctx["repoPath"]}' doesn't exist"}]
|
|
)
|
|
return StepLog.ok(name, "directory exists")
|
|
|
|
|
|
@diract.register(name="create_dir", version="stat1.0")
|
|
def create_dir(ctx, name) -> StepLog:
|
|
try:
|
|
os.makedirs(ctx["repoPath"])
|
|
except Exception as e:
|
|
return StepLog.fail(name, [{"status": "failed", "output": str(e)}])
|
|
|
|
return StepLog.ok(name, "dir create successfully")
|
|
|
|
|
|
@diract.register(name="create_dir_if_not_exists", version="stat1.0")
|
|
def create_dir_if_not_exists(ctx, name) -> StepLog:
|
|
log: StepLog = directory_exists(ctx, name + f".{directory_exists.__name__}")
|
|
msg: str = ""
|
|
if log.failed:
|
|
dir_creation_log: StepLog = create_dir(ctx, name + f".{create_dir.__name__}")
|
|
if dir_creation_log.failed:
|
|
return StepLog.fail(name, [{"status": "failed", "output": dir_creation_log}])
|
|
msg = "dir created succesfully"
|
|
else:
|
|
msg = "dir already exists"
|
|
|
|
return StepLog.ok(name, msg)
|