@dogsbay/format-rst 0.2.0-beta.114 → 0.2.0-beta.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.d.ts CHANGED
@@ -5,8 +5,23 @@ export interface RstImportResult {
5
5
  nav: NavItem[];
6
6
  /** Which mode actually ran ("sphinx" | "plain"), for reporting. */
7
7
  mode: "sphinx" | "plain";
8
+ /**
9
+ * Redirects with no page to carry them (an external target, a missing
10
+ * page), for `redirects:` in the site config. Old paths of pages that
11
+ * still exist ride on those pages as `aliases:` front matter instead.
12
+ */
13
+ redirects: Record<string, string>;
14
+ /** How many old paths became `aliases:` on surviving pages. */
15
+ aliasCount: number;
16
+ /**
17
+ * Files the Sphinx build generated (sphinx-needs charts), copied out of the
18
+ * build before it was removed: served at `/sphinx-generated/`. The caller
19
+ * copies or mounts the directory; it is a temp dir.
20
+ */
21
+ generatedDir?: string;
8
22
  }
9
23
  export declare function importRst(source: string, opts: Record<string, unknown>): Promise<RstImportResult>;
24
+ export declare function trackGeneratedDir(dir: string): string;
10
25
  export declare const plugin: FormatPlugin;
11
26
  export { rstPathToSlug };
12
27
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAW,MAAM,gBAAgB,CAAC;AAKjF,OAAO,EAAyC,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAW1F,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,mEAAmE;IACnE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC1B;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC,CA+B1B;AAoHD,eAAO,MAAM,MAAM,EAAE,YAsBpB,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAW,MAAM,gBAAgB,CAAC;AAMjF,OAAO,EAAyC,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAY1F,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,mEAAmE;IACnE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC,CAyD1B;AAgCD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQrD;AAkUD,eAAO,MAAM,MAAM,EAAE,YAiDpB,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/cli.js CHANGED
@@ -13,12 +13,15 @@
13
13
  * Needs Python 3 + docutils (and Sphinx for Sphinx projects) — a migrate-
14
14
  * time requirement, detected up front with an actionable error.
15
15
  */
16
- import { existsSync, readFileSync, rmSync } from "node:fs";
17
- import { basename } from "node:path";
16
+ import { copyFileSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, rmSync } from "node:fs";
17
+ import { tmpdir } from "node:os";
18
+ import { basename, dirname, join, relative, resolve } from "node:path";
18
19
  import { extractHeadings } from "@dogsbay/format-dogsbay-md";
19
20
  import { parseRstFile, parseRstXml } from "./parse.js";
20
21
  import { loadSphinx, findSphinxSrc } from "./loaders/sphinx.js";
22
+ import { collectSectionAnchors } from "./transform.js";
21
23
  import { walkRstFiles, inferNav, isRstDominant, rstPathToSlug } from "./loaders/plain.js";
24
+ import { readSphinxConfStatic, sphinxExclusions } from "./conf-static.js";
22
25
  import { sidecarAvailable, sphinxAvailable, missingPythonMessage, RstSidecarError } from "./sidecar.js";
23
26
  function prettify(slug) {
24
27
  return slug
@@ -32,9 +35,24 @@ export async function importRst(source, opts) {
32
35
  throw new Error(`Source directory not found: ${source}`);
33
36
  if (!sidecarAvailable())
34
37
  throw new RstSidecarError(missingPythonMessage());
38
+ // Only two loaders exist. Anything else (`auto`, `Sphinx`, a typo) used
39
+ // to fall through to the auto path and run conf.py.
40
+ if (opts.loader !== undefined && opts.loader !== "plain" && opts.loader !== "sphinx") {
41
+ throw new Error(`--loader must be 'plain' or 'sphinx', not '${String(opts.loader)}'`);
42
+ }
35
43
  const hrefPrefix = typeof opts.hrefPrefix === "string" ? opts.hrefPrefix : "";
36
44
  const forcePlain = opts.loader === "plain";
45
+ const forceSphinx = opts.loader === "sphinx";
37
46
  const sphinxSrc = forcePlain ? null : findSphinxSrc(source);
47
+ if (forcePlain) {
48
+ // Plain docutils reads .rst only: a project whose conf.py loads MyST
49
+ // would "succeed" with its Markdown pages missing.
50
+ const src = findSphinxSrc(source);
51
+ if (src && usesMyst(src) && hasMarkdownPages(src)) {
52
+ throw new Error("this Sphinx project uses MyST (myst_parser in conf.py) and docutils reads only its .rst pages, so its Markdown pages would be lost.\n" +
53
+ " Build it with Sphinx (runs the project's conf.py): --loader sphinx, or `rst: { sphinx: true }` on the source in dogsbay.config.yml.");
54
+ }
55
+ }
38
56
  // Only attempt a Sphinx build when Sphinx is actually installed — else a
39
57
  // docutils-only env pays a guaranteed failing subprocess + scary warning
40
58
  // before falling back. When conf.py exists but Sphinx is missing, note it.
@@ -44,6 +62,13 @@ export async function importRst(source, opts) {
44
62
  }
45
63
  catch (err) {
46
64
  const msg = err instanceof Error ? err.message : String(err);
65
+ // No silent fallback when it cannot be right: Sphinx was asked for, or
66
+ // the project is (partly) MyST, whose .md pages plain docutils never
67
+ // reads — a mixed project "succeeded" with only its .rst pages.
68
+ if (forceSphinx || usesMyst(sphinxSrc) || walkRstFiles(sphinxSrc).length === 0) {
69
+ throw new Error(`the Sphinx build failed, and converting without it would lose pages.\n ${msg.split("\n").slice(-3).join("\n ")}\n` +
70
+ ` Install the project's docs requirements for DOGSBAY_PYTHON. For MyST without Sphinx: migrate-myst --loader translate, or convert --from myst.`);
71
+ }
47
72
  console.warn(`rst import: Sphinx build failed, falling back to plain docutils mode.\n ${msg.split("\n")[0]}`);
48
73
  // Fall back walking the Sphinx SOURCE dir (where conf.py lives), not
49
74
  // the repo root — otherwise slugs gain a spurious `docs/` prefix.
@@ -56,19 +81,108 @@ export async function importRst(source, opts) {
56
81
  }
57
82
  return importPlain(sphinxSrc ?? source, hrefPrefix);
58
83
  }
84
+ /** Any `.md` page under the Sphinx source (outside build/static dirs and
85
+ * what conf.py excludes)? */
86
+ function hasMarkdownPages(dir) {
87
+ const SKIP = new Set(["_build", "_static", "_templates", "node_modules"]);
88
+ const excluded = staticExclusions(dir, true).pages;
89
+ const walk = (d) => {
90
+ let entries;
91
+ try {
92
+ entries = readdirSync(d, { withFileTypes: true });
93
+ }
94
+ catch {
95
+ return false;
96
+ }
97
+ for (const e of entries) {
98
+ if (e.name.startsWith(".") || SKIP.has(e.name))
99
+ continue;
100
+ if (excluded(relative(dir, join(d, e.name))))
101
+ continue;
102
+ if (e.isDirectory()) {
103
+ if (walk(join(d, e.name)))
104
+ return true;
105
+ }
106
+ else if (e.isFile() && /\.md$/i.test(e.name) && !/^readme\.md$/i.test(e.name))
107
+ return true;
108
+ }
109
+ return false;
110
+ };
111
+ return walk(dir);
112
+ }
113
+ /**
114
+ * Generated-file temp dirs live until the process exits: the plugin path
115
+ * hands one to the site build as an asset mount. One exit handler for all
116
+ * of them (a listener per import warned after ten, in a long-lived process).
117
+ */
118
+ const generatedDirs = new Set();
119
+ export function trackGeneratedDir(dir) {
120
+ if (generatedDirs.size === 0) {
121
+ process.once("exit", () => {
122
+ for (const d of generatedDirs)
123
+ rmSync(d, { recursive: true, force: true });
124
+ });
125
+ }
126
+ generatedDirs.add(dir);
127
+ return dir;
128
+ }
129
+ /** Does conf.py load a MyST parser (myst_parser / myst_nb)? */
130
+ function usesMyst(srcDir) {
131
+ try {
132
+ return /\bmyst_(?:parser|nb)\b/.test(readFileSync(join(srcDir, "conf.py"), "utf-8"));
133
+ }
134
+ catch {
135
+ return false;
136
+ }
137
+ }
59
138
  function importSphinx(source, hrefPrefix) {
60
- const { docs, nav, outDir } = loadSphinx(source, hrefPrefix);
139
+ const { docs, nav, outDir, meta, srcDir } = loadSphinx(source, hrefPrefix);
61
140
  const pages = [];
62
141
  const ledgers = new Map();
142
+ const generated = new Set();
143
+ // Real paths: an extension records an image's absolute path as resolved.
144
+ const real = (p) => {
145
+ try {
146
+ return realpathSync(p);
147
+ }
148
+ catch {
149
+ return resolve(p);
150
+ }
151
+ };
152
+ // Both spellings of the build dir: an extension may record either (a
153
+ // symlinked tmpdir on macOS, Sphinx before 7.2 not resolving paths).
154
+ const buildReal = real(outDir);
155
+ const dirs = {
156
+ buildDir: [...new Set([buildReal, resolve(outDir)])],
157
+ srcDir: real(srcDir),
158
+ extraDirs: meta?.htmlExtraPath ?? [],
159
+ staticDirs: meta?.htmlStaticPath ?? [],
160
+ };
161
+ let generatedDir;
63
162
  let failed = 0;
64
163
  try {
164
+ // Pre-pass: every doc's section anchors, so a `:ref:` into another page
165
+ // is rewritten to the id that page's heading actually gets.
166
+ // XML is read again in the main pass rather than held: a large corpus
167
+ // would otherwise sit in memory whole.
168
+ const anchors = new Map();
169
+ for (const doc of docs) {
170
+ try {
171
+ anchors.set(doc.slug, collectSectionAnchors(readFileSync(doc.xmlPath, "utf-8")));
172
+ }
173
+ catch {
174
+ /* reported by the main pass */
175
+ }
176
+ }
65
177
  for (const doc of docs) {
66
178
  try {
67
179
  const xml = readFileSync(doc.xmlPath, "utf-8");
68
- const { tree, title, markdown, ledger } = parseRstXml(xml, doc.slug, hrefPrefix);
180
+ const { tree, title, markdown, description, generated: gen, openapiSpecs, ledger } = parseRstXml(xml, doc.slug, hrefPrefix, anchors, dirs);
181
+ for (const g of gen)
182
+ generated.add(g);
69
183
  if (ledger.length)
70
184
  ledgers.set(doc.slug, ledger);
71
- pages.push(makePage(doc.slug, tree, title, markdown, ledger));
185
+ pages.push(makePage(doc.slug, tree, title, markdown, ledger, description, openapiSpecs));
72
186
  }
73
187
  catch (err) {
74
188
  failed += 1;
@@ -76,6 +190,27 @@ function importSphinx(source, hrefPrefix) {
76
190
  console.warn(`rst import: failed on ${doc.slug}, skipping: ${m}`);
77
191
  }
78
192
  }
193
+ // Generated files (sphinx-needs charts) live only in the build dir:
194
+ // copied out before it goes.
195
+ if (generated.size) {
196
+ generatedDir = trackGeneratedDir(mkdtempSync(join(tmpdir(), "dogsbay-sphinx-generated-")));
197
+ for (const rel of generated) {
198
+ const from = join(buildReal, rel);
199
+ const to = join(generatedDir, rel);
200
+ try {
201
+ if (!lstatSync(from).isFile())
202
+ continue; // no links, no dirs
203
+ // A directory on the way could still be a link out of the build.
204
+ if (!realpathSync(from).startsWith(buildReal + "/"))
205
+ continue;
206
+ mkdirSync(dirname(to), { recursive: true });
207
+ copyFileSync(from, to);
208
+ }
209
+ catch {
210
+ /* a missing chart shows up as a missing image */
211
+ }
212
+ }
213
+ }
79
214
  }
80
215
  finally {
81
216
  // Reclaim the temp XML build dir once every doc has been read — it can
@@ -83,20 +218,156 @@ function importSphinx(source, hrefPrefix) {
83
218
  rmSync(outDir, { recursive: true, force: true });
84
219
  }
85
220
  reportSkips(failed, docs.length, ledgers);
86
- return { pages, nav, mode: "sphinx" };
221
+ const { redirects, aliasCount, skipped } = applyRedirects(meta, pages);
222
+ if (skipped.length) {
223
+ console.warn(`rst import: ${skipped.length} redirect(s) not carried:\n` + skipped.slice(0, 10).map((m) => ` ${m}`).join("\n") +
224
+ (skipped.length > 10 ? `\n … and ${skipped.length - 10} more` : ""));
225
+ }
226
+ return { pages, nav, mode: "sphinx", redirects, aliasCount, generatedDir };
227
+ }
228
+ /** A docname or source path (`howto/install.rst`) → its docname. */
229
+ function docnameOf(path) {
230
+ return path.replace(/^\.?\//, "").replace(/\/$/, "").replace(/\.(rst|md|txt|html?)$/i, "");
231
+ }
232
+ /** The site path a docname is served at (directory-style URLs). */
233
+ function sitePath(docname) {
234
+ const d = docname.replace(/(^|\/)index$/, "");
235
+ return d ? `/${d.replace(/\/$/, "")}/` : "/";
236
+ }
237
+ /** A docname a redirect may name: relative, no `.`/`..` segment, and none
238
+ * of the characters `_redirects` treats as syntax (see @dogsbay/site-files
239
+ * isSafeSitePath, which the site build applies again). */
240
+ function safeDocname(d) {
241
+ return d !== "" && !/[\s*:?#\\"<>`{}|^\u0000-\u001f\u007f]/.test(d) && !d.split("/").some((x) => x === "." || x === ".." || x === "");
242
+ }
243
+ /**
244
+ * rediraffe and sphinx-reredirects → an old path on the page that survives
245
+ * (`aliases:`), or a config redirect to an http(s) URL. Anything else is
246
+ * reported and left out rather than written: the site build refuses a
247
+ * redirect to a page it does not emit, or from a path that is a page, so
248
+ * one such line in a project's redirect file would stop the build.
249
+ */
250
+ function applyRedirects(meta, pages) {
251
+ const redirects = {};
252
+ const skipped = [];
253
+ let aliasCount = 0;
254
+ if (!meta)
255
+ return { redirects, aliasCount, skipped };
256
+ const bySlug = new Map(pages.map((p) => [p.slug, p]));
257
+ const pageFor = (doc) => bySlug.get(doc) ?? bySlug.get(`${doc}/index`);
258
+ // A target may itself be an old path (a page moved twice); follow it, as
259
+ // rediraffe does, to the page that exists now.
260
+ const moved = new Map();
261
+ for (const r of meta.redirects) {
262
+ if (!/^[a-z][a-z0-9+.-]*:|^\/\//i.test(r.to) && !r.to.startsWith(".."))
263
+ moved.set(docnameOf(r.from), docnameOf(r.to.split("#")[0]));
264
+ }
265
+ const follow = (doc) => {
266
+ const seen = new Set();
267
+ while (!pageFor(doc) && moved.has(doc) && !seen.has(doc)) {
268
+ seen.add(doc);
269
+ doc = moved.get(doc);
270
+ }
271
+ return doc;
272
+ };
273
+ for (const r of meta.redirects) {
274
+ const show = `${r.from} → ${r.to}`;
275
+ const from = docnameOf(r.from);
276
+ if (!safeDocname(from)) {
277
+ skipped.push(`${show}: the old path is not a plain path`);
278
+ continue;
279
+ }
280
+ if (pageFor(from)) {
281
+ skipped.push(`${show}: the old path is still a page`);
282
+ continue;
283
+ }
284
+ if (/^[a-z][a-z0-9+.-]*:|^\/\//i.test(r.to)) {
285
+ if (/^https?:\/\/[^\s]+$/i.test(r.to))
286
+ redirects[sitePath(from)] = r.to;
287
+ else
288
+ skipped.push(`${show}: only http(s) URLs are redirect targets`);
289
+ continue;
290
+ }
291
+ // A fragment names a place on the page; an alias moves the whole page.
292
+ const [toPath] = r.to.split("#");
293
+ let target;
294
+ if (r.kind === "reredirects" && !toPath.startsWith("/")) {
295
+ // sphinx-reredirects targets are relative to the SOURCE page's URL.
296
+ const segs = from.includes("/") ? from.split("/").slice(0, -1) : [];
297
+ let escaped = false;
298
+ for (const part of toPath.split("/")) {
299
+ if (part === "" || part === ".")
300
+ continue;
301
+ if (part === "..")
302
+ escaped = segs.pop() === undefined || escaped;
303
+ else
304
+ segs.push(part);
305
+ }
306
+ if (escaped) {
307
+ skipped.push(`${show}: the target leaves the site`);
308
+ continue;
309
+ }
310
+ target = docnameOf(segs.join("/"));
311
+ }
312
+ else {
313
+ target = docnameOf(toPath.replace(/^\//, ""));
314
+ }
315
+ target = follow(target);
316
+ const page = safeDocname(target) || target === "index" ? pageFor(target) : undefined;
317
+ if (!page) {
318
+ skipped.push(`${show}: no page ${target || "/"} in this build`);
319
+ continue;
320
+ }
321
+ const fm = page.frontmatter;
322
+ const alias = sitePath(from);
323
+ if (!(fm.aliases ??= []).includes(alias)) {
324
+ fm.aliases.push(alias);
325
+ aliasCount++;
326
+ }
327
+ }
328
+ return { redirects, aliasCount, skipped };
329
+ }
330
+ /**
331
+ * What Sphinx would leave out of `dir`, read from its conf.py WITHOUT running
332
+ * it (conf-static.ts). Nothing excluded when there is no conf.py; a setting
333
+ * the reader cannot follow is reported once.
334
+ */
335
+ function staticConf(dir, quiet = false) {
336
+ const confPy = join(dir, "conf.py");
337
+ if (!existsSync(confPy))
338
+ return null;
339
+ const conf = readSphinxConfStatic(confPy);
340
+ if (conf.unread.length && !quiet) {
341
+ console.warn(`rst import: conf.py sets ${conf.unread.join(", ")} in code this importer does not run; ` +
342
+ `only its literal values are applied.`);
343
+ }
344
+ return conf;
345
+ }
346
+ function staticExclusions(dir, quiet = false) {
347
+ const conf = staticConf(dir, quiet);
348
+ return conf ? sphinxExclusions(conf) : { pages: () => false, assets: () => false };
87
349
  }
88
350
  function importPlain(source, hrefPrefix) {
89
- const sources = walkRstFiles(source);
351
+ // Plain mode runs no project code, so Sphinx's exclude_patterns are read
352
+ // statically: without them a vendored package's docs became pages.
353
+ const conf = staticConf(source);
354
+ const sources = walkRstFiles(source, conf ? sphinxExclusions(conf).pages : undefined);
355
+ const embed = (docname) => ({
356
+ srcDir: source,
357
+ docname,
358
+ extraDirs: (conf?.htmlExtraPath ?? []).map((p) => resolve(source, p)),
359
+ staticDirs: (conf?.htmlStaticPath ?? []).map((p) => resolve(source, p)),
360
+ });
90
361
  const pages = [];
91
362
  const titles = new Map();
92
363
  const ledgers = new Map();
93
364
  let failed = 0;
94
365
  for (const s of sources) {
95
366
  try {
96
- const { tree, title, markdown, ledger } = parseRstFile(s.filePath, hrefPrefix);
367
+ const { tree, title, markdown, description, ledger, openapiSpecs } = parseRstFile(s.filePath, hrefPrefix, embed(s.slug));
97
368
  if (ledger.length)
98
369
  ledgers.set(s.slug, ledger);
99
- const page = makePage(s.slug, tree, title, markdown, ledger);
370
+ const page = makePage(s.slug, tree, title, markdown, ledger, description, openapiSpecs);
100
371
  titles.set(s.slug, page.title);
101
372
  pages.push(page);
102
373
  }
@@ -108,9 +379,9 @@ function importPlain(source, hrefPrefix) {
108
379
  }
109
380
  reportSkips(failed, sources.length, ledgers);
110
381
  const nav = inferNav(sources, titles, hrefPrefix);
111
- return { pages, nav, mode: "plain" };
382
+ return { pages, nav, mode: "plain", redirects: {}, aliasCount: 0 };
112
383
  }
113
- function makePage(slug, tree, title, markdown, ledger) {
384
+ function makePage(slug, tree, title, markdown, ledger, description, openapiSpecs = []) {
114
385
  const headings = extractHeadings(tree);
115
386
  const resolvedTitle = (title && title.trim()) ||
116
387
  headings.find((h) => h.depth === 1)?.text ||
@@ -120,10 +391,15 @@ function makePage(slug, tree, title, markdown, ledger) {
120
391
  title: resolvedTitle,
121
392
  tree,
122
393
  headings,
123
- frontmatter: {},
394
+ frontmatter: description ? { description } : {},
124
395
  // Surface the per-page ledger so downstream consumers (and anyone
125
396
  // inspecting the page) can see which constructs were dropped/degraded.
126
- meta: ledger.length ? { rstLedger: ledger } : {},
397
+ meta: {
398
+ ...(ledger.length ? { rstLedger: ledger } : {}),
399
+ // Source-relative spec files the page's `:::openapi` reads: migrate
400
+ // copies them into content/ at the same path.
401
+ ...(openapiSpecs.length ? { openapiSpecs } : {}),
402
+ },
127
403
  bodyMarkdown: markdown,
128
404
  };
129
405
  }
@@ -170,17 +446,44 @@ export const plugin = {
170
446
  // a Dogsbay-MD / MkDocs corpus must NOT steal detection — rst is
171
447
  // registered before dogsbay-md (the generic .md catch-all), so this
172
448
  // guard keeps it from claiming markdown trees.
173
- detectSource: (path) => findSphinxSrc(path) !== null || isRstDominant(path),
449
+ // A conf.py alone does not make a project rST: Canonical's MyST projects
450
+ // have one too. Claimed only with .rst pages to convert, so a MyST project
451
+ // goes to the MyST translator (which runs no project code).
452
+ detectSource: (path) => {
453
+ if (isRstDominant(path))
454
+ return true;
455
+ const src = findSphinxSrc(path);
456
+ return src !== null && walkRstFiles(src, staticExclusions(src, true).pages).length > 0;
457
+ },
174
458
  importOptions: [
175
459
  {
176
460
  flags: "--loader <name>",
177
- description: "Force a loader: 'sphinx' (build via conf.py) or 'plain' (docutils per-file, no toctree/cross-refs). Auto-detected when omitted.",
461
+ description: "'sphinx' builds the project with Sphinx (resolves toctree/cross-refs/autodoc; RUNS the project's conf.py). " +
462
+ "Default 'plain': docutils per file, no project code.",
178
463
  },
179
464
  ],
180
465
  exportOptions: [],
466
+ // `convert` / `site build`: a Sphinx build RUNS the project's conf.py, so
467
+ // it happens only when asked for (`--loader sphinx`, or `rst: { sphinx:
468
+ // true }` on the source). Otherwise each .rst file is converted with
469
+ // docutils, which runs no project code. (`migrate-rst` calls importRst
470
+ // directly and keeps its Sphinx default.)
181
471
  async import(source, opts) {
182
- const { pages, nav } = await importRst(source, opts);
183
- return { pages, nav };
472
+ const loader = opts.loader === undefined ? "plain" : opts.loader;
473
+ if (loader === "plain" && !opts.loader && findSphinxSrc(source)) {
474
+ console.warn("rst: found a Sphinx conf.py and did NOT run it: converting each .rst with docutils, so toctree nav, " +
475
+ ":doc:/:ref: links and autodoc do not resolve. To build with Sphinx (runs the project's code): " +
476
+ "--loader sphinx, or `rst: { sphinx: true }` on the source in dogsbay.config.yml.");
477
+ }
478
+ const { pages, nav, generatedDir } = await importRst(source, { ...opts, loader });
479
+ // Slugs are relative to the Sphinx source dir (a nested docs/conf.py),
480
+ // in both modes; root-relative references in pages (`:::openapi`) too.
481
+ const contentRoot = findSphinxSrc(source) ?? source;
482
+ if (!generatedDir)
483
+ return { pages, nav, contentRoot };
484
+ // Served at /sphinx-generated/, where the pages refer to them; the temp
485
+ // dir goes when the process does (trackGeneratedDir).
486
+ return { pages, nav, contentRoot, assetMounts: [{ dir: generatedDir, root: "sphinx-generated" }] };
184
487
  },
185
488
  };
186
489
  // Re-export for the migrate command.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export interface StaticSphinxConf {
2
+ excludePatterns: string[];
3
+ templatesPath: string[];
4
+ htmlStaticPath: string[];
5
+ htmlExtraPath: string[];
6
+ /** Names that are assigned in a way this reader does not follow. */
7
+ unread: string[];
8
+ }
9
+ export declare function readSphinxConfStatic(confPy: string): StaticSphinxConf;
10
+ /** The same, from text. Exported for tests. */
11
+ export declare function parseSphinxConf(text: string): StaticSphinxConf;
12
+ /**
13
+ * Sphinx's glob for `exclude_patterns` (sphinx.util.matching
14
+ * `_translate_pattern`): `**` crosses `/`, `*` and `?` do not, `[...]` is a
15
+ * class (`[!…]` negated and never `/`, a leading `^` literal, a `]` first
16
+ * in the class literal), and the pattern matches the whole path.
17
+ *
18
+ * Matched by a table over (token, position), never a backtracking RegExp:
19
+ * `**a**a**a…` against a long path took 50 s as a RegExp, and an invalid
20
+ * range threw. Both come from a conf.py we did not write.
21
+ */
22
+ export declare function compileSphinxPattern(pattern: string): (path: string) => boolean;
23
+ /**
24
+ * A predicate over source-relative `/` paths: true when Sphinx would skip
25
+ * the path. A directory that matches excludes everything under it, as
26
+ * Sphinx prunes it from the walk. Patterns are taken as written, as Sphinx
27
+ * does (`_build/` matches nothing).
28
+ */
29
+ export declare function sphinxExcluder(patterns: readonly string[]): (rel: string) => boolean;
30
+ /**
31
+ * What Sphinx leaves out of its documents: `exclude_patterns`, plus the
32
+ * template and static/extra file directories (Sphinx adds those itself).
33
+ * `pages` is for finding pages; `assets` keeps static/extra (pages link
34
+ * images under `_static`) and applies `exclude_patterns` only.
35
+ */
36
+ export declare function sphinxExclusions(conf: StaticSphinxConf): {
37
+ pages: (rel: string) => boolean;
38
+ assets: (rel: string) => boolean;
39
+ };
40
+ //# sourceMappingURL=conf-static.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conf-static.d.ts","sourceRoot":"","sources":["../src/conf-static.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAUD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAQrE;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA4D9D;AA+FD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAmE/E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAWpF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,CAK9H"}