Open1
ダウンロードして展開するスクリプト
例えば、Github release からファイルをダウンロードして展開する
import axios from "axios"
import fs from "fs"
import AdmZip from 'adm-zip';
// for cjs
// const axios = require('axios');
// const fs = require('fs');
// const AdmZip = require('adm-zip');
// ダウンロードするファイルのURL
const url = 'https://github.com/username/repository/releases/download/v1.0.0/filename.zip';
// 保存するファイルのパス
const path = './filename.zip';
// ファイルをダウンロードする関数
async function downloadFile(url, path) {
const response = await axios({
url,
method: 'GET',
responseType: 'stream'
});
return new Promise((resolve, reject) => {
const writer = fs.createWriteStream(path);
response.data.pipe(writer);
let error = null;
writer.on('error', err => {
error = err;
writer.close();
reject(err);
});
writer.on('close', () => {
if (!error) {
resolve(true);
}
});
});
}
// ZIPファイルを展開する関数
function extractZip(filePath, extractTo) {
const zip = new AdmZip(filePath);
zip.extractAllTo(extractTo, true);
}
// メイン関数
async function main() {
try {
console.log('ファイルをダウンロード中...');
await downloadFile(url, path);
console.log('ダウンロード完了!');
console.log('ファイルを展開中...');
extractZip(path, './extracted');
console.log('展開完了!');
} catch (error) {
console.error('エラーが発生しました:', error);
}
}
main();
バージョンを確認したいとき
const { exec } = require('child_process');
// 指定したバージョン
const requiredVersion = 'v0.87.0';
// コマンドを実行してxxxx のバージョンを取得
exec('xxxx version', (error, stdout, stderr) => {
if (error) {
console.error(`エラーが発生しました: ${error.message}`);
return;
}
if (stderr) {
console.error(`標準エラー出力: ${stderr}`);
return;
}
// バージョン情報を解析
const versionMatch = stdout.match(/v\d+\.\d+\.\d+/);
if (versionMatch) {
const currentVersion = versionMatch[0];
if (currentVersion === requiredVersion) {
console.log(`現在のバージョン (${currentVersion}) は指定したバージョン (${requiredVersion}) と一致します。`);
} else {
console.log(`現在のバージョン (${currentVersion}) は指定したバージョン (${requiredVersion}) と一致しません。`);
}
} else {
console.error('バージョン情報を取得できませんでした。');
}
});