Skip to content

Commit

Permalink
[fix] VOICEVOX#2206 ダウンロードしたいバイナリがすでにある時に再度ダウンロードされるのではなく、スキップされるように修正した
Browse files Browse the repository at this point in the history
  • Loading branch information
gigi434 committed Aug 17, 2024
1 parent a70e64e commit 35321fe
Showing 1 changed file with 42 additions and 34 deletions.
76 changes: 42 additions & 34 deletions build/downloadTypos.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,21 @@ async function runCommand(command, description) {
*/
async function processBinaries(binaries, downloadBinaryFunction) {
binaries.map(async (binary) => {
// もし各バイナリのディレクトリがあるならダウンロードされているとみなし、スキップする
const binaryPath = join(BINARY_BASE_PATH, binary.name);
const binaryFilePath = join(binaryPath, binary.name);

if (existsSync(binaryFilePath)) {
console.log(`${binary.name} already downloaded`);
return;
}

try {
console.log(`${binary.name} のダウンロードURLを取得中...`);
// 各バイナリのGithubのリポジトリのURLを探す
const url = await getBinaryURL(binary.repo, binary.version);

// インストール処理
// 各バイナリのダウンロード
await downloadBinaryFunction(binary.name, url);
} catch (err) {
console.error(
Expand All @@ -70,36 +80,6 @@ async function processBinaries(binaries, downloadBinaryFunction) {
});
}

/**
* OSに応じた関数を選択し、バイナリデータを処理する関数
*
* @param {Array<Object>} binaries - 複数のバイナリの情報を含む配列オブジェクト
*/
async function main(binaries) {
const os = platform();
let downloadBinaryFunction;

console.log(`使用しているOS: ${os}`);

// OSに応じたインストール関数を選択
switch (os) {
case "linux":
downloadBinaryFunction = downloadBinaryForLinux;
break;
case "darwin":
downloadBinaryFunction = downloadBinaryForMac;
break;
case "win32":
downloadBinaryFunction = downloadBinaryForWin;
break;
default:
throw new Error("サポートされていないOSです");
}

// バイナリデータを処理
await processBinaries(binaries, downloadBinaryFunction);
}

/**
* GitHub APIを使って、リポジトリのリリースから各プラットフォームのダウンロードURLを取得する関数
*
Expand Down Expand Up @@ -139,7 +119,7 @@ async function getBinaryURL(repo, version = "latest") {
}

/**
* Linuxのための環境をセットアップし、バイナリをインストールする関数
* Linuxに合わせたバイナリをダウンロードするための関数
* @param {string} name - バイナリの名前
* @param {Object} url - 各プラットフォームのダウンロードURLを含むオブジェクト
*/
Expand Down Expand Up @@ -170,7 +150,7 @@ async function downloadBinaryForLinux(name, url) {
}

/**
* Windowsのための環境をセットアップし、バイナリをインストールする関数
* Windowsに合わせたバイナリをダウンロードするための関数
* @param {string} name - バイナリの名前
* @param {Object} url - 各プラットフォームのダウンロードURLを含むオブジェクト
*/
Expand All @@ -197,7 +177,7 @@ async function downloadBinaryForWin(name, url) {
}

/**
* macOSのための環境をセットアップし、バイナリをインストールする関数
* macOSに合わせたバイナリをダウンロードするための関数
* @param {string} name - バイナリの名前
* @param {Object} url - 各プラットフォームのダウンロードURLを含むオブジェクト
*/
Expand Down Expand Up @@ -227,6 +207,34 @@ async function downloadBinaryForMac(name, url) {
unlinkSync(tarballPath);
}

/**
* OSに応じた関数を選択し、バイナリデータを処理する関数
*
* @param {Array<Object>} binaries - 複数のバイナリの情報を含む配列オブジェクト
*/
async function main(binaries) {
const os = platform();
let downloadBinaryFunction;

// OSに応じたインストール関数を選択
switch (os) {
case "linux":
downloadBinaryFunction = downloadBinaryForLinux;
break;
case "darwin":
downloadBinaryFunction = downloadBinaryForMac;
break;
case "win32":
downloadBinaryFunction = downloadBinaryForWin;
break;
default:
throw new Error("サポートされていないOSです");
}

// バイナリデータを処理
await processBinaries(binaries, downloadBinaryFunction);
}

// main関数実行
(async () => {
await main(WANT_TO_DOWNLOAD_BINARIES);
Expand Down

0 comments on commit 35321fe

Please sign in to comment.