function generate()

in build-scripts/generateRunners.ts [29:90]


function generate(
    filename: string,
    clientTypes: string[],
    additionalArguments?: string[],
    additionalImports?: string[],
    additionalSetupStatements?: string[],
    successResult?: string,
    returnType?: string
) {
    const importStament = `
import * as tl from 'azure-pipelines-task-lib/task'

import { SdkUtils } from 'lib/sdkutils'
import { warnIfBuildAgentTooLow } from 'lib/vstsUtils'
${
    clientTypes === undefined
        ? ''
        : `\nimport { ${clientTypes.map(it => 'createDefault' + it).join(', ')} } from 'lib/defaultClients'`
}
import { TaskOperations } from './TaskOperations'
import { buildTaskParameters } from './TaskParameters'${
        additionalImports === undefined ? '' : '\n\n' + additionalImports.join('\n        ')
    }
`

    const runStatement = `
async function run(): Promise<${returnType === undefined ? 'void' : returnType}> {
    SdkUtils.readResources()${
        additionalSetupStatements === undefined ? '' : '\n    ' + additionalSetupStatements.join('\n    ')
    }
    const taskParameters = buildTaskParameters()

    return new TaskOperations(${
        clientTypes === undefined
            ? ''
            : '\n        ' +
              clientTypes
                  .map(it => {
                      // tslint:disable-next-line:prefer-template
                      return 'await createDefault' + it + '(taskParameters, tl.debug),'
                  })
                  .join('\n        ')
    }${
        // tslint:disable-next-line:prefer-template
        additionalArguments === undefined ? '' : '\n        ' + additionalArguments.join(',\n        ') + ','
    }
        taskParameters).execute()
}
`

    // TODO: Optionally output "TaskResult.SucceededWithIssues" depending on result?
    const run = `
run().then((result) => {
    tl.setResult(tl.TaskResult.Succeeded, '')
}).catch((error) => {
    tl.setResult(tl.TaskResult.Failed, \`\${error}\`)
})
`

    const output = header + importStament + runStatement + run
    fs.writeFileSync(`src/tasks/${filename}/${filename}.runner.ts`, output)
}