meson: generate articles

While the Meson build system already knows to generate man pages and our user manual, it does not yet generate the random assortment of articles that we have. Plug this gap. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Dec 27, 2024 at 14:59 UTC bcf7edee09e8f9c1779fafa953832f63e9a23545
3 files changed +164
Documentation/howto/meson.build new
+62
@@ -0,0 +1,62 @@
1 +howto_sources = [
2 + 'coordinate-embargoed-releases.txt',
3 + 'keep-canonical-history-correct.txt',
4 + 'maintain-git.txt',
5 + 'new-command.txt',
6 + 'rebase-from-internal-branch.txt',
7 + 'rebuild-from-update-hook.txt',
8 + 'recover-corrupted-blob-object.txt',
9 + 'recover-corrupted-object-harder.txt',
10 + 'revert-a-faulty-merge.txt',
11 + 'revert-branch-rebase.txt',
12 + 'separating-topic-branches.txt',
13 + 'setup-git-server-over-http.txt',
14 + 'update-hook-example.txt',
15 + 'use-git-daemon.txt',
16 + 'using-merge-subtree.txt',
17 + 'using-signed-tag-in-pull-request.txt',
18 +]
19 +
20 +howto_index = custom_target(
21 + command: [
22 + shell,
23 + meson.current_source_dir() / 'howto-index.sh',
24 + '@INPUT@',
25 + ],
26 + env: script_environment,
27 + capture: true,
28 + input: howto_sources,
29 + output: 'howto-index.txt',
30 +)
31 +
32 +custom_target(
33 + command: asciidoc_html_options,
34 + input: howto_index,
35 + output: 'howto-index.html',
36 + depends: documentation_deps,
37 + install: true,
38 + install_dir: get_option('datadir') / 'doc/git-doc',
39 +)
40 +
41 +foreach howto : howto_sources
42 + howto_stripped = custom_target(
43 + command: [
44 + find_program('sed'),
45 + '-e',
46 + '1,/^$/d',
47 + '@INPUT@',
48 + ],
49 + input: howto,
50 + output: fs.stem(howto) + '.stripped',
51 + capture: true,
52 + )
53 +
54 + custom_target(
55 + command: asciidoc_html_options,
56 + input: howto_stripped,
57 + output: fs.stem(howto_stripped.full_path()) + '.html',
58 + depends: documentation_deps,
59 + install: true,
60 + install_dir: get_option('datadir') / 'doc/git-doc/howto',
61 + )
62 +endforeach
Documentation/meson.build
+36
@@ -413,4 +413,40 @@ if get_option('docs').contains('html')
413 install: true,
414 install_dir: get_option('datadir') / 'doc/git-doc',
415 )
416 +
417 + articles = [
418 + 'DecisionMaking.txt',
419 + 'MyFirstContribution.txt',
420 + 'MyFirstObjectWalk.txt',
421 + 'ReviewingGuidelines.txt',
422 + 'SubmittingPatches',
423 + 'ToolsForGit.txt',
424 + 'git-bisect-lk2009.txt',
425 + 'git-tools.txt',
426 + ]
427 +
428 + foreach article : articles
429 + custom_target(
430 + command: asciidoc_common_options + [
431 + '--backend=' + asciidoc_html,
432 + '--out-file=@OUTPUT@',
433 + '@INPUT@',
434 + ],
435 + input: article,
436 + output: fs.stem(article) + '.html',
437 + depends: documentation_deps,
438 + install: true,
439 + install_dir: get_option('datadir') / 'doc/git-doc',
440 + )
441 + endforeach
442 +
443 + asciidoc_html_options = asciidoc_common_options + [
444 + '--backend=' + asciidoc_html,
445 + '--out-file=@OUTPUT@',
446 + '--attribute', 'git-relative-html-prefix=../',
447 + '@INPUT@',
448 + ]
449 +
450 + subdir('howto')
451 + subdir('technical')
452 endif
Documentation/technical/meson.build new
+66
@@ -0,0 +1,66 @@
1 +api_docs = [
2 + 'api-error-handling.txt',
3 + 'api-merge.txt',
4 + 'api-parse-options.txt',
5 + 'api-simple-ipc.txt',
6 + 'api-trace2.txt',
7 +]
8 +
9 +articles = [
10 + 'bitmap-format.txt',
11 + 'build-systems.txt',
12 + 'bundle-uri.txt',
13 + 'commit-graph.txt',
14 + 'directory-rename-detection.txt',
15 + 'hash-function-transition.txt',
16 + 'long-running-process-protocol.txt',
17 + 'multi-pack-index.txt',
18 + 'packfile-uri.txt',
19 + 'pack-heuristics.txt',
20 + 'parallel-checkout.txt',
21 + 'partial-clone.txt',
22 + 'platform-support.txt',
23 + 'racy-git.txt',
24 + 'reftable.txt',
25 + 'remembering-renames.txt',
26 + 'repository-version.txt',
27 + 'rerere.txt',
28 + 'scalar.txt',
29 + 'send-pack-pipeline.txt',
30 + 'shallow.txt',
31 + 'sparse-checkout.txt',
32 + 'sparse-index.txt',
33 + 'trivial-merge.txt',
34 + 'unit-tests.txt',
35 +]
36 +
37 +api_index = custom_target(
38 + command: [
39 + shell,
40 + meson.current_source_dir() / 'api-index.sh',
41 + meson.current_source_dir(),
42 + '@OUTPUT@',
43 + ],
44 + env: script_environment,
45 + input: api_docs,
46 + output: 'api-index.txt',
47 +)
48 +
49 +custom_target(
50 + command: asciidoc_html_options,
51 + input: api_index,
52 + output: 'api-index.html',
53 + depends: documentation_deps,
54 + install: true,
55 + install_dir: get_option('datadir') / 'doc/git-doc/technical',
56 +)
57 +
58 +foreach article : api_docs + articles
59 + custom_target(
60 + command: asciidoc_html_options,
61 + input: article,
62 + output: fs.stem(article) + '.html',
63 + install: true,
64 + install_dir: get_option('datadir') / 'doc/git-doc/technical',
65 + )
66 +endforeach