UNPKG

@sap/cds-dk

Version:

Command line client and development toolkit for the SAP Cloud Application Programming Model

43 lines (31 loc) 1.62 kB
const fs = require('fs'); const { join } = require('path'); const axios = require('axios'); const { login } = require('./auth_manager'); require('../util/axios').pruneErrors(); const { handleHttpError } = require('./util/errors'); const DOWNLOAD_FILE_NAME = 'migrated_projects.tgz'; // TODO try to add tenant later, if possible module.exports = class Download { static async run(paramValues) { const params = await login(paramValues); const projectFolder = params.get('projectFolder'); const downloadPath = join(projectFolder, DOWNLOAD_FILE_NAME); if (fs.existsSync(downloadPath) && !(await require('./util/question').askBooleanQuestion(`File ${DOWNLOAD_FILE_NAME} already exists. Continue (yN)? `, false, false))) { console.log('Download cancelled'); return; } console.log(`Downloading migrated @sap/mtx extension project(s)`); const downloadedTgz = await this.pullTgz(params); await fs.promises.writeFile(downloadPath, downloadedTgz); console.log(`Finished.`); } static async pullTgz(params) { const tagRule = params.get('tagRule'); const defaultTag = params.get('defaultTag'); const downloadUrl = `${(params.get('appUrl'))}/-/cds/extensibility/getMigratedProjects`; const options = { ...params.get('reqAuth'), responseType: 'arraybuffer' }; return axios.post(downloadUrl, { tagRule, defaultTag }, options) .then(response => Buffer.from(response.data)) .catch(error => handleHttpError(error, params, { url: downloadUrl })); } }