diff options
author | Andrew Cady <d@jerkface.net> | 2020-06-20 16:09:19 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2020-06-20 16:09:19 -0400 |
commit | 15afed2381caac4617e63080aafe0b50f4262921 (patch) | |
tree | 05480848a0f52088b3392b7513a867ef0eb2f052 | |
parent | 95c60e445e34e8404552cb2024aeebef1e1a6ca7 (diff) |
Beautify json output with jq
Also, keep around an uncompressed copy when creating a *lz4 file.
-rw-r--r-- | firefox-sideloader/functions.sh | 39 |
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 | ||
61 | copy_file_with_filter() | 61 | filter() |
62 | { | 62 | { |
63 | if which jq >/dev/null | ||
64 | then jq . | ||
65 | else cat | ||
66 | fi | sed -e "$filter_json" | ||
67 | } | ||
68 | |||
69 | copy_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 | ||
74 | keep_prefs() | 95 | keep_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 | ||
159 | list_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 | |||
138 | runtest() | 165 | runtest() |
139 | { | 166 | { |
140 | . functions.sh | 167 | . functions.sh |