From ab0bcee122a769211f4226640db133415629cf39 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 11 Sep 2024 08:48:17 +0300 Subject: [PATCH] Add basic debugging via `NODE_DEBUG=hugo-bin` (#151) --- .github/workflows/ci.yml | 4 ++ lib/index.js | 94 +++++++++++++++++++++++++++------------- 2 files changed, 69 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 590891a..5785cb6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,6 +66,8 @@ jobs: - name: Install npm dependencies run: npm ci + env: + NODE_DEBUG: hugo-bin - name: Print hugo version run: npm exec hugo version @@ -98,6 +100,8 @@ jobs: - name: Install npm dependencies run: npm ci + env: + NODE_DEBUG: hugo-bin - name: Print hugo version run: npm exec hugo version diff --git a/lib/index.js b/lib/index.js index 0e36d3c..0076a92 100644 --- a/lib/index.js +++ b/lib/index.js @@ -2,34 +2,46 @@ import fs from 'node:fs/promises'; import path from 'node:path'; import process from 'node:process'; import { fileURLToPath } from 'node:url'; +import { debuglog } from 'node:util'; import BinWrapper from '@xhmikosr/bin-wrapper'; import { packageConfig } from 'package-config'; +const debug = debuglog('hugo-bin'); const pkg = new URL('../package.json', import.meta.url); const { hugoVersion: HUGO_VERSION } = JSON.parse(await fs.readFile(pkg, 'utf8')); const destDir = path.join(fileURLToPath(new URL('../vendor/', import.meta.url))); const binName = process.platform === 'win32' ? 'hugo.exe' : 'hugo'; +debug('[global] HUGO_VERSION:', HUGO_VERSION); +debug('[global] destDir:', destDir); +debug('[global] binName:', binName); + /** * @param {string} baseUrl * @param {string} hugoVersion */ function extendedBin(baseUrl, hugoVersion) { + debug('[extendedBin] baseUrl:', baseUrl); + debug('[extendedBin] hugoVersion:', hugoVersion); + + const baseName = `hugo_${hugoVersion}`; + const baseNameExtended = `hugo_extended_${hugoVersion}`; + return new BinWrapper() - .src(`${baseUrl}hugo_extended_${hugoVersion}_darwin-universal.tar.gz`, 'darwin', 'arm64') - .src(`${baseUrl}hugo_extended_${hugoVersion}_darwin-universal.tar.gz`, 'darwin', 'x64') - .src(`${baseUrl}hugo_extended_${hugoVersion}_linux-amd64.tar.gz`, 'linux', 'x64') - .src(`${baseUrl}hugo_extended_${hugoVersion}_linux-arm64.tar.gz`, 'linux', 'arm64') - .src(`${baseUrl}hugo_extended_${hugoVersion}_windows-amd64.zip`, 'win32', 'x64') + .src(`${baseUrl}${baseNameExtended}_darwin-universal.tar.gz`, 'darwin', 'arm64') + .src(`${baseUrl}${baseNameExtended}_darwin-universal.tar.gz`, 'darwin', 'x64') + .src(`${baseUrl}${baseNameExtended}_linux-amd64.tar.gz`, 'linux', 'x64') + .src(`${baseUrl}${baseNameExtended}_linux-arm64.tar.gz`, 'linux', 'arm64') + .src(`${baseUrl}${baseNameExtended}_windows-amd64.zip`, 'win32', 'x64') // Fall back to the normal version on unsupported platforms - .src(`${baseUrl}hugo_${hugoVersion}_dragonfly-amd64.tar.gz`, 'dragonflybsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_freebsd-amd64.tar.gz`, 'freebsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_linux-arm.tar.gz`, 'linux', 'arm') - .src(`${baseUrl}hugo_${hugoVersion}_netbsd-amd64.tar.gz`, 'netbsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_openbsd-amd64.tar.gz`, 'openbsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_solaris-amd64.tar.gz`, 'openbsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_windows-arm64.zip`, 'win32', 'arm64') + .src(`${baseUrl}${baseName}_dragonfly-amd64.tar.gz`, 'dragonflybsd', 'x64') + .src(`${baseUrl}${baseName}_freebsd-amd64.tar.gz`, 'freebsd', 'x64') + .src(`${baseUrl}${baseName}_linux-arm.tar.gz`, 'linux', 'arm') + .src(`${baseUrl}${baseName}_netbsd-amd64.tar.gz`, 'netbsd', 'x64') + .src(`${baseUrl}${baseName}_openbsd-amd64.tar.gz`, 'openbsd', 'x64') + .src(`${baseUrl}${baseName}_solaris-amd64.tar.gz`, 'openbsd', 'x64') + .src(`${baseUrl}${baseName}_windows-arm64.zip`, 'win32', 'arm64') .dest(destDir) .use(binName); } @@ -39,28 +51,32 @@ function extendedBin(baseUrl, hugoVersion) { * @param {string} hugoVersion */ function normalBin(baseUrl, hugoVersion) { + debug('[normalBin] baseUrl:', baseUrl); + debug('[normalBin] hugoVersion:', hugoVersion); + + const baseName = `hugo_${hugoVersion}`; + return new BinWrapper() - .src(`${baseUrl}hugo_${hugoVersion}_darwin-universal.tar.gz`, 'darwin', 'arm64') - .src(`${baseUrl}hugo_${hugoVersion}_darwin-universal.tar.gz`, 'darwin', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_dragonfly-amd64.tar.gz`, 'dragonflybsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_freebsd-amd64.tar.gz`, 'freebsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_linux-amd64.tar.gz`, 'linux', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_linux-arm.tar.gz`, 'linux', 'arm') - .src(`${baseUrl}hugo_${hugoVersion}_linux-arm64.tar.gz`, 'linux', 'arm64') - .src(`${baseUrl}hugo_${hugoVersion}_netbsd-amd64.tar.gz`, 'netbsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_openbsd-amd64.tar.gz`, 'openbsd', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_solaris-amd64.tar.gz`, 'solaris', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_windows-amd64.zip`, 'win32', 'x64') - .src(`${baseUrl}hugo_${hugoVersion}_windows-arm64.zip`, 'win32', 'arm64') + .src(`${baseUrl}${baseName}_darwin-universal.tar.gz`, 'darwin', 'arm64') + .src(`${baseUrl}${baseName}_darwin-universal.tar.gz`, 'darwin', 'x64') + .src(`${baseUrl}${baseName}_dragonfly-amd64.tar.gz`, 'dragonflybsd', 'x64') + .src(`${baseUrl}${baseName}_freebsd-amd64.tar.gz`, 'freebsd', 'x64') + .src(`${baseUrl}${baseName}_linux-amd64.tar.gz`, 'linux', 'x64') + .src(`${baseUrl}${baseName}_linux-arm.tar.gz`, 'linux', 'arm') + .src(`${baseUrl}${baseName}_linux-arm64.tar.gz`, 'linux', 'arm64') + .src(`${baseUrl}${baseName}_netbsd-amd64.tar.gz`, 'netbsd', 'x64') + .src(`${baseUrl}${baseName}_openbsd-amd64.tar.gz`, 'openbsd', 'x64') + .src(`${baseUrl}${baseName}_solaris-amd64.tar.gz`, 'solaris', 'x64') + .src(`${baseUrl}${baseName}_windows-amd64.zip`, 'win32', 'x64') + .src(`${baseUrl}${baseName}_windows-arm64.zip`, 'win32', 'arm64') .dest(destDir) .use(binName); } /** - * @param {string} cwd + * @param {import('pkg-conf').Config} config */ -async function main(cwd) { - const config = await packageConfig('hugo-bin', { cwd }); +function getOptions(config) { const hugoVersion = [ process.env.HUGO_BIN_HUGO_VERSION, process.env.npm_config_hugo_bin_hugo_version, @@ -79,9 +95,29 @@ async function main(cwd) { // Strip any leading `v` from hugoVersion because otherwise we'll end up with duplicate `v`s const version = hugoVersion[0] === 'v' ? hugoVersion.slice(1) : hugoVersion; - const baseUrl = `${downloadRepo}/gohugoio/hugo/releases/download/v${version}/`; - return isExtended ? extendedBin(baseUrl, version) : normalBin(baseUrl, version); + debug('[getOptions] hugoVersion:', version); + debug('[getOptions] downloadRepo:', downloadRepo); + debug('[getOptions] isExtended:', isExtended); + + return { + hugoVersion: version, + downloadRepo, + isExtended + }; +} + +/** + * @param {string} cwd + */ +async function main(cwd) { + const config = await packageConfig('hugo-bin', { cwd }); + const { hugoVersion, downloadRepo, isExtended } = getOptions(config); + const baseUrl = `${downloadRepo}/gohugoio/hugo/releases/download/v${hugoVersion}/`; + + debug('[main] baseUrl:', baseUrl); + + return isExtended ? extendedBin(baseUrl, hugoVersion) : normalBin(baseUrl, hugoVersion); } export default main;