diff --git a/packages/cli/Dockerfile b/packages/cli/Dockerfile index b3610a81..3ba56a1b 100644 --- a/packages/cli/Dockerfile +++ b/packages/cli/Dockerfile @@ -4,4 +4,6 @@ COPY ./dist /app ENV NODE_OPTIONS=--enable-source-maps +WORKDIR "/content" + CMD ["node", "/app/index.js"] diff --git a/packages/lib/src/Settings.ts b/packages/lib/src/Settings.ts index 038bed35..f3afa523 100644 --- a/packages/lib/src/Settings.ts +++ b/packages/lib/src/Settings.ts @@ -94,7 +94,7 @@ export class EnvironmentVariableSettingsLoader extends SettingsLoader { export class ConfigFileSettingsLoader extends SettingsLoader { private configPath: string = path.join( - process.env.HOME ?? "", + process.cwd() ?? "", ".markdown-confluence.json" ); diff --git a/packages/lib/src/TreeLocal.ts b/packages/lib/src/TreeLocal.ts index a9055ce3..2fd9f8cc 100644 --- a/packages/lib/src/TreeLocal.ts +++ b/packages/lib/src/TreeLocal.ts @@ -32,18 +32,11 @@ const createTreeNode = (name: string): LocalAdfFileTreeNode => ({ const addFileToTree = ( treeNode: LocalAdfFileTreeNode, file: MarkdownFile, - relativePath: string, - fileNames: Set + relativePath: string ) => { const [folderName, ...remainingPath] = relativePath.split(path.sep); if (remainingPath.length === 0) { - if (fileNames.has(file.fileName)) { - throw new Error( - `File name "${file.fileName}" is not unique across all folders.` - ); - } - fileNames.add(file.fileName); const adfFile = mdToADFConverter.convertMDtoADF(file); treeNode.children.push({ ...createTreeNode(folderName), @@ -59,7 +52,7 @@ const addFileToTree = ( treeNode.children.push(childNode); } - addFileToTree(childNode, file, remainingPath.join(path.sep), fileNames); + addFileToTree(childNode, file, remainingPath.join(path.sep)); } }; @@ -107,14 +100,32 @@ export const createFolderStructure = ( markdownFiles.map((file) => file.absoluteFilePath) ); const rootNode = createTreeNode(commonPath); - const fileNames = new Set(); markdownFiles.forEach((file) => { const relativePath = path.relative(commonPath, file.absoluteFilePath); - addFileToTree(rootNode, file, relativePath, fileNames); + addFileToTree(rootNode, file, relativePath); }); processNode(commonPath, rootNode); + checkUniquePageTitle(rootNode); + return rootNode; }; + +function checkUniquePageTitle( + rootNode: LocalAdfFileTreeNode, + pageTitles: Set = new Set() +) { + const currentPageTitle = rootNode.file?.pageTitle ?? ""; + + if (pageTitles.has(currentPageTitle)) { + throw new Error( + `Page title "${currentPageTitle}" is not unique across all files.` + ); + } + pageTitles.add(currentPageTitle); + rootNode.children.forEach((child) => + checkUniquePageTitle(child, pageTitles) + ); +}