diff --git a/cli/download.mts b/cli/download.mts index cf8ac196e1d4..7e390ba8fa30 100644 --- a/cli/download.mts +++ b/cli/download.mts @@ -16,32 +16,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import fs from 'fs'; -import { get } from 'https'; +import { writeFile } from 'fs/promises'; import path from 'path'; import { inspect } from 'util'; +import axios from 'axios'; import { logger } from './utils.mjs'; import { packageJson } from '../lib/index.js'; -const downloadFile = (url: string, filename: string): Promise => { - return new Promise((resolve, reject) => { - logger.verboseInfo(`Downloading file: ${url}`); - get(url, response => { - if (response.statusCode !== 200) { - reject(new Error(`Error downloading ${url}: ${response.statusCode} - ${response.statusMessage}`)); - return; - } - - logger.debug(`Creating file: ${path.join(filename)}`); - const fileStream = fs.createWriteStream(`${filename}`); - fileStream.on('finish', () => fileStream.close()); - fileStream.on('close', () => resolve(filename)); - response.pipe(fileStream); - }).on('error', e => { - reject(e); - }); - }); +const downloadFile = async (url: string, filename: string): Promise => { + logger.verboseInfo(`Downloading file: ${url}`); + const response = await axios.get(url); + if (response.status !== 200) { + throw new Error(`Error downloading ${url}: ${response.status} - ${response.statusText}`); + } + logger.debug(`Creating file: ${path.join(filename)}`); + await writeFile(filename, response.data, 'utf8'); + return filename; }; export type DownloadJdlOptions = { skipSampleRepository?: boolean };