(
argv: CliArguments,
taskData: TaskData,
{ spinner, logger, downloadFile = downloadExportFile, signalEmitter = process }: RunJobDependencies
)
| 85 | } |
| 86 | |
| 87 | export async function runJob( |
| 88 | argv: CliArguments, |
| 89 | taskData: TaskData, |
| 90 | { spinner, logger, downloadFile = downloadExportFile, signalEmitter = process }: RunJobDependencies |
| 91 | ): Promise<Job> { |
| 92 | spinner.text = 'Creating job'; |
| 93 | |
| 94 | const cloudconvert = argv.cloudconvert; |
| 95 | const parameterOptions = await fetchParameterOptions(cloudconvert, taskData); |
| 96 | const castTaskData = castTaskParameterValues(taskData, parameterOptions); |
| 97 | const secondaryInputFiles = resolveSecondaryInputFiles(castTaskData, parameterOptions); |
| 98 | const job = await cloudconvert.jobs.create(buildJobTemplate(castTaskData, argv.files, secondaryInputFiles)); |
| 99 | const cancellation = createJobCancellation(job.id, cloudconvert, spinner, signalEmitter); |
| 100 | const completion = waitForCompletion(job.id, argv, spinner, logger, downloadFile, cancellation.signal); |
| 101 | const upload = uploadFiles( |
| 102 | job, |
| 103 | createUploadFilesByTaskName(argv.files, secondaryInputFiles), |
| 104 | argv, |
| 105 | spinner, |
| 106 | cancellation.signal |
| 107 | ); |
| 108 | |
| 109 | try { |
| 110 | await Promise.race([upload, cancellation.promise]); |
| 111 | spinner.text = 'Processing'; |
| 112 | |
| 113 | return await Promise.race([completion, cancellation.promise]); |
| 114 | } finally { |
| 115 | cancellation.dispose(); |
| 116 | upload.catch(() => undefined); |
| 117 | completion.catch(() => undefined); |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | export async function downloadExportFile( |
| 122 | file: ExportedFile, |
no test coverage detected