Highly ambitious ATProtocol AppView service and sdks

add script to add back system lexicon in case I acidentally delete them

Changed files
+96
scripts
+96
scripts/generate_system_lexicons.sh
···
··· 1 + #!/bin/bash 2 + 3 + # Script to generate network_slices_lexicons.txt from lexicon files 4 + # This script finds all network.slices.* lexicon JSON files (record types only) and converts them 5 + # to the format used in network_slices_lexicons.txt 6 + # 7 + # Purpose: In case the system lexicons are deleted, copy and paste these one by one into https://pdsls.dev/ 8 + # This allows restoring the lexicon definitions to the PDS. 9 + # Note: This is not a common thing and only slices.network needs to worry about this right now. 10 + 11 + set -e 12 + 13 + LEXICONS_DIR="./lexicons" 14 + OUTPUT_FILE="./network_slices_lexicons.txt" 15 + SLICES_CONFIG="./slices.json" 16 + 17 + # Check if required files/directories exist 18 + if [ ! -d "$LEXICONS_DIR" ]; then 19 + echo "Error: lexicons directory not found at $LEXICONS_DIR" 20 + exit 1 21 + fi 22 + 23 + if [ ! -f "$SLICES_CONFIG" ]; then 24 + echo "Error: slices.json not found at $SLICES_CONFIG" 25 + exit 1 26 + fi 27 + 28 + # Extract slice URI from slices.json 29 + SLICE_URI=$(jq -r '.slice' "$SLICES_CONFIG") 30 + if [ "$SLICE_URI" = "null" ] || [ -z "$SLICE_URI" ]; then 31 + echo "Error: Could not extract slice URI from $SLICES_CONFIG" 32 + exit 1 33 + fi 34 + 35 + # Get current timestamp 36 + CREATED_AT=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ") 37 + 38 + # Clear output file 39 + > "$OUTPUT_FILE" 40 + 41 + # Counter for generated lexicons 42 + COUNT=0 43 + 44 + echo "Generating network.slices lexicons..." 45 + 46 + # Find all network.slices lexicon files and process them 47 + find "$LEXICONS_DIR" -path "*/network/slices/*" -name "*.json" -type f | sort | while read -r file; do 48 + # Extract the lexicon ID from the file content 49 + LEXICON_ID=$(jq -r '.id // empty' "$file" 2>/dev/null) 50 + 51 + # Skip if not a network.slices lexicon or if ID extraction failed 52 + if [ -z "$LEXICON_ID" ] || [[ ! "$LEXICON_ID" =~ ^network\.slices\. ]]; then 53 + continue 54 + fi 55 + 56 + # Extract definitions 57 + DEFINITIONS=$(jq -c '.defs' "$file" 2>/dev/null) 58 + 59 + if [ "$DEFINITIONS" = "null" ] || [ -z "$DEFINITIONS" ]; then 60 + echo "Warning: Could not extract definitions from $file" 61 + continue 62 + fi 63 + 64 + # Check if this is a record type (skip procedures and queries) 65 + MAIN_TYPE=$(jq -r '.defs.main.type // empty' "$file" 2>/dev/null) 66 + if [ "$MAIN_TYPE" != "record" ]; then 67 + continue 68 + fi 69 + 70 + # Create the output JSON object 71 + OUTPUT_JSON=$(jq -n \ 72 + --arg nsid "$LEXICON_ID" \ 73 + --arg type "network.slices.lexicon" \ 74 + --arg slice "$SLICE_URI" \ 75 + --arg createdAt "$CREATED_AT" \ 76 + --argjson definitions "$DEFINITIONS" \ 77 + '{ 78 + "nsid": $nsid, 79 + "$type": $type, 80 + "slice": $slice, 81 + "createdAt": $createdAt, 82 + "definitions": ($definitions | tostring) 83 + }') 84 + 85 + # Append to output file with double newline separator 86 + if [ $COUNT -gt 0 ]; then 87 + echo "" >> "$OUTPUT_FILE" 88 + fi 89 + echo "$OUTPUT_JSON" >> "$OUTPUT_FILE" 90 + 91 + echo " - $LEXICON_ID" 92 + COUNT=$((COUNT + 1)) 93 + done 94 + 95 + echo "" 96 + echo "Generated $COUNT lexicon entries in $OUTPUT_FILE"