Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x | /* eslint-disable import/no-cycle */ import shell from 'shelljs'; import inquirer from 'inquirer'; import { commandExistsSync } from '../systemTools/exec'; import { logInfo, logDebug } from '../common'; import { configureRnvGlobal } from '../configTools/configParser'; import { replaceHomeFolder, updateConfigFile } from '../systemTools/fileutils'; import setupConfig from './config'; class BasePlatformSetup { constructor(os, c) { const { paths } = c; this.os = os; this.c = c; this.globalConfigPath = paths.private.config; this.availableDownloader = null; this.androidSdkLocation = replaceHomeFolder('~/Android'); this.sdksToInstall = '"build-tools;28.0.3" "emulator" "extras;android;m2repository" "extras;google;m2repository" "patcher;v4" "platform-tools" "platforms;android-28" "sources;android-28" "system-images;android-28;google_apis_playstore;x86" "tools"'; } checkPrereqs() { logInfo(`Platform ${this.os}`); logInfo('Checking if wget or curl is installed'); if (commandExistsSync('wget')) { this.availableDownloader = 'wget'; } else if (commandExistsSync('curl')) { this.availableDownloader = 'curl'; } } async installPrereqs() { // to be overwritten return true; } async postInstall(sdk) { if (sdk === 'android') { const { location } = setupConfig.android; await updateConfigFile({ androidSdk: location }, this.globalConfigPath); } if (sdk === 'tizen') { await updateConfigFile({ tizenSdk: this.tizenSdkPath }, this.globalConfigPath); } if (sdk === 'webos') { await updateConfigFile({ webosSdk: this.webosSdkPath }, this.globalConfigPath); } await configureRnvGlobal(this.c); // trigger the configure to update the paths for clis } async downloadSdk(sdk) { const downloader = this.availableDownloader; if (!downloader) throw new Error('Wget or cURL not installed!'); logDebug(`Downloading ${sdk} SDK to ${setupConfig[sdk].downloadLocation} using ${downloader}`); // remove the file if existing first await shell.rm(setupConfig[sdk].downloadLocation); let aditionalArguments; let locationArgument; if (downloader === 'wget') { aditionalArguments = '-q'; locationArgument = replaceHomeFolder('-P ~/'); } if (downloader === 'curl') { aditionalArguments = '-#'; locationArgument = `--output ${setupConfig[sdk].downloadLocation}`; } const command = `${downloader} ${aditionalArguments} ${setupConfig[sdk].sdkUrl} ${locationArgument}`; logDebug('Running', command); logInfo(`Downloading ${sdk} SDK...`); await shell.exec(command); } async unzipSdk(sdk) { logDebug(`Unzipping from ${setupConfig[sdk].downloadLocation} to ${setupConfig[sdk].location}`); if (!commandExistsSync('unzip')) throw new Error('unzip is not installed'); await shell.exec(`unzip -qq -o ${setupConfig[sdk].downloadLocation} -d ${setupConfig[sdk].location}`); } async installSdksAndEmulator() { logDebug('Accepting licenses'); await shell.exec(`yes | ${setupConfig.android.location}/tools/bin/sdkmanager --licenses > /dev/null`); logDebug('Installing SDKs', this.sdksToInstall); await shell.exec(`${setupConfig.android.location}/tools/bin/sdkmanager ${this.sdksToInstall} > /dev/null`); } async installSdk(sdk) { this.checkPrereqs(); await this.installPrereqs(); switch (sdk) { case 'android': await this.downloadSdk(sdk); await this.unzipSdk(sdk); await this.installSdksAndEmulator(); break; case 'tizen': await this.installTizenSdk(); break; case 'webos': await this.installWebosSdk(); break; default: break; } this.postInstall(sdk); } async installTizenSdk() { // to be overwritten return true; } async installWebosSdk() { // to be overwritten return true; } async askToInstallSDK(sdk) { let sdkInstall; if (!this.c.program.ci) { const response = await inquirer.prompt([{ name: 'sdkInstall', type: 'confirm', message: `Do you want to install ${sdk} SDK?`, }]); // eslint-disable-next-line prefer-destructuring sdkInstall = response.sdkInstall; } if (this.c.program.ci || sdkInstall) { await this.installSdk(sdk); } } } export default BasePlatformSetup; |