背景
現状 dz-migrate <archive.nitpicker> -o <dir> はアーカイブ内の内部ページ・リソースを
listInternalPages / listInternalResources で全件列挙し、丸ごと移行する。
(migrate.ts 内で対象を絞り込む手段はなく、--limit / --extract-limit は並列数の制御のみ)
大規模サイトの一部だけ先行移行したい、特定ページのみ再実行したい、といったユースケースに対応できない。
要望
CLI に対象ページを絞り込むオプションを追加する:
- 特定ページ(単一 URL / pathname)を指定して移行
- 特定ディレクトリ配下(pathname prefix)を指定して移行
実装方針の叩き台
プログラマティック API 側は extractPages / downloadResources が items: { url }[] を
受け取る設計なので、呼び出し側で listInternalPages の結果を絞り込んで渡せば既に部分実行は可能。
CLI 側に絞り込み引数(例: --include <path-prefix>)を追加し、migrate() に渡す前に
pageItems / resourceItems をフィルタする対応が必要。
検討事項
- 複数ディレクトリ/複数パスの同時指定を許すか
- アセット(リソース)側もフィルタするか。ページだけ絞るとアセット参照は保持されるが、
逆に絞ると参照切れが起きうるため要検討
assignPageIds はセクション単位で アーカイブ全体の URL 一覧 から id を採番する設計のため、
部分実行すると同じ URL でも id が変わり得る。部分移行と id の安定性の両立が論点になる
背景
現状
dz-migrate <archive.nitpicker> -o <dir>はアーカイブ内の内部ページ・リソースをlistInternalPages/listInternalResourcesで全件列挙し、丸ごと移行する。(migrate.ts 内で対象を絞り込む手段はなく、
--limit/--extract-limitは並列数の制御のみ)大規模サイトの一部だけ先行移行したい、特定ページのみ再実行したい、といったユースケースに対応できない。
要望
CLI に対象ページを絞り込むオプションを追加する:
実装方針の叩き台
プログラマティック API 側は
extractPages/downloadResourcesがitems: { url }[]を受け取る設計なので、呼び出し側で
listInternalPagesの結果を絞り込んで渡せば既に部分実行は可能。CLI 側に絞り込み引数(例:
--include <path-prefix>)を追加し、migrate()に渡す前にpageItems/resourceItemsをフィルタする対応が必要。検討事項
逆に絞ると参照切れが起きうるため要検討
assignPageIdsはセクション単位で アーカイブ全体の URL 一覧 から id を採番する設計のため、部分実行すると同じ URL でも id が変わり得る。部分移行と id の安定性の両立が論点になる