Skip to content

Commit

Permalink
add api and updates
Browse files Browse the repository at this point in the history
  • Loading branch information
akashdhruv committed Oct 1, 2023
1 parent ce31210 commit 48e30e1
Show file tree
Hide file tree
Showing 10 changed files with 356 additions and 363 deletions.
2 changes: 1 addition & 1 deletion jobrunner/__meta__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Metadata for jobrunner"""

__pkgname__ = "PyJobRunner"
__version__ = "2023.09"
__version__ = "2023.10"
__authors__ = "Akash Dhruv"
__license__ = "Apache Software License"
__copyright__ = "Copyright (c) Akash Dhruv 2023. All Rights Reserved."
Expand Down
3 changes: 3 additions & 0 deletions jobrunner/api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"""Initialization of api"""

from ._commands import *
170 changes: 170 additions & 0 deletions jobrunner/api/_commands.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
"""Command line interface for Jobrunner"""

# Standard libraries
import os
from datetime import date

from jobrunner import lib


def setup(workdir_list, verbose=False):
"""
Run setup scripts in a directory
"""
# Get base directory
basedir = os.getcwd()

# loop over workdir_list
for workdir in workdir_list:

# chdir to working directory and display tree
os.chdir(workdir)
workdir = os.getcwd()
lib.DisplayTree(workdir, basedir)

# parse main dictionary
main_dict = lib.ParseJobConfig(basedir, workdir)

# create setup file and display configuration
lib.CreateSetupFile(main_dict)
print(f"\n {lib.Color.purple}job.setup: {lib.Color.end}")
for value in main_dict["job"]["setup"]:
if value:
print(f"➜ {lib.Color.blue}{value} {lib.Color.end}")

# run a bash process
lib.BashProcess(workdir, "job.setup", verbose)

# Return to base directory
os.chdir(basedir)


def submit(workdir_list, verbose=False):
"""
Submit a job from a directory
"""
# Get base directory
basedir = os.getcwd()

# loop over workdir_list
for workdir in workdir_list:

# chdir to working directory and display tree
os.chdir(workdir)
workdir = os.getcwd()
lib.DisplayTree(workdir, basedir)

# parse main dictionary
main_dict = lib.ParseJobConfig(basedir, workdir)

# Build inputfile
lib.CreateInputFile(main_dict)
print(f"\n {lib.Color.purple}job.input: {lib.Color.end}")
for value in main_dict["job"]["input"]:
if value:
print(f"➜ {lib.Color.blue}{value} {lib.Color.end}")

# Build targetfile
lib.CreateTargetFile(main_dict)
print(f"\n {lib.Color.purple}job.target: {lib.Color.end}")
if main_dict["job"]["target"]:
print(f'➜ {lib.Color.blue}{main_dict["job"]["target"]} {lib.Color.end}')

# Build submitfile
lib.CreateSubmitFile(main_dict)
print(f"\n {lib.Color.purple}job.submit: {lib.Color.end}")
for value in main_dict["job"]["submit"]:
print(f"➜ {lib.Color.blue}{value} {lib.Color.end}")

# Submit job
if main_dict["schedular"]["command"] == "bash":
lib.BashProcess(workdir, "job.submit", verbose)

else:
lib.SchedularProcess(
workdir, main_dict["schedular"]["command"], "job.submit"
)

# Return to base directory
os.chdir(basedir)


def clean(workdir_list):
"""
Remove artifacts from a directory
"""
# Get base directory
basedir = os.getcwd()

# run cleanup
for workdir in workdir_list:

# chdir to working directory and display tree
os.chdir(workdir)
workdir = os.getcwd()
lib.DisplayTree(workdir, basedir)

# parse main dictionary
main_dict = lib.ParseJobConfig(basedir, workdir)

print(f"➜ {lib.Color.purple}clean {lib.Color.end}")
lib.RemoveNodeFiles(main_dict, workdir)

os.chdir(basedir)


def archive(tag, workdir_list):
"""
Create an archive along a directory tree
"""
# Get base directory
basedir = os.getcwd()

# loop over workdir_list
for workdir in workdir_list:

# chdir to working directory and display tree
os.chdir(workdir)
workdir = os.getcwd()
lib.DisplayTree(workdir, basedir)

# parse main dictionary
main_dict = lib.ParseJobConfig(basedir, workdir)

# Create archive
print(
f"➜ {lib.Color.purple}archive: {lib.Color.blue}jobnode.archive/{tag} {lib.Color.end}"
)

lib.CreateArchive(main_dict, tag)

# Return to base directory
os.chdir(basedir)


def export(tag, workdir_list):
"""
\b
Export directory tree to an external folder
\b
"""
# Get base directory
basedir = os.getcwd()

# loop over workdir_list
for workdir in workdir_list:

# chdir to working directory and display tree
os.chdir(workdir)
workdir = os.getcwd()
lib.DisplayTree(workdir, basedir)

# parse main dictionary
main_dict = lib.ParseJobConfig(basedir, workdir)

# Create archive
print(f"➜ {lib.Color.purple}export: {lib.Color.blue}{tag} {lib.Color.end}")
lib.ExportTree(main_dict, tag)

# Return to base directory
os.chdir(basedir)
Loading

0 comments on commit 48e30e1

Please sign in to comment.