diff --git a/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliApp.java b/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliApp.java index 267b3fe8f..6c9686a2e 100644 --- a/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliApp.java +++ b/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliApp.java @@ -69,7 +69,11 @@ public static void start(ZnaiCliConfig cliConfig) { public static void main(String[] args) { ConsoleOutputs.add(new AnsiConsoleOutput()); - start(new ZnaiCliConfig(System::exit, args)); + ZnaiCliConfig cliConfig = new ZnaiCliConfig(System::exit, args); + if (cliConfig.isPrintOutsideDepsMode()) { + ConsoleOutputs.clear(); + } + start(cliConfig); } private String getDocId() { @@ -101,6 +105,8 @@ private void start() { serve(); } else if (config.isExportMode()) { export(); + } else if (config.isPrintOutsideDepsMode()) { + printOutsideDeps(); } else if (config.isCustomCommand()) { config.getSpecifiedCustomCommand().handle( new CliCommandConfig(config.getDocId(), config.getSourceRoot(), config.getDeployRoot(), config.getActor())); @@ -151,6 +157,15 @@ public void export() { FileUtils.writeTextContent(lookupPath, artifactsDirName); } + public void printOutsideDeps() { + Path sourceRoot = config.getSourceRoot(); + + webSite.getOutsideDocsRequestedResources().values().stream() + .map(fullPath -> sourceRoot.relativize(fullPath).toString()) + .sorted() + .forEach(System.out::println); + } + private void exportLlmTxtIfNeeded() { Path llmTxtOutputPath = config.getLlmTxtOutputPath(); if (llmTxtOutputPath == null) { @@ -205,7 +220,7 @@ private WebSite generateDocs(Path sourceRoot) { withValidateExternalLinks(config.isValidateExternalLinks()). withLlmUrlPrefix(llmUrlPrefix == null ? "" : llmUrlPrefix); - return config.isExportMode() ? + return config.isExportMode() || config.isPrintOutsideDepsMode() ? webSiteCfg.parseOnly(): webSiteCfg.deployTo(deployPath); } diff --git a/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliConfig.java b/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliConfig.java index 0fe89cf0b..834b9202b 100644 --- a/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliConfig.java +++ b/znai-cli/src/main/java/org/testingisdocumenting/znai/cli/ZnaiCliConfig.java @@ -47,6 +47,7 @@ public enum Command { SERVE("serve", "Serve static documentation"), NEW("new", "Create new documentation with sample content and basic setup"), EXPORT("export", "Export documentation source including required artifacts"), + PRINT_OUTSIDE_DEPS("print-outside-deps", "Print files outside docs root referenced by documentation"), BUILD("build", "Build documentation (default)"); private final String name; @@ -161,6 +162,8 @@ public boolean hasMultipleArgs() { exportOptions.add(OptionKey.EXPORT); COMMAND_OPTIONS.put(Command.EXPORT, exportOptions); + COMMAND_OPTIONS.put(Command.PRINT_OUTSIDE_DEPS, commonOptions); + COMMAND_OPTIONS.put(Command.NEW, commonOptions); } @@ -197,6 +200,7 @@ public enum Mode { PREVIEW("preview"), SERVE("serve"), EXPORT("export"), + PRINT_OUTSIDE_DEPS("print-outside-deps"), SCAFFOLD("scaffold new"), CUSTOM("custom"); @@ -278,6 +282,10 @@ public boolean isExportMode() { return mode == Mode.EXPORT; } + public boolean isPrintOutsideDepsMode() { + return mode == Mode.PRINT_OUTSIDE_DEPS; + } + public boolean isCustomCommand() { return !specifiedCustomCommands.isEmpty(); } @@ -461,6 +469,7 @@ private Mode determineMode(CommandLine commandLine) { case SERVE -> Mode.SERVE; case NEW -> Mode.SCAFFOLD; case EXPORT -> Mode.EXPORT; + case PRINT_OUTSIDE_DEPS -> Mode.PRINT_OUTSIDE_DEPS; case BUILD -> Mode.BUILD; }; } diff --git a/znai-console/src/main/java/org/testingisdocumenting/znai/console/ConsoleOutputs.java b/znai-console/src/main/java/org/testingisdocumenting/znai/console/ConsoleOutputs.java index e0059df0f..19060b7f5 100644 --- a/znai-console/src/main/java/org/testingisdocumenting/znai/console/ConsoleOutputs.java +++ b/znai-console/src/main/java/org/testingisdocumenting/znai/console/ConsoleOutputs.java @@ -39,4 +39,8 @@ public static void add(ConsoleOutput consoleOutput) { public static void remove(ConsoleOutput consoleOutput) { outputs.remove(consoleOutput); } + + public static void clear() { + outputs.clear(); + } } diff --git a/znai-docs/znai/release-notes/1.84/add-2025-12-31-print-deps.md b/znai-docs/znai/release-notes/1.84/add-2025-12-31-print-deps.md new file mode 100644 index 000000000..77ea57380 --- /dev/null +++ b/znai-docs/znai/release-notes/1.84/add-2025-12-31-print-deps.md @@ -0,0 +1 @@ +* Add: `print-outside-deps` command to print file dependencies outside of documentation dir \ No newline at end of file