Skip to content

Commit 142003f

Browse files
authored
Merge pull request #202 from acep-uaf/nicole/add-meter_id-message-file
Add script to update message files with meter_id
2 parents 56ec1af + 03fe720 commit 142003f

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#!/bin/bash
2+
# ==============================================================================
3+
# Script Name: update-message-files-meter-id.sh
4+
#
5+
# Description: This script processes message files to add a "meter_id"
6+
# field to the JSON structure of the .message files.
7+
#
8+
# Usage: ./update-message-files-meter-id.sh <BASE_DIR>
9+
#
10+
# Arguments: BASE_DIR - The base directory to process
11+
#
12+
# Requirements: jq
13+
#
14+
# ==============================================================================
15+
16+
# Check if BASE_DIR is provided
17+
if [ -z "$1" ]; then
18+
echo "Usage: $0 <BASE_DIR>"
19+
exit 1
20+
fi
21+
22+
BASE_DIR="$1"
23+
24+
updated_count=0
25+
skipped_count=0
26+
27+
# Function to update the message file format to include meter_id
28+
add_meter_id_to_message_file() {
29+
local message_file="$1"
30+
local meter_id="$2"
31+
32+
# Check if the message file is already in V4 format (contains meter_id)
33+
if jq -e '.meter_id' "$message_file" > /dev/null 2>&1; then
34+
skipped_count=$((skipped_count + 1))
35+
return
36+
fi
37+
38+
# Extract current values from the message file
39+
local event_id=$(jq -r '.event_id' "$message_file")
40+
local filename=$(jq -r '.filename' "$message_file")
41+
local md5sum=$(jq -r '.md5sum' "$message_file")
42+
local data_type=$(jq -r '.data_type' "$message_file")
43+
44+
# Update the message file by adding "meter_id"
45+
jq --arg meter_id "$meter_id" '. | {event_id: .event_id, meter_id: $meter_id, filename: .filename, md5sum: .md5sum, data_type: .data_type}' "$message_file" > "$message_file.tmp" && mv "$message_file.tmp" "$message_file"
46+
echo "Updated: $(basename "$message_file")"
47+
updated_count=$((updated_count + 1))
48+
}
49+
50+
# Main script logic to process directories and files
51+
for date_dir in "$BASE_DIR"/*; do
52+
if [ -d "$date_dir" ]; then
53+
cur_date_dir=$(basename "$date_dir")
54+
echo "Processing date directory: $cur_date_dir"
55+
56+
for meter_dir in "$date_dir"/*; do
57+
if [ -d "$meter_dir" ]; then
58+
meter_id=$(basename "$meter_dir")
59+
echo "Processing meter directory: $meter_id"
60+
61+
for message_file in "$meter_dir"/*.message; do
62+
if [ -f "$message_file" ]; then
63+
add_meter_id_to_message_file "$message_file" "$meter_id"
64+
fi
65+
done
66+
fi
67+
done
68+
fi
69+
done
70+
71+
# Print the tally of updated and skipped files
72+
echo -e "\nFinished processing message files in: $BASE_DIR\n"
73+
echo "Summary of Processed Message Formats:"
74+
echo "Files updated from V3 to V4 format (added 'meter_id'): $updated_count"
75+
echo "Files already in V4 format (skipped): $skipped_count"
76+
77+
# If no files were processed
78+
if [ "$updated_count" -eq 0 ] && [ "$skipped_count" -eq 0 ]; then
79+
echo "No message files were found or processed."
80+
fi

0 commit comments

Comments
 (0)