From 5511185b1314e05f1c0d8ea979b7f192d7ea230d Mon Sep 17 00:00:00 2001 From: Tate Date: Tue, 17 Sep 2024 11:15:22 +1200 Subject: [PATCH 1/2] Generate build suggestions relative to the root dir --- src/index.js | 1 - src/ssgs/bridgetown.js | 5 +++-- src/ssgs/jekyll.js | 5 +++-- src/ssgs/mkdocs.js | 4 ++-- src/ssgs/ssg.js | 11 +++++------ src/ssgs/sveltekit.js | 5 ++--- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/index.js b/src/index.js index b84c8c1..6daa143 100644 --- a/src/index.js +++ b/src/index.js @@ -82,7 +82,6 @@ export async function generateBuildCommands(filePaths, options) { : guessSsg(filterPaths(filePaths, source)); source = source ?? ssg.getSource(filePaths); - filePaths = filterPaths(filePaths, source); const files = ssg.groupFiles(filePaths); diff --git a/src/ssgs/bridgetown.js b/src/ssgs/bridgetown.js index d8fd40c..1dacb73 100644 --- a/src/ssgs/bridgetown.js +++ b/src/ssgs/bridgetown.js @@ -24,7 +24,8 @@ export default class Bridgetown extends Ssg { async generateBuildCommands(filePaths, options) { const commands = await super.generateBuildCommands(filePaths, options); - if (filePaths.includes(joinPaths([options.source, 'Gemfile']))) { + const gemfilePath = filePaths.find((path) => path === 'Gemfile' || path.endsWith('/Gemfile')); + if (gemfilePath) { commands.install.unshift({ value: 'bundle install', attribution: 'because of your Gemfile', @@ -40,7 +41,7 @@ export default class Bridgetown extends Ssg { if (options.source) { commands.environment['BUNDLE_GEMFILE'] = { - value: joinPaths([options.source, 'Gemfile']), + value: gemfilePath, attribution: 'because of your Gemfile', }; } diff --git a/src/ssgs/jekyll.js b/src/ssgs/jekyll.js index 7d3fd55..6797dcb 100644 --- a/src/ssgs/jekyll.js +++ b/src/ssgs/jekyll.js @@ -380,7 +380,8 @@ export default class Jekyll extends Ssg { async generateBuildCommands(filePaths, options) { const commands = await super.generateBuildCommands(filePaths, options); - if (filePaths.includes(joinPaths([options.source, 'Gemfile']))) { + const gemfilePath = filePaths.find((path) => path === 'Gemfile' || path.endsWith('/Gemfile')); + if (gemfilePath) { commands.install.unshift({ value: 'bundle install', attribution: 'because of your Gemfile', @@ -400,7 +401,7 @@ export default class Jekyll extends Ssg { if (options.source) { commands.environment['BUNDLE_GEMFILE'] = { - value: joinPaths([options.source, 'Gemfile']), + value: gemfilePath, attribution: 'because of your Gemfile', }; } diff --git a/src/ssgs/mkdocs.js b/src/ssgs/mkdocs.js index 9a929ea..9dfde17 100644 --- a/src/ssgs/mkdocs.js +++ b/src/ssgs/mkdocs.js @@ -25,8 +25,8 @@ export default class MkDocs extends Ssg { */ async generateBuildCommands(filePaths, options) { const commands = await super.generateBuildCommands(filePaths, options); - const usePip = filePaths.includes(joinPaths([options.source, 'requirements.txt'])); - const usePipEnv = filePaths.includes(joinPaths([options.source, 'Pipfile'])); + const usePip = filePaths.includes('requirements.txt'); + const usePipEnv = filePaths.includes('Pipfile'); commands.build.push({ value: 'mkdocs build', diff --git a/src/ssgs/ssg.js b/src/ssgs/ssg.js index 2023c1d..1cd4eb2 100644 --- a/src/ssgs/ssg.js +++ b/src/ssgs/ssg.js @@ -504,12 +504,11 @@ export default class Ssg { environment: {}, }; - const packageJsonPath = joinPaths([options.source, 'package.json']); - if (filePaths.includes(packageJsonPath)) { - const useYarn = filePaths.includes(joinPaths([options.source, 'yarn.lock'])); - const usePnpm = filePaths.includes(joinPaths([options.source, 'pnpm-lock.yaml'])); + if (filePaths.includes('package.json')) { + const useYarn = filePaths.includes('yarn.lock'); + const usePnpm = filePaths.includes('pnpm-lock.yaml'); const useNpm = - filePaths.includes(joinPaths([options.source, 'package-lock.json'])) || + filePaths.includes('package-lock.json') || (!useYarn && !usePnpm); if (useNpm) { @@ -538,7 +537,7 @@ export default class Ssg { try { if (options.readFile) { - const parsed = await parseDataFile(packageJsonPath, options.readFile); + const parsed = await parseDataFile('package.json', options.readFile); if (parsed?.scripts?.build) { if (useNpm) { commands.build.push({ diff --git a/src/ssgs/sveltekit.js b/src/ssgs/sveltekit.js index 4ec6d2a..de4766f 100644 --- a/src/ssgs/sveltekit.js +++ b/src/ssgs/sveltekit.js @@ -35,9 +35,8 @@ export default class Sveltekit extends Ssg { */ async generateBuildCommands(filePaths, options) { const commands = await super.generateBuildCommands(filePaths, options); - const viteConfigPath = joinPaths([options.source, 'vite.config.js']); - - if (filePaths.includes(viteConfigPath)) { + + if (filePaths.includes('vite.config.js')) { commands.build.push({ value: 'npx vite build', attribution: 'because of your `vite.config.js` file', From f448cdeccba5c445c8eba572e39ff22567c09105 Mon Sep 17 00:00:00 2001 From: Tate Date: Tue, 17 Sep 2024 11:31:45 +1200 Subject: [PATCH 2/2] Linting --- src/ssgs/bridgetown.js | 1 - src/ssgs/mkdocs.js | 1 - src/ssgs/ssg.js | 2 +- src/ssgs/sveltekit.js | 1 - 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/ssgs/bridgetown.js b/src/ssgs/bridgetown.js index 1dacb73..39b903e 100644 --- a/src/ssgs/bridgetown.js +++ b/src/ssgs/bridgetown.js @@ -1,4 +1,3 @@ -import { joinPaths } from '../utility.js'; import Ssg from './ssg.js'; export default class Bridgetown extends Ssg { diff --git a/src/ssgs/mkdocs.js b/src/ssgs/mkdocs.js index 9dfde17..71470ee 100644 --- a/src/ssgs/mkdocs.js +++ b/src/ssgs/mkdocs.js @@ -1,4 +1,3 @@ -import { joinPaths } from '../utility.js'; import Ssg from './ssg.js'; export default class MkDocs extends Ssg { diff --git a/src/ssgs/ssg.js b/src/ssgs/ssg.js index 1cd4eb2..ea7cb3e 100644 --- a/src/ssgs/ssg.js +++ b/src/ssgs/ssg.js @@ -3,7 +3,7 @@ import { basename } from 'path'; import slugify from '@sindresorhus/slugify'; import titleize from 'titleize'; import { findIcon } from '../icons.js'; -import { joinPaths, last, parseDataFile, stripTopPath } from '../utility.js'; +import { last, parseDataFile, stripTopPath } from '../utility.js'; import { findBasePath, getCollectionPaths } from '../collections.js'; export default class Ssg { diff --git a/src/ssgs/sveltekit.js b/src/ssgs/sveltekit.js index de4766f..ef1f598 100644 --- a/src/ssgs/sveltekit.js +++ b/src/ssgs/sveltekit.js @@ -1,4 +1,3 @@ -import { joinPaths } from '../utility.js'; import Ssg from './ssg.js'; export default class Sveltekit extends Ssg {