mirror of
https://github.com/bitwarden/android.git
synced 2024-11-27 03:49:36 +03:00
77 lines
2.8 KiB
Bash
77 lines
2.8 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# This shell script is for parsing `public_suffix_list.dat` and writing its contents into a string
|
||
|
# array resource. We need these public suffixes for extracting a domain name from a URI. For more
|
||
|
# information about why that is, checkout the original PR description here:
|
||
|
# https://github.com/bitwarden/android/pull/842.
|
||
|
#
|
||
|
# For an updated `public_suffix_list.dat` file, go here: https://publicsuffix.org/list/index.html
|
||
|
|
||
|
RAW_PREFIXES_DATA_PATH="public_suffix_list.dat"
|
||
|
RESOURCE_OUTPUT_PATH="../app/src/main/res/values/public_suffix_list.xml"
|
||
|
EXCEPTION_SUFFIXES_STRING_ARRAY_HEADER=" <string-array name=\"exception_suffixes\">\n"
|
||
|
NORMAL_SUFFIXES_STRING_ARRAY_HEADER=" <string-array name=\"normal_suffixes\">\n"
|
||
|
WILD_CARD_SUFFIXES_STRING_ARRAY_HEADER=" <string-array name=\"wild_card_suffixes\">\n"
|
||
|
STRING_ARRAY_FOOTER=" </string-array>\n"
|
||
|
STRING_RESOURCE_FOOTER="</resources>\n"
|
||
|
STRING_RESOURCE_HEADER="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n A list of valid public domain suffixes. This file is generated by running\n \`scripts/public_suffix_list_generator.sh\` \n-->\n<resources>\n"
|
||
|
|
||
|
# Setup the header of the file.
|
||
|
newFileContents=$STRING_RESOURCE_HEADER
|
||
|
|
||
|
exceptionSuffixes=()
|
||
|
normalSuffixes=()
|
||
|
wildcardSuffixes=()
|
||
|
|
||
|
addItemToContents() {
|
||
|
newFileContents+=" <item>$1</item>\n"
|
||
|
}
|
||
|
|
||
|
while IFS= read -r string || [[ -n "$string" ]]; do
|
||
|
if [[ -z "$string" || "$string" == "//"* ]]; then
|
||
|
# Remove comments and empty lines
|
||
|
continue
|
||
|
elif [[ "$string" == "*"* ]]; then
|
||
|
# Drop the "*."
|
||
|
wildcardSuffixes+=("${string#??}")
|
||
|
elif [[ "$string" == "!"* ]]; then
|
||
|
# Drop the "!."
|
||
|
exceptionSuffixes+=("${string#?}")
|
||
|
else
|
||
|
normalSuffixes+=("$string")
|
||
|
fi
|
||
|
done < "$RAW_PREFIXES_DATA_PATH"
|
||
|
|
||
|
# Add all exception suffix items to the new file contents.
|
||
|
if [ ${#exceptionSuffixes[@]} -gt 0 ]; then
|
||
|
newFileContents+=$EXCEPTION_SUFFIXES_STRING_ARRAY_HEADER
|
||
|
for item in "${exceptionSuffixes[@]}"; do
|
||
|
addItemToContents "$item"
|
||
|
done
|
||
|
newFileContents+=$STRING_ARRAY_FOOTER
|
||
|
fi
|
||
|
|
||
|
# Add all normal suffix items to the new file contents.
|
||
|
if [ ${#normalSuffixes[@]} -gt 0 ]; then
|
||
|
newFileContents+=$NORMAL_SUFFIXES_STRING_ARRAY_HEADER
|
||
|
for item in "${normalSuffixes[@]}"; do
|
||
|
addItemToContents "$item"
|
||
|
done
|
||
|
newFileContents+=$STRING_ARRAY_FOOTER
|
||
|
fi
|
||
|
|
||
|
# Add all wild card suffix items to the new file contents.
|
||
|
if [ ${#wildcardSuffixes[@]} -gt 0 ]; then
|
||
|
newFileContents+=$WILD_CARD_SUFFIXES_STRING_ARRAY_HEADER
|
||
|
for item in "${wildcardSuffixes[@]}"; do
|
||
|
addItemToContents "$item"
|
||
|
done
|
||
|
newFileContents+=$STRING_ARRAY_FOOTER
|
||
|
fi
|
||
|
|
||
|
# Setup the footer of the file.
|
||
|
newFileContents+=$STRING_RESOURCE_FOOTER
|
||
|
|
||
|
# Write the contents to the output file.
|
||
|
echo -e "$newFileContents" > "$RESOURCE_OUTPUT_PATH"
|