From f0ae49b18e00691bc15c2759b002a685a2ed0863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Tue, 21 Nov 2023 10:20:15 +0000 Subject: [PATCH] adding binary info to generated hashes --- .../nym-hash-releases/create-hashes.mjs | 57 +++++++++++++------ 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/.github/actions/nym-hash-releases/create-hashes.mjs b/.github/actions/nym-hash-releases/create-hashes.mjs index 38f7e650e5..28e1e3e282 100644 --- a/.github/actions/nym-hash-releases/create-hashes.mjs +++ b/.github/actions/nym-hash-releases/create-hashes.mjs @@ -3,8 +3,27 @@ import fetch from "node-fetch"; import { Octokit } from "@octokit/rest"; import fs from "fs"; import path from "path"; +import { execSync } from "child_process"; + +function getBinInfo(path) { + // let's be super naive about it. add a+x bits on the file and try to run the command + try { + let mode = fs.statSync(path).mode + fs.chmodSync(path, mode | 0o111) + + const raw = execSync(`${path} build-info --output=json`, { stdio: 'pipe', encoding: "utf8" }); + const parsed = JSON.parse(raw) + return parsed + } catch (_) { + return undefined + } +} async function run(assets, algorithm, filename, cache) { + if (!cache) { + console.warn("cache is set to 'false', but we we no longer support it") + } + try { fs.mkdirSync('.tmp'); } catch(e) { @@ -19,26 +38,25 @@ async function run(assets, algorithm, filename, cache) { let buffer = null; let sig = null; - if(cache) { - // cache in `${WORKING_DIR}/.tmp/` - const cacheFilename = path.resolve(`.tmp/${asset.name}`); - if(!fs.existsSync(cacheFilename)) { - console.log(`Downloading ${asset.browser_download_url}... to ${cacheFilename}`); - buffer = Buffer.from(await fetch(asset.browser_download_url).then(res => res.arrayBuffer())); - fs.writeFileSync(cacheFilename, buffer); - } else { - console.log(`Loading from ${cacheFilename}`); - buffer = Buffer.from(fs.readFileSync(cacheFilename)); - // console.log('Reading signature from content'); - // if(asset.name.endsWith('.sig')) { - // sig = fs.readFileSync(cacheFilename).toString(); - // } - } - } else { - // fetch always + // cache in `${WORKING_DIR}/.tmp/` + const cacheFilename = path.resolve(`.tmp/${asset.name}`); + if(!fs.existsSync(cacheFilename)) { + console.log(`Downloading ${asset.browser_download_url}... to ${cacheFilename}`); buffer = Buffer.from(await fetch(asset.browser_download_url).then(res => res.arrayBuffer())); + fs.writeFileSync(cacheFilename, buffer); + } else { + console.log(`Loading from ${cacheFilename}`); + buffer = Buffer.from(fs.readFileSync(cacheFilename)); + + // console.log('Reading signature from content'); + // if(asset.name.endsWith('.sig')) { + // sig = fs.readFileSync(cacheFilename).toString(); + // } } + + const binInfo = getBinInfo(cacheFilename) + if(!hashes[asset.name]) { hashes[asset.name] = {}; } @@ -99,6 +117,9 @@ async function run(assets, algorithm, filename, cache) { if(kind) { hashes[asset.name].kind = kind; } + if(binInfo) { + hashes[asset.name].details = binInfo; + } // process Tauri signature files if(asset.name.endsWith('.sig')) { @@ -225,6 +246,8 @@ export async function createHashesFromReleaseTagOrNameOrId({ releaseTagOrNameOrI assets: hashes, }; + console.log(output) + if(upload) { console.log(`🚚 Uploading ${filename} to release name="${release.name}" id=${release.id} (${release.upload_url})...`);