feat(techdocs-cli): Allow passing docker extra args to @techdocs/cli serve and serve:mkdocs

Signed-off-by: Mathias Geat <mathias.geat@objectbay.com>
This commit is contained in:
Mathias Geat
2022-08-01 11:19:37 +02:00
parent 92103db537
commit dcbb438e5f
6 changed files with 47 additions and 0 deletions
+2
View File
@@ -83,6 +83,8 @@ Serve a documentation project locally in a Backstage app-like environment
Options:
-i, --docker-image <DOCKER_IMAGE> The mkdocs docker container to use (default: "spotify/techdocs")
--docker-entrypoint <DOCKER_ENTRYPOINT> Override the image entrypoint
--docker-option <DOCKER_OPTION...> Extra options to pass to the docker run command, e.g. "--add-host=internal.host:192.168.11.12"
(can be added multiple times).
--no-docker Do not use Docker, use MkDocs executable in current user environment.
--mkdocs-port <PORT> Port for MkDocs server to use (default: "8000")
-v --verbose Enable verbose output. (default: false)
@@ -215,6 +215,10 @@ export function registerCommands(program: Command) {
'--docker-entrypoint <DOCKER_ENTRYPOINT>',
'Override the image entrypoint',
)
.option(
'--docker-option <DOCKER_OPTION...>',
'Extra options to pass to the docker run command, e.g. "--add-host=internal.host:192.168.11.12" (can be added multiple times).',
)
.option(
'--no-docker',
'Do not use Docker, run `mkdocs serve` in current user environment.',
@@ -237,6 +241,10 @@ export function registerCommands(program: Command) {
'--docker-entrypoint <DOCKER_ENTRYPOINT>',
'Override the image entrypoint',
)
.option(
'--docker-option <DOCKER_OPTION...>',
'Extra options to pass to the docker run command, e.g. "--add-host=internal.host:192.168.11.12" (can be added multiple times).',
)
.option(
'--no-docker',
'Do not use Docker, use MkDocs executable in current user environment.',
@@ -62,6 +62,7 @@ export default async function serveMkdocs(opts: OptionValues) {
port: opts.port,
dockerImage: opts.dockerImage,
dockerEntrypoint: opts.dockerEntrypoint,
dockerOptions: opts.dockerOption,
useDocker: opts.docker,
stdoutLogFunc: logFunc,
stderrLogFunc: logFunc,
@@ -93,6 +93,7 @@ export default async function serve(opts: OptionValues) {
port: opts.mkdocsPort,
dockerImage: opts.dockerImage,
dockerEntrypoint: opts.dockerEntrypoint,
dockerOptions: opts.dockerOption,
useDocker: opts.docker,
stdoutLogFunc: mkdocsLogFunc,
stderrLogFunc: mkdocsLogFunc,
@@ -64,6 +64,39 @@ describe('runMkdocsServer', () => {
expect.objectContaining({}),
);
});
it('should accept custom docker options', async () => {
await runMkdocsServer({
dockerOptions: [
'--add-host=internal.host:192.168.11.12',
'--name',
'my-techdocs-container',
],
});
expect(run).toHaveBeenCalledWith(
'docker',
expect.arrayContaining([
'run',
'--rm',
'-w',
'/content',
'-v',
`${process.cwd()}:/content`,
'-p',
'8000:8000',
'-it',
'--add-host=internal.host:192.168.11.12',
'--name',
'my-techdocs-container',
'spotify/techdocs',
'serve',
'--dev-addr',
'0.0.0.0:8000',
]),
expect.objectContaining({}),
);
});
});
describe('mkdocs', () => {
@@ -22,6 +22,7 @@ export const runMkdocsServer = async (options: {
useDocker?: boolean;
dockerImage?: string;
dockerEntrypoint?: string;
dockerOptions?: string[];
stdoutLogFunc?: LogFunc;
stderrLogFunc?: LogFunc;
}): Promise<ChildProcess> => {
@@ -45,6 +46,7 @@ export const runMkdocsServer = async (options: {
...(options.dockerEntrypoint
? ['--entrypoint', options.dockerEntrypoint]
: []),
...(options.dockerOptions || []),
dockerImage,
'serve',
'--dev-addr',