mirror of
https://github.com/Rulez777/FramePicoTracker.git
synced 2026-10-18 01:02:06 +02:00
14 lines
1.1 KiB
Python
14 lines
1.1 KiB
Python
"""Search local handoff metadata without loading private assets or using the network."""
|
|
from pathlib import Path
|
|
import argparse,json
|
|
ROOT=Path(__file__).resolve().parents[1]
|
|
def main():
|
|
ap=argparse.ArgumentParser(description=__doc__);ap.add_argument('catalog',choices=['documents','knowledge','assets','source']);ap.add_argument('--contains',default='');ap.add_argument('--phase',type=int);ap.add_argument('--limit',type=int,default=30)
|
|
a=ap.parse_args();names={'documents':'RESEARCH_DOCUMENTS.json','knowledge':'KNOWLEDGE_RECORDS.json','assets':'ASSET_REGISTER.json','source':'SOURCE_CODE_INDEX.json'}
|
|
rows=json.loads((ROOT/'catalog'/names[a.catalog]).read_text(encoding='utf-8'))
|
|
if a.contains:rows=[r for r in rows if a.contains.lower() in json.dumps(r).lower()]
|
|
if a.phase is not None:rows=[r for r in rows if a.phase in r.get('phase_ids',[]) or ('phase'+str(a.phase)) in r.get('relative_source_path','').lower()]
|
|
shown=rows if a.limit==0 else rows[:max(0,a.limit)]
|
|
print(json.dumps({'matching_records':len(rows),'shown_records':len(shown),'truncated':len(shown)!=len(rows),'records':shown},indent=2))
|
|
if __name__=='__main__':main()
|