1import base64
2import json
3import os
4import sys
5
6import dill
7
8from . import Actions
9
10if __name__ == "__main__":
11
12 actions: Actions
13
14 print("Invoking execute_qcgpj_task with arguments: " + str(sys.argv))
15
16 if len(sys.argv) < 3:
17 sys.exit(
18 "Usage: python3 encoded_actions_object encoded_previous_object"
19 )
20
21 actions_f = sys.argv[1]
22 previous_f = sys.argv[2]
23
24 if 'QCG_PM_EXEC_API_JOB_ID' not in os.environ:
25 sys.exit("The required environment variable QCG_PM_STEP_ID not set")
26
27 jobid = os.environ['QCG_PM_EXEC_API_JOB_ID']
28
29 with open(actions_f) as f:
30 pickled_actions = f.read()
31 pickled_actions_b64 = pickled_actions.encode('ascii')
32 pickled_actions_b = base64.b64decode(pickled_actions_b64)
33 actions = dill.loads(pickled_actions_b)
34
35 with open(previous_f) as f:
36 pickled_previous = f.read()
37 pickled_previous_b64 = pickled_previous.encode('ascii')
38 pickled_previous_b = base64.b64decode(pickled_previous_b64)
39 previous = dill.loads(pickled_previous_b)
40
41 previous_next = actions.start(previous)
42
43 with open(f'{previous_next["campaign_dir"]}/.qcgpj_result_{jobid}', 'w') as f:
44 json.dump(previous_next, f)