diff --git a/scripts/build/processors/defaultDocsProcessor.mjs b/scripts/build/processors/defaultDocsProcessor.mjs index 09e0617..39775c1 100644 --- a/scripts/build/processors/defaultDocsProcessor.mjs +++ b/scripts/build/processors/defaultDocsProcessor.mjs @@ -25,14 +25,14 @@ export const defaultDocsProcessorConfig = { // eslint-disable-next-line no-warning-comments // TODO: remove this variant when all components are updated to use latest auro-library // AND the default README.md is updated to use the new paths - readmeVariant: "_updated_paths" + remoteReadmeVariant: "_updated_paths" }; /** * @param {ProcessorConfig} config - The configuration for this processor. * @returns {import('../utils/sharedFileProcessorUtils').FileProcessorConfig[]} */ -export const fileConfigs = (config = defaultDocsProcessorConfig) => [ +export const fileConfigs = (config) => [ // README.md { identifier: 'README.md', @@ -59,7 +59,7 @@ export const fileConfigs = (config = defaultDocsProcessorConfig) => [ identifier: 'api.md', input: fromAuroComponentRoot("/docs/partials/api.md"), output: fromAuroComponentRoot("/demo/api.md"), - postProcessors: [templateFiller.formatApiTable], + preProcessors: [templateFiller.formatApiTable], } ]; diff --git a/scripts/utils/auroLibraryUtils.mjs b/scripts/utils/auroLibraryUtils.mjs index 150688e..3e9e50d 100644 --- a/scripts/utils/auroLibraryUtils.mjs +++ b/scripts/utils/auroLibraryUtils.mjs @@ -8,17 +8,13 @@ import * as fs from 'fs'; import * as path from 'path'; import chalk from 'chalk'; +import { fileURLToPath } from 'url'; + import {Logger} from "./logger.mjs"; export default class AuroLibraryUtils { getDirname() { - if (typeof __dirname === 'undefined') { - Logger.warn('Unable to determine project root as __dirname is not defined. Assuming current directory is okay!', true); - return ''; - } - - // eslint-disable-next-line no-undef - return __dirname; + return fileURLToPath(import.meta.url); } get getProjectRootPath() { diff --git a/scripts/utils/sharedFileProcessorUtils.mjs b/scripts/utils/sharedFileProcessorUtils.mjs index 6fc57aa..e6019f7 100644 --- a/scripts/utils/sharedFileProcessorUtils.mjs +++ b/scripts/utils/sharedFileProcessorUtils.mjs @@ -1,7 +1,6 @@ -import path from 'path'; import * as mdMagic from 'markdown-magic'; import fs from 'node:fs/promises'; -import { fileURLToPath } from 'url'; +import path from "node:path"; import AuroLibraryUtils from "./auroLibraryUtils.mjs"; import { AuroTemplateFiller } from "./auroTemplateFiller.mjs"; @@ -75,8 +74,12 @@ export const nonEsmComponents = ['combobox', 'datepicker', 'menu', 'pane', 'sele */ // TODO: test this in auro-flight before merging to main export function fromAuroComponentRoot(pathLike) { - const currentDir = fileURLToPath(new URL('.', import.meta.url)) - return path.join(currentDir, `${auroLibraryUtils.getProjectRootPath}${pathLike}`) + if (pathLike.startsWith('/')) { + // remove the first slash + return path.join(auroLibraryUtils.getProjectRootPath, pathLike.slice(1)) + } + + return path.join(auroLibraryUtils.getProjectRootPath, pathLike) } @@ -149,6 +152,7 @@ export function generateReadmeUrl(branchOrTag = 'master', variantOverride = '') * @property {string | InputFileType} input - path to an input file, including filename * @property {string} output - path to an output file, including filename * @property {Partial<MarkdownMagicOptions>} [mdMagicConfig] - extra configuration options for md magic + * @property {Array<(contents: string) => string>} [preProcessors] - extra processor functions to run on content AFTER markdownmagic and BEFORE templateFiller * @property {Array<(contents: string) => string>} [postProcessors] - extra processor functions to run on content */ @@ -241,17 +245,24 @@ export async function processContentForFile(config) { // 3a. Read the output file contents let fileContents = await fs.readFile(output, {encoding: 'utf-8'}); - // 3b. Replace template variables in output file + // 3b. Run any pre-processors + if (config.preProcessors) { + for (const processor of config.preProcessors) { + fileContents = processor(fileContents) + } + } + + // 3c. Replace template variables in output file fileContents = templateFiller.replaceTemplateValues(fileContents); - // 3c. Run any post-processors + // 3d. Run any post-processors if (config.postProcessors) { for (const processor of config.postProcessors) { fileContents = processor(fileContents) } } - // 3d. Write the final file contents + // 3e. Write the final file contents if (!await AuroFileHandler.tryWriteFile(output, fileContents)) { throw new Error(`Error writing "${bareFileName}" file to output ${output}`); }