make_programs_index.py 概要

make_programs_index.py は、指定されたディレクトリ内のマークダウンファイル(主にSphinxのドキュメント)を走査し、プログラムのインデックス(目次)一覧を生成するユーティリティスクリプトです。特定のファイル名パターン(デフォルトは *_usage.md)に一致するファイルから、特定のセクションを抽出してまとめます。出力はマークダウン形式またはHTML形式を選択できます。

動作原理

本スクリプトは以下の手順で動作します。

  1. ファイルの走査 指定されたルートディレクトリ(root_dir)以下を再帰的に検索し、*_usage.md に一致するファイルを抽出します。

  2. 情報の抽出 各ファイルの内容を読み込み、正規表現を用いて最初のレベル1見出し(#)からプログラムのファイル名を特定します。ファイル名が見つからない場合は、ファイルの相対パスを代替として使用します。 さらに、最初のレベル2見出し(##)のセクション本体と、それに属するサブセクションを抽出します。

  3. 外部ログの統合 (オプション) Launcherプログラム(Launcher_extract_python.py)のログファイルが指定された場合、ログを解析して対象プログラムの呼び出し履歴や参照箇所を抽出します。

  4. フォーマットと出力 抽出した情報をまとめ、指定された形式(マークダウンまたはHTML)で出力します。HTML出力の場合は、キーワードによるフィルタリング検索機能を持つインタラクティブなページが生成されます。

入出力仕様

入力

  • 対象ディレクトリ: コマンドライン引数 root_dir で指定されたディレクトリ内の *_usage.md ファイル。

  • 外部ログファイル (オプション): --script_list オプションで指定されたログファイル。

出力

  • 出力先: 標準出力、または -o (--output) オプションで指定したファイル。

  • フォーマット:

    • マークダウン形式: 各プログラムの概要をまとめたマークダウンテキスト。

    • HTML形式: 検索窓と折りたたみ機能(<details>タグ)を備えた単一のHTMLファイル。

    • --format auto が指定された場合、出力ファイルの拡張子(.html または .htm)から自動判定されます。

コマンドラインオプション

  • root_dir: 検索の起点となるルートディレクトリを指定します(必須)。

  • root_dir_output: 出力時に表示される相対パスの基準ディレクトリを指定します(省略時は root_dir が使用されます)。

  • -o, --output: 出力先のファイルを指定します。

  • -p, --pattern: インデックスに含めるプログラムパスのワイルドカードパターン(例: *.py)を指定します。セミコロン(;)区切りで複数指定可能です。

  • --script_list: 読み込むLauncherログファイルのワイルドカードパターンを指定します。セミコロン(;)区切りで複数指定可能です。

  • -f, --format: 出力フォーマットを auto, markdown, html から選択します。デフォルトは auto です。

依存ライブラリ

スクリプト内の import 文から確認できるライブラリは以下の通りです。これらはすべてPythonの標準ライブラリであり、非標準ライブラリ(外部パッケージ)への依存はコードからは確認できません。

  • argparse

  • fnmatch

  • glob

  • html

  • os

  • re

  • sys

  • pathlib

実行例

標準出力にマークダウン形式でインデックスを出力する例です。

python make_programs_index.py ./docs

出力をHTMLファイルとして保存する例です。拡張子から自動的にHTML形式として生成されます。

python make_programs_index.py ./docs -o index.html

特定のプログラム(例: *.py)のみを抽出し、外部のログファイルも読み込んでHTMLとして出力する例です。

python make_programs_index.py ./docs -o index.html -p "*.py" --script_list "logs/launcher_*.log"