function handleJob()

in src/commands/azCopy/azCopyTransfer.ts [43:83]


function handleJob(context: IActionContext, jobInfo: IJobInfo, transferLabel: string): void {
    const finalTransferStatus: AzCopyTransferStatus = jobInfo.latestStatus;
    context.telemetry.properties.jobStatus = finalTransferStatus?.JobStatus;
    if (!finalTransferStatus || finalTransferStatus.JobStatus !== 'Completed') {
        let message: string = jobInfo.errorMessage || finalTransferStatus?.ErrorMsg || localize('azCopyTransfer', 'AzCopy Transfer: "{0}". ', finalTransferStatus?.JobStatus || 'Unknown');
        if (finalTransferStatus?.FailedTransfers?.length || finalTransferStatus?.SkippedTransfers?.length) {
            message += localize('checkOutputWindow', ' Check the [output window](command:{0}) for a list of incomplete transfers.', `${ext.prefix}.showOutputChannel`);

            if (finalTransferStatus.FailedTransfers?.length) {
                ext.outputChannel.appendLog(localize('failedTransfers', 'Failed transfer(s):'));
                for (const failedTransfer of finalTransferStatus.FailedTransfers) {
                    ext.outputChannel.appendLog(`\t${failedTransfer.Dst}`);
                }
            }
            if (finalTransferStatus.SkippedTransfers?.length) {
                ext.outputChannel.appendLog(localize('skippedTransfers', 'Skipped transfer(s):'));
                for (const skippedTransfer of finalTransferStatus.SkippedTransfers) {
                    ext.outputChannel.appendLog(`\t${skippedTransfer.Dst}`);
                }
            }
        } else {
            // Add an additional error log since we don't have any more info about the failure
            ext.outputChannel.appendLog(localize('couldNotTransfer', 'Could not transfer "{0}"', transferLabel));

            if (finalTransferStatus?.JobStatus === 'Failed' && process.platform === 'linux') {
                message += localize('viewHelp', ' View help with [known issues](https://aka.ms/AAb0i6o).');
            }
        }

        if (jobInfo.logFileLocation) {
            const uri: Uri = Uri.file(jobInfo.logFileLocation);
            ext.outputChannel.appendLog(localize('logFile', 'Log file: {0}', uri.toString()));
        }

        if (finalTransferStatus?.JobStatus && /CompletedWith*/gi.test(finalTransferStatus.JobStatus)) {
            void context.ui.showWarningMessage(message);
        } else {
            throw new Error(message);
        }
    }
}