初始化提交
This commit is contained in:
61
Scripts/fetch-prebuilt-wda.js
Normal file
61
Scripts/fetch-prebuilt-wda.js
Normal file
@@ -0,0 +1,61 @@
|
||||
const path = require('path');
|
||||
const axios = require('axios');
|
||||
const { asyncify } = require('asyncbox');
|
||||
const { logger, fs, mkdirp, net } = require('@appium/support');
|
||||
const _ = require('lodash');
|
||||
const B = require('bluebird');
|
||||
|
||||
const log = logger.getLogger('WDA');
|
||||
|
||||
async function fetchPrebuiltWebDriverAgentAssets () {
|
||||
const tag = require('../package.json').version;
|
||||
log.info(`Getting links to webdriveragent release ${tag}`);
|
||||
const downloadUrl = `https://api.github.com/repos/appium/webdriveragent/releases/tags/v${tag}`;
|
||||
log.info(`Getting WDA release ${downloadUrl}`);
|
||||
let releases;
|
||||
try {
|
||||
releases = (await axios({
|
||||
url: downloadUrl,
|
||||
headers: {
|
||||
'user-agent': 'appium',
|
||||
'accept': 'application/json, */*',
|
||||
},
|
||||
})).data;
|
||||
} catch (e) {
|
||||
throw new Error(`Could not fetch endpoint ${downloadUrl}. Reason: ${e.message}`);
|
||||
}
|
||||
|
||||
const webdriveragentsDir = path.resolve(__dirname, '..', 'prebuilt-agents');
|
||||
log.info(`Creating webdriveragents directory at: ${webdriveragentsDir}`);
|
||||
await fs.rimraf(webdriveragentsDir);
|
||||
await mkdirp(webdriveragentsDir);
|
||||
|
||||
// Define a method that does a streaming download of an asset
|
||||
async function downloadAgent (url, targetPath) {
|
||||
try {
|
||||
await net.downloadFile(url, targetPath);
|
||||
} catch (err) {
|
||||
throw new Error(`Problem downloading webdriveragent from url ${url}: ${err.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
log.info(`Downloading assets to: ${webdriveragentsDir}`);
|
||||
const agentsDownloading = [];
|
||||
for (const asset of releases.assets) {
|
||||
const url = asset.browser_download_url;
|
||||
log.info(`Downloading: ${url}`);
|
||||
try {
|
||||
const nameOfAgent = _.last(url.split('/'));
|
||||
agentsDownloading.push(downloadAgent(url, path.join(webdriveragentsDir, nameOfAgent)));
|
||||
} catch { }
|
||||
}
|
||||
|
||||
// Wait for them all to finish
|
||||
return await B.all(agentsDownloading);
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
asyncify(fetchPrebuiltWebDriverAgentAssets);
|
||||
}
|
||||
|
||||
module.exports = fetchPrebuiltWebDriverAgentAssets;
|
||||
Reference in New Issue
Block a user