summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2020-06-20 16:09:19 -0400
committerAndrew Cady <d@jerkface.net>2020-06-20 16:09:19 -0400
commit15afed2381caac4617e63080aafe0b50f4262921 (patch)
tree05480848a0f52088b3392b7513a867ef0eb2f052
parent95c60e445e34e8404552cb2024aeebef1e1a6ca7 (diff)
Beautify json output with jq
Also, keep around an uncompressed copy when creating a *lz4 file.
-rw-r--r--firefox-sideloader/functions.sh39
1 files changed, 33 insertions, 6 deletions
diff --git a/firefox-sideloader/functions.sh b/firefox-sideloader/functions.sh
index 62a8624..2934c09 100644
--- a/firefox-sideloader/functions.sh
+++ b/firefox-sideloader/functions.sh
@@ -58,17 +58,38 @@ illustrate_leak()
58 prof=$(get_default_firefox_profile_dir) && jq . < "$prof"/extensions.json | grep "$HOME" 58 prof=$(get_default_firefox_profile_dir) && jq . < "$prof"/extensions.json | grep "$HOME"
59} 59}
60 60
61copy_file_with_filter() 61filter()
62{ 62{
63 if which jq >/dev/null
64 then jq .
65 else cat
66 fi | sed -e "$filter_json"
67}
68
69copy_json_file_with_filter()
70{
71 which mozlz4 >/dev/null || PATH=$HOME/.cargo/bin:$PATH
72 which mozlz4 >/dev/null || exit 1
63 local new="$1" old="$2" f="$3" filter_json 73 local new="$1" old="$2" f="$3" filter_json
64 filter_json="s/${old//\//\\/}/${new//\//\\/}/g" 74 filter_json="s/${old//\//\\/}/${new//\//\\/}/g"
65 [ -d "$old" -a -d "$new" ] || return 75 [ -d "$old" -a -d "$new" ] || return
66 touch --reference="$old"/"$f" "$new"/"$f" || return 76 touch --reference="$old"/"$f" "$new"/"$f" || return
67 chmod --reference="$old"/"$f" "$new"/"$f" || return 77 chmod --reference="$old"/"$f" "$new"/"$f" || return
68 case "$f" in 78 case "$f" in
69 *lz4) mozlz4 - < "$old"/"$f" | sed -e "$filter_json" | mozlz4 -z - > "$new"/"$f" ;; 79 *lz4) mozlz4 - | filter | mozlz4 -z - ;;
70 *) sed -e "$filter_json" < "$old"/"$f" > "$new"/"$f" ;; 80 *) filter
81 esac < "$old"/"$f" > "$new"/"$f"
82
83 # Keep an uncompressed copy for inspection
84 local keep
85 case "$f" in
86 *.lz4) keep=$new/${f%lz4}unused ;;
87 *lz4) keep=$new/${f%lz4}.unused ;;
88 *) keep= ;;
71 esac 89 esac
90 if [ "$keep" ]
91 then mozlz4 - < "$new"/"$f" > "$keep"
92 fi
72} 93}
73 94
74keep_prefs() 95keep_prefs()
@@ -92,7 +113,7 @@ prefs()
92{ 113{
93 if [ "$COPY_ALL_PREFS" ] 114 if [ "$COPY_ALL_PREFS" ]
94 then 115 then
95 copy_file_with_filter "$new_profile_dir" "$old_profile_dir" 'prefs.js' 116 copy_json_file_with_filter "$new_profile_dir" "$old_profile_dir" 'prefs.js'
96 else 117 else
97 egrep "^user_pref.\"($(printf "%s" $(keep_prefs)))\"" "$old_profile_dir"/prefs.js > "$new_profile_dir"/prefs.js 118 egrep "^user_pref.\"($(printf "%s" $(keep_prefs)))\"" "$old_profile_dir"/prefs.js > "$new_profile_dir"/prefs.js
98 printf '%s\n' 'user_pref("browser.startup.homepage_override.mstone", "ignore");' >> "$new_profile_dir"/prefs.js 119 printf '%s\n' 'user_pref("browser.startup.homepage_override.mstone", "ignore");' >> "$new_profile_dir"/prefs.js
@@ -112,8 +133,8 @@ clone_profile_raw()
112 133
113 cp -r --preserve=mode,timestamps -t "$new_profile_dir" -- "$old_profile_dir"/{extensions/,extension-{setting,preference}s.json} || return 134 cp -r --preserve=mode,timestamps -t "$new_profile_dir" -- "$old_profile_dir"/{extensions/,extension-{setting,preference}s.json} || return
114 135
115 copy_file_with_filter "$new_profile_dir" "$old_profile_dir" 'extensions.json' 136 copy_json_file_with_filter "$new_profile_dir" "$old_profile_dir" 'extensions.json'
116 copy_file_with_filter "$new_profile_dir" "$old_profile_dir" 'addonStartup.json.lz4' 137 copy_json_file_with_filter "$new_profile_dir" "$old_profile_dir" 'addonStartup.json.lz4'
117 138
118 prefs 139 prefs
119} 140}
@@ -135,6 +156,12 @@ clone_default_profile()
135 clone_profile_raw "$old_dir" "$new_name" 156 clone_profile_raw "$old_dir" "$new_name"
136} 157}
137 158
159list_extensions()
160{
161 [ "$firefox_profile" ] || firefox_profile=$(get_default_firefox_profile_dir)
162 jq -c '.addons[] | {id:.id, name:.locales[0].name}' < "$firefox_profile"/extensions.json
163}
164
138runtest() 165runtest()
139{ 166{
140 . functions.sh 167 . functions.sh