You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.7 KiB
40 lines
1.7 KiB
// https://gitlab.com/antora/antora/-/issues/132#note_712132072 |
|
'use strict' |
|
|
|
const { posix: path } = require('path') |
|
|
|
module.exports.register = (pipeline, { config }) => { |
|
pipeline.on('contentClassified', ({ contentCatalog }) => { |
|
const rootComponentName = config.rootComponentName || 'ROOT' |
|
const rootComponentNameLength = rootComponentName.length |
|
contentCatalog.findBy({ component: rootComponentName }).forEach((file) => { |
|
if (file.out) { |
|
file.out.dirname = file.out.dirname.substr(rootComponentNameLength) |
|
file.out.path = file.out.path.substr(rootComponentNameLength + 1) |
|
file.out.rootPath = fixPath(file.out.rootPath) |
|
} |
|
if (file.pub) { |
|
file.pub.url = file.pub.url.substr(rootComponentNameLength + 1) |
|
if (file.pub.rootPath) { |
|
file.pub.rootPath = fixPath(file.pub.rootPath) |
|
} |
|
} |
|
if (file.rel) { |
|
if (file.rel.pub) { |
|
file.rel.pub.url = file.rel.pub.url.substr(rootComponentNameLength + 1) |
|
file.rel.pub.rootPath = fixPath(file.rel.pub.rootPath); |
|
} |
|
} |
|
}) |
|
const rootComponent = contentCatalog.getComponent(rootComponentName) |
|
rootComponent?.versions?.forEach((version) => { |
|
version.url = version.url.substr(rootComponentName.length + 1) |
|
}) |
|
// const siteStartPage = contentCatalog.getById({ component: '', version: '', module: '', family: 'alias', relative: 'index.adoc' }) |
|
// if (siteStartPage) delete siteStartPage.out |
|
}) |
|
|
|
function fixPath(path) { |
|
return path.split('/').slice(1).join('/') || '.' |
|
} |
|
} |