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('バージョン情報を取得できませんでした。');
    }
});