/* eslint-disable no-console */
const _ = require('lodash');
const exec = require('shell-utils').exec;

// const avdName = 'pixel';
// const sdk = 'android-24';
// const apis = 'default';
// const abi = 'armeabi-v7a';
// const packageName = `system-images;${sdk};${apis};${abi}`;

const release = _.includes(process.argv, 'release');

// Run just a single test, e.g. npm test-e2e-android -- just com.MyClass#myMethod
const filter = _(process.argv).dropWhile((a) => a !== 'just').take(2).last();

run();

function run() {
  if (process.env.CI) {
    console.log(`android e2e is disabled on CI`);
  } else {
    runTests();
  }
}

function runTests() {
  exec.execSync(`npm run uninstall-android`);
  exec.execSync(`npm run install-android ${release ? '-- release' : ''}`);
  const filterParam = filter ? '-Pandroid.testInstrumentationRunnerArguments.class=' + filter : '';
  exec.execSync(`cd AndroidE2E && ./gradlew ${filterParam} connectedDebugAndroidTest`);
}

// function installEmulator() {
//   exec.execSync(`sdkmanager "emulator"`);
//   exec.execSync(`sdkmanager "${packageName}"`);
//   exec.execSync(`echo no | avdmanager create avd --force --name "${avdName}" --abi "${apis}/${abi}" --package "${packageName}" --device "pixel"`);
//   exec.execSync(`avdmanager list avd`);
// }

// function launchEmulator() {
//   console.log(`Launching Android Emulator`);
//   exec.execSync(`cd $ANDROID_HOME/tools && ./emulator -skin 1080x1920 -gpu host -no-audio @${avdName}`);
//   exec.execSync(`./scripts/waitForAndroidEmulator.sh`);
// }

// function killEmulators() {
//   exec.execSync(`adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done`);
// }