From a2957d7260450aba0c91f6e3df649f0fdf6de34a Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Thu, 18 Sep 2014 04:04:40 +0300 Subject: [PATCH] Escaping to support article names with parenthnesses --- builder/htmlprocessor/convert_img.sh | 22 ++++++++++----------- builder/wikivoyage/clean_up_countries.sh | 10 +++++----- builder/wikivoyage/generate_article_info.sh | 13 +++++++----- builder/wikivoyage/makeapk.sh | 13 ++++++------ builder/wikivoyage/makezip.sh | 11 +++++------ builder/wikivoyage/wikivoyage.mk | 4 ++-- 6 files changed, 38 insertions(+), 35 deletions(-) diff --git a/builder/htmlprocessor/convert_img.sh b/builder/htmlprocessor/convert_img.sh index e1d3ff3..db22ef4 100644 --- a/builder/htmlprocessor/convert_img.sh +++ b/builder/htmlprocessor/convert_img.sh @@ -5,19 +5,19 @@ if test "$1" == "" ; then exit fi -mkdir -p $3 +mkdir -p "$3" -mkdir -p $3/thumb -pushd $1 - for i in *.png; do convert $i -auto-orient -quality 53 -thumbnail '256x256>' $3/thumb/$(basename -s.png $i).jpg; echo $i; done - for i in *.svg; do convert $i -auto-orient -quality 53 -thumbnail '256x256>' $3/thumb/$(basename -s.svg $i).jpg; echo $i; done - for i in *.jpg; do convert -define jpeg:size=400x280 $i -auto-orient -quality 53 -thumbnail '500x280>' -strip -liquid-rescale '256x256!>' $3/thumb/$i; echo $i; done +mkdir -p "$3/thumb" +pushd "$1" + for i in *.png; do convert "$i" -auto-orient -quality 53 -thumbnail '256x256>' "$3"/thumb/$(basename -s.png "$i").jpg; echo "$i"; done + for i in *.svg; do convert "$i" -auto-orient -quality 53 -thumbnail '256x256>' "$3"/thumb/$(basename -s.svg "$i").jpg; echo "$i"; done + for i in *.jpg; do convert -define jpeg:size=400x280 "$i" -auto-orient -quality 53 -thumbnail '500x280>' -strip -liquid-rescale '256x256!>' "$3/thumb/$i"; echo "$i"; done popd -mkdir -p $3/images -pushd $2 - for i in *.jpg; do convert $i -auto-orient -quality 53 -strip -thumbnail '1536x1536>' $3/images/$i; echo $i; done - for i in *.png; do convert $i -auto-orient -quality 99 -strip -thumbnail '4000x3000>' PNG8:$3/images/$i; echo $i; done - for i in *.svg; do convert $i -auto-orient -quality 99 -strip -thumbnail '4000x3000>' PNG8:$3/images/$(basename -s.svg $i).png; echo $i; done +mkdir -p "$3/images" +pushd "$2" + for i in *.jpg; do convert "$i" -auto-orient -quality 53 -strip -thumbnail '1536x1536>' "$3/images/$i"; echo "$i"; done + for i in *.png; do convert "$i" -auto-orient -quality 99 -strip -thumbnail '4000x3000>' "PNG8:$3/images/$i"; echo "$i"; done + for i in *.svg; do convert "$i" -auto-orient -quality 99 -strip -thumbnail '4000x3000>' PNG8:"$3"/images/$(basename -s.svg "$i").png; echo "$i"; done popd diff --git a/builder/wikivoyage/clean_up_countries.sh b/builder/wikivoyage/clean_up_countries.sh index 0330bb3..4dcea98 100755 --- a/builder/wikivoyage/clean_up_countries.sh +++ b/builder/wikivoyage/clean_up_countries.sh @@ -4,21 +4,21 @@ set -e -u cat countries_to_generate.txt | while read REGION do - rm $REGION.info.txt.tmp || true - touch $REGION.info.txt.tmp + rm "$REGION.info.txt.tmp" || true + touch "$REGION.info.txt.tmp" - cat $REGION.info.txt | while read LINE + cat "$REGION.info.txt" | while read LINE do ARTICLE=$(echo "$LINE" | cut -f1) if [ -f "articles/$ARTICLE" ] then - echo "${LINE}" >> $REGION.info.txt.tmp + echo "${LINE}" >> "$REGION.info.txt.tmp" else echo "Article $ARTICLE not found for $REGION" fi done # now we are ready to use new *.info.txt file - mv $REGION.info.txt.tmp $REGION.info.txt + mv "$REGION.info.txt.tmp" "$REGION.info.txt" done # for make, if we succeed touch clean_up_countries diff --git a/builder/wikivoyage/generate_article_info.sh b/builder/wikivoyage/generate_article_info.sh index 4655d2f..4ba4fd9 100755 --- a/builder/wikivoyage/generate_article_info.sh +++ b/builder/wikivoyage/generate_article_info.sh @@ -7,6 +7,9 @@ rm article_info.tmp || true cat countries_to_generate.txt | while read REGION do + REGION_UNESCAPED="$REGION" + REGION="${REGION/(/_}" + REGION="${REGION/)/_}" # Create an empty table. $MYSQL_BINARY --user=$MYSQL_USER --database=$MYSQL_DATABASE --execute="DROP TABLE IF EXISTS $REGION" $MYSQL_BINARY --user=$MYSQL_USER --database=$MYSQL_DATABASE --execute="CREATE TABLE $REGION \ @@ -14,7 +17,7 @@ do # Insert the seed category. $MYSQL_BINARY --user=$MYSQL_USER --database=$MYSQL_DATABASE --execute="INSERT INTO $REGION(id, gen) \ - SELECT page_id, 0 FROM page WHERE page_title = '$REGION';" + SELECT page_id, 0 FROM page WHERE page_title = '$REGION_UNESCAPED';" # In a loop insert all children (both pages and categories). for i in `seq 1 10` @@ -74,9 +77,9 @@ do JOIN page ON page_id = id \ WHERE page_namespace = 0 AND page_is_redirect = 0 \ ORDER BY page_title" \ - --skip-column-names > $REGION.info.txt + --skip-column-names > "$REGION_UNESCAPED.info.txt" - REDIRECT_TABLE=$REGION"_redirect" + REDIRECT_TABLE="${REGION}_redirect" $MYSQL_BINARY --user=$MYSQL_USER --database=$MYSQL_DATABASE --execute="DROP TABLE IF EXISTS $REDIRECT_TABLE" $MYSQL_BINARY --user=$MYSQL_USER --database=$MYSQL_DATABASE --execute="CREATE TABLE $REDIRECT_TABLE \ (from_id int(10), from_title varbinary(255), to_title varbinary(255))" @@ -106,9 +109,9 @@ do JOIN page ON page_title = to_title AND page_namespace = 0 AND page_is_redirect = 0 JOIN $REGION ON id = page_id ORDER BY from_title" \ - --skip-column-names > $REGION.redirect.txt + --skip-column-names > "$REGION_UNESCAPED.redirect.txt" - echo $REGION >> countries.tmp + echo "$REGION_UNESCAPED" >> countries.tmp done # Now we are done. Create the final file. diff --git a/builder/wikivoyage/makeapk.sh b/builder/wikivoyage/makeapk.sh index eeb9f2c..b7d5172 100644 --- a/builder/wikivoyage/makeapk.sh +++ b/builder/wikivoyage/makeapk.sh @@ -4,7 +4,7 @@ cat countries_to_generate.txt | while read country; do # copy index rm ../../android/assets/index.dat || echo "No previous index found." - cp -f Countries/$country/content/data/index.dat ../../android/assets/ + cp -f "Countries/$country/content/data/index.dat" ../../android/assets/ # copy resources toCopy=(drawable-ldpi drawable-mdpi drawable-hdpi \ @@ -17,15 +17,16 @@ cat countries_to_generate.txt | while read country; do fi for resDir in ${toCopy[*]} do - cp -f $COUNTRY_RES_DIR/$resDir/* ../../android/res/$resDir + cp -f "$COUNTRY_RES_DIR/$resDir/"* ../../android/res/$resDir echo "Copied $resDir for $country" done rm ../../android/build/apk/* || true - rm Countries/$country/*.apk || true + rm "Countries/$country/*.apk" || true # make packages lower case and dot-separated - PACKAGE="com.guidewithme."$(echo "$country" | tr '[:upper:]' '[:lower:]' | \ + STRIPPED_COUNTRY="${country/_(*/}" + PACKAGE="com.guidewithme."$(echo "$STRIPPED_COUNTRY" | tr '[:upper:]' '[:lower:]' | \ sed 's/_/\./g') # hack for UK @@ -35,12 +36,12 @@ cat countries_to_generate.txt | while read country; do fi # remove underscores from title - TITLE=$(echo "$country" | sed 's/_/ /g') + TITLE=$(echo "$STRIPPED_COUNTRY" | sed 's/_/ /g') pushd ../../android/ ./gradlew "-PGWMpn=$PACKAGE" "-PGWMapk=GuideWithMe $country" \ "-PGWMappName=GuideWithMe $TITLE" clean assembleRelease popd - cp ../../android/build/outputs/apk/*release.apk Countries/$country/ + cp ../../android/build/outputs/apk/*release.apk "Countries/$country/" done diff --git a/builder/wikivoyage/makezip.sh b/builder/wikivoyage/makezip.sh index 7f56453..0666ad9 100644 --- a/builder/wikivoyage/makezip.sh +++ b/builder/wikivoyage/makezip.sh @@ -4,16 +4,15 @@ cat countries_to_generate.txt | while read country; do DATA_PATH="Countries/$country/content/data" # copy js, css - cp -r ../../data/* $DATA_PATH + cp -r ../../data/* "$DATA_PATH" echo "Generate .zip for : $country" # zip content with pushd to avoid adding full path - pushd Countries/$country/content - rm ../$country.data.zip || true; - zip -r \ - ../$country.data.zip \ - data + pushd "Countries/$country/content" + STRIPPED="${country/_(*/}" + rm "../$STRIPPED.data.zip" || true + zip -r "../${STRIPPED}.data.zip" data popd echo "Zipped $country" diff --git a/builder/wikivoyage/wikivoyage.mk b/builder/wikivoyage/wikivoyage.mk index 3980060..de78e4d 100644 --- a/builder/wikivoyage/wikivoyage.mk +++ b/builder/wikivoyage/wikivoyage.mk @@ -81,11 +81,11 @@ geocodes.txt: geocodes_from_html.txt geocodes_todo.txt touch geocodes.txt process_html: clean_up_countries geocodes.txt - cp default_images/* images; cat countries_to_generate.txt | while read country; do mkdir -p Countries/$$country/content/data; rm Countries/$$country/content/data/*.html; ../htmlprocessor/processor.sh articles/ images/ $$country.info.txt $$country.redirect.txt geocodes.txt Countries/$$country/content/data $$country; done + cp default_images/* images; cat countries_to_generate.txt | while read country; do mkdir -p "Countries/$$country/content/data"; rm "Countries/$$country/content/data/*.html"; ../htmlprocessor/processor.sh articles/ images/ "$$country.info.txt" "$$country.redirect.txt" geocodes.txt "Countries/$$country/content/data" "$$country"; done touch process_html genindex: geocodes.txt clean_up_countries - cat countries_to_generate.txt | while read country; do ../genindex/genindex $$country.info.txt $$country.redirect.txt geocodes.txt Countries/$$country/content/data/index.dat; done + cat countries_to_generate.txt | while read country; do ../genindex/genindex "$$country.info.txt" "$$country.redirect.txt" geocodes.txt "Countries/$$country/content/data/index.dat"; done touch genindex make_data_zip: process_html