Merge pull request #12924 from maff/feature/techdocs-cli-docker-options

feat: techdocs-cli extra Docker options for serve/serve:mkdocs
This commit is contained in:
Eric Peterson
2022-08-03 13:13:17 +02:00
committed by GitHub
8 changed files with 54 additions and 0 deletions
+2
View File
@@ -96,6 +96,7 @@ Usage: techdocs-cli serve [options]
Options:
-i, --docker-image <DOCKER_IMAGE>
--docker-entrypoint <DOCKER_ENTRYPOINT>
--docker-option <DOCKER_OPTION...>
--no-docker
--mkdocs-port <PORT>
-v --verbose
@@ -110,6 +111,7 @@ Usage: techdocs-cli serve:mkdocs [options]
Options:
-i, --docker-image <DOCKER_IMAGE>
--docker-entrypoint <DOCKER_ENTRYPOINT>
--docker-option <DOCKER_OPTION...>
--no-docker
-p, --port <PORT>
-v --verbose
@@ -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',