mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
ec2fa07350
Signed-off-by: Joe P <joe@basicmemory.com> Co-authored-by: Claude <noreply@anthropic.com>
96 lines
3.1 KiB
Python
96 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Create CSV exhibits for individual contributors
|
|
"""
|
|
|
|
import json
|
|
import csv
|
|
from pathlib import Path
|
|
|
|
|
|
def create_csv_exhibits():
|
|
"""Create CSV Exhibit A files for each contributor."""
|
|
|
|
# Read the JSON inventory
|
|
inventory_files = list(Path("legal_inventory_main").glob("*.json"))
|
|
if not inventory_files:
|
|
print("Error: No JSON inventory files found")
|
|
return
|
|
|
|
inventory_file = inventory_files[0] # Use the most recent one
|
|
print(f"Using inventory file: {inventory_file}")
|
|
|
|
with open(inventory_file, "r") as f:
|
|
data = json.load(f)
|
|
|
|
files = data["files"]
|
|
|
|
# Create output directory
|
|
output_dir = Path("legal_exhibits")
|
|
output_dir.mkdir(exist_ok=True)
|
|
|
|
# Contributors we need exhibits for
|
|
target_contributors = {"jope-bm": "joe_exhibit_a.csv", "Drew Cain": "drew_cain_exhibit_a.csv"}
|
|
|
|
print("Creating CSV exhibits for contributors...")
|
|
|
|
for contributor_key, filename in target_contributors.items():
|
|
# Find files for this contributor
|
|
contributor_files = []
|
|
|
|
for file_info in files:
|
|
# Check if this contributor is listed in the file's contributors
|
|
for contrib in file_info.get("contributors", []):
|
|
if contributor_key in contrib["name"]:
|
|
contributor_files.append(file_info)
|
|
break
|
|
|
|
if not contributor_files:
|
|
print(f"No files found for {contributor_key}")
|
|
continue
|
|
|
|
# Sort files by path
|
|
contributor_files.sort(key=lambda x: x["path"])
|
|
|
|
# Create CSV file
|
|
csv_file = output_dir / filename
|
|
|
|
with open(csv_file, "w", newline="", encoding="utf-8") as csvfile:
|
|
fieldnames = [
|
|
"file_path",
|
|
"file_name",
|
|
"category",
|
|
"size_bytes",
|
|
"modified_date",
|
|
"primary_author",
|
|
"all_contributors",
|
|
"sha256_hash",
|
|
]
|
|
|
|
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
|
writer.writeheader()
|
|
|
|
for file_info in contributor_files:
|
|
contributors_list = "; ".join([c["name"] for c in file_info["contributors"]])
|
|
|
|
writer.writerow(
|
|
{
|
|
"file_path": file_info["path"],
|
|
"file_name": file_info["name"],
|
|
"category": file_info["category"],
|
|
"size_bytes": file_info["size_bytes"],
|
|
"modified_date": file_info["modified_time"][:10],
|
|
"primary_author": file_info["primary_author"],
|
|
"all_contributors": contributors_list,
|
|
"sha256_hash": file_info["sha256_hash"],
|
|
}
|
|
)
|
|
|
|
print(f"Created CSV exhibit for {contributor_key}: {csv_file}")
|
|
print(f" - {len(contributor_files)} files")
|
|
print(f" - {sum(f['size_bytes'] for f in contributor_files):,} bytes")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
create_csv_exhibits()
|