UNPKG

@sap/cds-dk

Version:

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

44 lines (32 loc) 1.6 kB
const fs = require('fs'); const { join } = require('path'); const { login } = require('./auth_manager'); const { mtxFetch } = require('./util/request'); 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 reqAuth = params.get('reqAuth') || {}; const headers = { 'content-type': 'application/json', ...reqAuth.headers }; const response = await mtxFetch('POST', downloadUrl, { headers, body: JSON.stringify({ tagRule, defaultTag }) }, params); return Buffer.from(await response.arrayBuffer()); } }