Files
rocky-man/old_scripts/generate_json.py
Stephen Simpson 2287678798 Init
2025-01-09 15:39:20 -06:00

54 lines
2.0 KiB
Python

import os
import json
import argparse
from collections import defaultdict
rocky_version = "8.10"
def create_sitemap(directory):
sitemap = defaultdict(lambda: defaultdict(dict))
for root, dirs, files in os.walk(directory):
for file in files:
full_filepath = os.path.join(root, file)
filepath = full_filepath.split(rocky_version, 1)[-1]
# Exclude any path containing 'index.html'
if 'index.html' in filepath or 'sitemap.json' in filepath or 'sitemap.xml' in filepath or 'list.json' in filepath or 'list.json.br' in filepath:
continue
filepath_parts = filepath.split('/')
package_name = filepath_parts[1]
man_type = filepath_parts[2]
man_type_number = man_type.lstrip('man') if man_type.startswith('man') else man_type
command_file = filepath_parts[3]
command = command_file.split('.html', 1)[0]
if filepath.startswith('/'):
filepath = filepath[1:]
fullname = f"{package_name} - {command}({man_type_number})"
# Add command details to sitemap
sitemap[package_name][command] = {
"url": filepath,
"mantype": man_type,
"fullname": fullname
}
return sitemap
def convert_sitemap_to_json(sitemap, minify=False):
if minify:
return json.dumps(sitemap, separators=(',', ':'))
return json.dumps(sitemap, indent=4)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Generate sitemap JSON.')
parser.add_argument('directory', type=str, help='Directory to scan for HTML files')
parser.add_argument('--minify', action='store_true', help='Export minified JSON')
args = parser.parse_args()
sitemap = create_sitemap(args.directory)
json_output = convert_sitemap_to_json(sitemap, minify=args.minify)
print(json_output)