function download()

in src/cli/download.js [15:61]


function download(config, workflowName) {
  if (!workflowName) {
    exit(new Error(i18n('Workflow name should be defined')));
    return;
  }
  workflowName = workflowName.toString();
  let message = HttpMessage(resolve(config.host, '/api/admin/workflows/' + workflowName.replace(/^@/, '')));
  const options = {
    headers: {
      'Accept': 'application/zip'
    }
  };

  if (config.token) {
    const signHeaders = HttpMessage.sign(config.token);
    options.headers = {...options.headers, ...signHeaders.headers};
  }

  const req = request(message, options,
    (downloadError) => {
      if (downloadError) exit(downloadError);
    }
  );

  req.on('response', response => {
    const zip = fs.createWriteStream(tmpdir(getZipName(workflowName)));
    const output = config.output || config.cwd;

    response.pipe(zip).on('close', () => {
      unzip(zip.path.toString(), require('path').resolve(output, workflowName), (error) => {
        if (error) return exit(error);

        console.log(i18n(`File extracted into '${output}'`));
      });
    });
  });

  return req;

  /**
   * @param {string} workflowName
   * @returns {string}
   */
  function getZipName(workflowName) {
    return 'youtrack-workflow-' + workflowName.split('/').pop() + '.zip';
  }
}