#!/bin/bash # # Fetch EPUB and PDF files from http://docteam.mageia.nl and copy properly named file to git # # Filip Komar, June 2017, 2019 # @license GPL v2 # @author Filip # @copyright 2017, 2019 # # "Usage: mageia_doc_binaries.sh "/mirror/dir_name/" "/local_git/dir_name/" # but first adjust variables bellow release=8 epub_dir='https://docteam.mageia.org.uk/Factory/EPUB/' pdf_dir='https://docteam.mageia.org.uk/Factory/PDF/' function rename_binary { doc_regex="(.+)($1)-(cover-)?(.+)-(PDF|EPUB).(.+)" doc_dir_prefix="$download_dir/doc/mga$release" doc_dir="$doc_dir_prefix/$2/*" languages="" for dir_filename in $(\ls -d $doc_dir) do [[ "$dir_filename" =~ $doc_regex ]] # echo "${a,,}" # bash 4 lower case manual=${BASH_REMATCH[2]} language=${BASH_REMATCH[4],,} extension=${BASH_REMATCH[6],,} new_name="Mageia$release-$manual-$language.$extension" check=${#BASH_REMATCH[0]} if [ $check -ge 1 ]; then # option fo skip certain files if needed (currently pdf) # skip_languages=( "cs" "el" "jp" "ru" "sl" "tg" "uk" "zh-cn" ) # skip_this_language=$( printf "%s\n" "${skip_languages[@]}" | grep -n -m 1 "^${language}$" | cut -d ":" -f1 ) if [[ $extension == 'pdf' && -n $skip_this_language ]]; then echo -e "\E[31m" echo "Language $language skiped for $extension in $manual." echo -e "\E[m" else # echo $new_name languages="$languages|$language" mkdir --parents "$local_git/doc_binaries_for_website/mga$release/$extension/$manual" # set copying options (-i: interactive, -v: verbose, -u: update, -r: recursive) cp -u "$dir_filename" "$local_git/doc_binaries_for_website/mga$release/$extension/$manual/$new_name" git add "doc_binaries_for_website/mga$release/$extension/$manual/$new_name" git_clean=`git diff --name-only` if [ ! -z $git_clean ]; then commit_needed="yes" fi fi else echo -e "\E[31m" echo "Manual file $1 in $2 missed by regex: $dir_filename" echo -e "\E[m" fi done echo -n "manual $1 ($2) is in languages: " >> "$list_file" echo $languages | cut -c 2- >> "$list_file" git commit -m "adding and updating $1 $extension manual for release $release" } if [ -z "$2" ]; then echo "Usage: mageia_doc_binaries.sh \"/mirror/dir_name/\" \"/local_git/dir_name/\"" exit 2 else download_dir="$1" local_git="$2" fi # save pwd to saved_dir saved_dir=$(pwd) cd "$local_git" git_clean=`git diff --name-only` if [ ! -z $git_clean ]; then echo "Please commit changes first" git status # restore saved_dir cd "$saved_dir" exit 2 fi list_file="$download_dir/doc/mga$release/manuals_in_languages.txt" wget_options="--directory-prefix=$download_dir/doc/mga$release --timestamping --no-host-directories --recursive --no-parent --quiet" echo "Mageia PDF and EPUB management tool (current release=$release):" echo '' echo 'Downloading EPUB files...' wget $wget_options --accept epub $epub_dir echo 'Downloading PDF files...' wget $wget_options --accept pdf $pdf_dir echo "Manuals in PDF and EPUB form are available in languages: " > "$list_file" echo 'Renaming and pushing to git...' # remember to fix 2nd argument to real directories: rename_binary 'DrakX' 'EPUB/installer' rename_binary 'DrakX' 'PDF/installer' rename_binary 'MCC' 'EPUB/MCC' rename_binary 'MCC' 'PDF/MCC' rename_binary 'NetInstall' 'EPUB/netinstall' rename_binary 'NetInstall' 'PDF/netinstall' rename_binary 'DrakLive' 'EPUB/draklive' rename_binary 'DrakLive' 'PDF/draklive' if [ "$commit_needed" == "yes" ]; then echo Mageia $release > "$local_git/doc_binaries_for_website/mga$release/date.txt" LC_ALL=C date -u >> "$local_git/doc_binaries_for_website/mga$release/date.txt" git add "doc_binaries_for_website/mga$release/date.txt" git commit -m "adding/updating date.txt file (mirror upload date check) for release $release" fi echo "" echo "List file shown bellow is here: $list_file" cat "$list_file" # restore saved_dir cd "$saved_dir"