"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.downloadFile = downloadFile;
exports.runFastlaneAsync = runFastlaneAsync;

function _xdl() {
  const data = require("@expo/xdl");

  _xdl = function () {
    return data;
  };

  return data;
}

function _get() {
  const data = _interopRequireDefault(require("lodash/get"));

  _get = function () {
    return data;
  };

  return data;
}

function _fsExtra() {
  const data = _interopRequireDefault(require("fs-extra"));

  _fsExtra = function () {
    return data;
  };

  return data;
}

function _progress() {
  const data = _interopRequireDefault(require("progress"));

  _progress = function () {
    return data;
  };

  return data;
}

function _axios() {
  const data = _interopRequireDefault(require("axios"));

  _axios = function () {
    return data;
  };

  return data;
}

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

const {
  spawnAsyncThrowError
} = _xdl().ExponentTools;

async function downloadFile(url, dest) {
  const response = await _axios().default.get(url, {
    responseType: 'stream'
  });
  const fileSize = Number(response.headers['content-length']);
  const bar = new (_progress().default)('Downloading [:bar] :percent :etas', {
    complete: '=',
    incomplete: ' ',
    total: fileSize
  });
  response.data.pipe(_fsExtra().default.createWriteStream(dest));
  return new Promise((resolve, reject) => {
    response.data.on('data', data => bar.tick(data.length));
    response.data.on('end', () => resolve(dest));
    response.data.on('error', reject);
  });
}

async function runFastlaneAsync(program, args, {
  appleId,
  appleIdPassword,
  appleTeamId,
  itcTeamId
}, pipeToLogger = false) {
  const {
    stderr
  } = await spawnAsyncThrowError(program, args, { ...(pipeToLogger ? {
      pipeToLogger: {
        stdout: 1
      }
    } : {
      stdio: [0, 1, 'pipe']
    }),
    env: { ...process.env,
      ...(appleId && appleIdPassword && {
        FASTLANE_USER: appleId,
        FASTLANE_PASSWORD: appleIdPassword,
        FASTLANE_DONT_STORE_PASSWORD: '1',
        FASTLANE_TEAM_ID: appleTeamId,
        ...(itcTeamId ? {
          FASTLANE_ITC_TEAM_ID: itcTeamId
        } : {})
      })
    }
  });
  const res = JSON.parse(stderr);

  if (res.result !== 'failure') {
    return res;
  } else {
    const message = res.reason !== 'Unknown reason' ? res.reason : (0, _get().default)(res, 'rawDump.message', 'Unknown error when running fastlane');
    throw new Error(message);
  }
}
//# sourceMappingURL=../../__sourcemaps__/commands/upload/utils.js.map