Skip to content

Commit 28db662

Browse files
committed
changed jq to python
1 parent bb5bc38 commit 28db662

File tree

1 file changed

+49
-34
lines changed

1 file changed

+49
-34
lines changed

examples/ConnectedFields/eg001SetConnectedFields.sh

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,6 @@ if [[ $SHELL != *"bash"* ]]; then
33
echo "PROBLEM: Run these scripts from within the bash shell."
44
fi
55

6-
if ! command -v jq &> /dev/null; then
7-
echo "jq is not installed. Installing jq..."
8-
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
9-
sudo apt-get update && sudo apt-get install -y jq # For Debian/Ubuntu
10-
elif [[ "$OSTYPE" == "darwin"* ]]; then
11-
brew install jq # For macOS (Homebrew)
12-
elif [[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]]; then
13-
echo "Please install jq manually from: https://stedolan.github.io/jq/download/"
14-
exit 1
15-
else
16-
echo "Unsupported OS. Please install jq manually."
17-
exit 1
18-
fi
19-
else
20-
echo "jq is already installed."
21-
fi
22-
236
ds_access_token_path="config/ds_access_token.txt"
247
verification_file="config/verification_app.txt"
258

@@ -50,16 +33,44 @@ echo "Response:"
5033
cat $response
5134
echo ""
5235

36+
invoke_python() {
37+
if [[ $(python3 --version 2>&1) == *"not found"* ]]; then
38+
if [[ $(python --version 2>&1) != *"not found"* ]]; then
39+
python -c "$1"
40+
else
41+
echo "Either python or python3 must be installed to use this option."
42+
exit 1
43+
fi
44+
else
45+
python3 -c "$1"
46+
fi
47+
}
48+
5349
#Extract tab data from response
5450
#ds-snippet-start:eSign45Step4
5551
extract_verify_info() {
5652
clean_response=$(sed -n '/\[/,$p' "$response")
57-
echo "$clean_response" | jq '[.[] | select(.tabs[]?.extensionData.actionContract | contains("Verify"))]'
53+
echo "$clean_response" | invoke_python "
54+
import sys, json
55+
data = json.load(sys.stdin)
56+
filtered_data = [item for item in data if any('Verify' in tab.get('extensionData', {}).get('actionContract', '') for tab in item.get('tabs', []))]
57+
print(json.dumps(filtered_data))"
5858
}
5959

6060
prompt_user_choice() {
6161
local json_data="$1"
62-
mapfile -t unique_apps < <(echo "$json_data" | jq -r '[.[] | {appId: .appId, applicationName: .tabs[0].extensionData.applicationName}] | unique_by(.appId) | .[] | "\(.appId) \(.applicationName)"')
62+
mapfile -t unique_apps < <(echo "$json_data" | echo "$json_data" | invoke_python "
63+
import sys, json
64+
data = json.load(sys.stdin)
65+
unique_apps = {}
66+
for item in data:
67+
app_id = item.get('appId')
68+
application_name = item.get('tabs', [{}])[0].get('extensionData', {}).get('applicationName')
69+
if app_id and application_name:
70+
unique_apps[app_id] = application_name
71+
for app_id, application_name in unique_apps.items():
72+
print(f'{app_id} {application_name}')
73+
")
6374

6475
if [[ -z "$json_data" || "$json_data" == "[]" ]]; then
6576
echo "No data verification were found in the account. Please install a data verification app."
@@ -77,7 +88,11 @@ prompt_user_choice() {
7788
read -p "Enter choice (1-${#unique_apps[@]}): " choice
7889
if [[ "$choice" =~ ^[1-${#unique_apps[@]}]$ ]]; then
7990
chosen_app_id="${unique_apps[$((choice-1))]%% *}"
80-
selected_data=$(echo "$json_data" | jq --arg appId "$chosen_app_id" '[.[] | select(.appId == $appId)]')
91+
selected_data=$(echo "$json_data" | invoke_python "
92+
import sys, json
93+
data = json.load(sys.stdin)
94+
print(json.dumps([item for item in data if item.get('appId') == '$chosen_app_id']))
95+
")
8196
parse_verification_data "$selected_data"
8297
else
8398
echo "Invalid choice. Exiting."
@@ -88,20 +103,20 @@ prompt_user_choice() {
88103
parse_verification_data() {
89104
local clean_json="$1"
90105

91-
app_id=$(echo "$clean_json" | jq -r '.[0].appId')
92-
extension_group_id=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.extensionGroupId')
93-
publisher_name=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.publisherName')
94-
application_name=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.applicationName')
95-
action_name=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.actionName')
96-
action_input_key=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.actionInputKey')
97-
action_contract=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.actionContract')
98-
extension_name=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.extensionName')
99-
extension_contract=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.extensionContract')
100-
required_for_extension=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.requiredForExtension')
101-
tab_label=$(echo "$clean_json" | jq -r '.[0].tabs[].tabLabel')
102-
connection_key=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.connectionInstances[0].connectionKey')
103-
connection_value=$(echo "$clean_json" | jq -r '.[0].tabs[0].extensionData.connectionInstances[0].connectionValue')
104-
106+
app_id=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['appId'])")
107+
extension_group_id=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['extensionGroupId'])")
108+
publisher_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['publisherName'])")
109+
application_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['applicationName'])")
110+
action_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['actionName'])")
111+
action_input_key=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['actionInputKey'])")
112+
action_contract=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['actionContract'])")
113+
extension_name=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['extensionName'])")
114+
extension_contract=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['extensionContract'])")
115+
required_for_extension=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['requiredForExtension'])")
116+
tab_label=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(' '.join([tab['tabLabel'] for tab in data[0]['tabs']]))")
117+
connection_key=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['connectionInstances'][0]['connectionKey'])")
118+
connection_value=$(echo "$clean_json" | invoke_python "import sys, json; data = json.load(sys.stdin); print(data[0]['tabs'][0]['extensionData']['connectionInstances'][0]['connectionValue'])")
119+
105120
echo "App ID: $app_id"
106121
echo "Extension Group ID: $extension_group_id"
107122
echo "Publisher Name: $publisher_name"

0 commit comments

Comments
 (0)