#!/usr/bin/env python3

# builds a Pegasus subdax to get the final outputs and save as XML file

import sys
import os

from Pegasus.api import *

# process command line arguments:
# num stages
# subdax filepath
# remote job directory (prefix)
# results file

# basic validation on number of args
if len(sys.argv) < 4:
    raise Exception("Insufficient arguments to final subdax construction job")

# extract the args
num_stages = str(sys.argv[1])
subdax_filename = str(sys.argv[2])
job_dir = str(sys.argv[3])
final_results_filename = str(sys.argv[4])

# initialize DAX, set up some basic executables
final_sub_wf = Workflow("final-stage")

# figure out what files need to be transferred back
final_output_files = []
#final_results_filename = "%s/output/results_%s.txt" % (run_dir,num_stages)
with open(final_results_filename,'r') as final_results_file:
    for line in final_results_file:
        output_filename = line.rstrip()
        output_fname = os.path.split(output_filename)[1]
        # add these files to DAX
        output_file = File(output_fname)
        final_output_files.append(output_file)

# create dummy final job with these outputs
final_job = Job("move")
final_job.add_args("%s/%s/*" % (job_dir,num_stages),".")
for output_file in final_output_files:
    final_job.add_outputs(output_file)

final_sub_wf.add_jobs(final_job)

# write out to DAX xml file
final_sub_wf.write(subdax_filename)

