"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.fetchAndroidKeystoreAsync = fetchAndroidKeystoreAsync;
exports.fetchAndroidHashesAsync = fetchAndroidHashesAsync;
exports.fetchAndroidUploadCertAsync = fetchAndroidUploadCertAsync;

function _path() {
  const data = _interopRequireDefault(require("path"));

  _path = function () {
    return data;
  };

  return data;
}

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

  _fsExtra = function () {
    return data;
  };

  return data;
}

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

  _get = function () {
    return data;
  };

  return data;
}

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

  _xdl = function () {
    return data;
  };

  return data;
}

function _AndroidCredentials() {
  const data = require("../../credentials/views/AndroidCredentials");

  _AndroidCredentials = function () {
    return data;
  };

  return data;
}

function _credentials() {
  const data = require("../../credentials");

  _credentials = function () {
    return data;
  };

  return data;
}

function _log() {
  const data = _interopRequireDefault(require("../../log"));

  _log = function () {
    return data;
  };

  return data;
}

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

async function fetchAndroidKeystoreAsync(projectDir) {
  const ctx = new (_credentials().Context)();
  await ctx.init(projectDir);

  const backupKeystoreOutputPath = _path().default.resolve(projectDir, `${ctx.manifest.slug}.jks`);

  const view = new (_AndroidCredentials().DownloadKeystore)(ctx.manifest.slug);
  await view.fetch(ctx);
  await view.save(ctx, backupKeystoreOutputPath, true);
}

async function fetchAndroidHashesAsync(projectDir) {
  const ctx = new (_credentials().Context)();
  await ctx.init(projectDir);

  const outputPath = _path().default.resolve(projectDir, `${ctx.manifest.slug}.tmp.jks`);

  try {
    const view = new (_AndroidCredentials().DownloadKeystore)(ctx.manifest.slug);
    await view.fetch(ctx);
    await view.save(ctx, outputPath);
    await _xdl().AndroidCredentials.logKeystoreHashes({
      keystorePath: outputPath,
      keystorePassword: (0, _get().default)(view, 'credentials.keystorePassword'),
      keyAlias: (0, _get().default)(view, 'credentials.keyAlias')
    });
  } finally {
    try {
      _fsExtra().default.unlink(outputPath);
    } catch (err) {
      if (err.code !== 'ENOENT') {
        _log().default.error(err);
      }
    }
  }
}

async function fetchAndroidUploadCertAsync(projectDir) {
  const ctx = new (_credentials().Context)();
  await ctx.init(projectDir);

  const keystorePath = _path().default.resolve(projectDir, `${ctx.manifest.slug}.tmp.jks`);

  const uploadKeyPath = _path().default.resolve(projectDir, `${ctx.manifest.slug}_upload_cert.pem`);

  try {
    const view = new (_AndroidCredentials().DownloadKeystore)(ctx.manifest.slug);
    await view.fetch(ctx);
    await view.save(ctx, keystorePath);
    (0, _log().default)(`Writing upload key to ${uploadKeyPath}`);
    await _xdl().AndroidCredentials.exportCertBase64({
      keystorePath,
      keystorePassword: (0, _get().default)(view, 'credentials.keystorePassword'),
      keyAlias: (0, _get().default)(view, 'credentials.keyAlias')
    }, uploadKeyPath);
  } finally {
    try {
      await _fsExtra().default.unlink(keystorePath);
    } catch (err) {
      if (err.code !== 'ENOENT') {
        _log().default.error(err);
      }
    }
  }
}
//# sourceMappingURL=../../__sourcemaps__/commands/fetch/android.js.map