|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +GIT_ROOTPROGRAM=$(basename "$0") |
| 4 | +GIT_ROOTPROGRAM_PATH=$(dirname "$0") |
| 5 | +GIT_ROOTCONFIG_PATH="${PROGRAM_PATH}/config" |
| 6 | +GIT_ROOTOLD_IFS=${IFS} |
| 7 | + |
| 8 | +LANGUAGES=(de-de en-asia en-au en-ca en-gb en-ie en-sg en-us es-es es-us fr-ca fr-fr it-it pl-pl pt-pt) |
| 9 | +OVERWRITE_SUBS='de en es fr it pl pt' |
| 10 | +OVERWRITE_MODE=body |
| 11 | + |
| 12 | +declare -A MANAGER |
| 13 | + |
| 14 | +MANAGER["DE-DE"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.de/\&ovhSubsidiary=de" |
| 15 | +MANAGER["EN-ASIA"]="https://ca.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com/asia/\&ovhSubsidiary=asia" |
| 16 | +MANAGER["EN-AU"]="https://ca.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com.au/\&ovhSubsidiary=au" |
| 17 | +MANAGER["EN-CA"]="https://ca.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com/ca/en/\&ovhSubsidiary=ca" |
| 18 | +MANAGER["EN-GB"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.co.uk/\&ovhSubsidiary=GB" |
| 19 | +MANAGER["EN-IE"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.ie/\&ovhSubsidiary=ie" |
| 20 | +MANAGER["EN-SG"]="https://ca.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com/sg/\&ovhSubsidiary=sg" |
| 21 | +MANAGER["EN-US"]="https://ca.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com/world/\&ovhSubsidiary=we" |
| 22 | +MANAGER["ES-ES"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.es/\&ovhSubsidiary=es" |
| 23 | +MANAGER["ES-US"]="https://ca.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com/world/\&ovhSubsidiary=ws" |
| 24 | +MANAGER["FR-CA"]="https://ca.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com/ca/fr/\&ovhSubsidiary=qc" |
| 25 | +MANAGER["FR-FR"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.com/fr/\&ovhSubsidiary=fr" |
| 26 | +MANAGER["IT-IT"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.it/\&ovhSubsidiary=it" |
| 27 | +MANAGER["PL-PL"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.pl/\&ovhSubsidiary=pl" |
| 28 | +MANAGER["PT-PT"]="https://www.ovh.com/auth/?action=gotomanager\&from=https://www.ovh.pt/\&ovhSubsidiary=pt" |
| 29 | + |
| 30 | +declare -A OVHCLOUD_LANG |
| 31 | + |
| 32 | +OVHCLOUD_LANG["DE-DE"]="de" |
| 33 | +OVHCLOUD_LANG["EN-ASIA"]="asia" |
| 34 | +OVHCLOUD_LANG["EN-AU"]="en-au" |
| 35 | +OVHCLOUD_LANG["EN-CA"]="en-ca" |
| 36 | +OVHCLOUD_LANG["EN-GB"]="en-gb" |
| 37 | +OVHCLOUD_LANG["EN-IE"]="en-ie" |
| 38 | +OVHCLOUD_LANG["EN-SG"]="en-sg" |
| 39 | +OVHCLOUD_LANG["EN-US"]="en" |
| 40 | +OVHCLOUD_LANG["ES-ES"]="es-es" |
| 41 | +OVHCLOUD_LANG["ES-US"]="es" |
| 42 | +OVHCLOUD_LANG["FR-CA"]="fr-ca" |
| 43 | +OVHCLOUD_LANG["FR-FR"]="fr" |
| 44 | +OVHCLOUD_LANG["IT-IT"]="it" |
| 45 | +OVHCLOUD_LANG["PL-PL"]="pl" |
| 46 | +OVHCLOUD_LANG["PT-PT"]="pt" |
| 47 | + |
| 48 | +declare -A OVHDOCS_LANG |
| 49 | + |
| 50 | +OVHDOCS_LANG["DE-DE"]="de" |
| 51 | +OVHDOCS_LANG["EN-ASIA"]="asia/en" |
| 52 | +OVHDOCS_LANG["EN-AU"]="au/en" |
| 53 | +OVHDOCS_LANG["EN-CA"]="ca/en" |
| 54 | +OVHDOCS_LANG["EN-GB"]="gb/en" |
| 55 | +OVHDOCS_LANG["EN-IE"]="ie/en" |
| 56 | +OVHDOCS_LANG["EN-SG"]="sg/en" |
| 57 | +OVHDOCS_LANG["EN-US"]="us/en" |
| 58 | +OVHDOCS_LANG["ES-ES"]="es" |
| 59 | +OVHDOCS_LANG["ES-US"]="us/es" |
| 60 | +OVHDOCS_LANG["FR-CA"]="ca/fr" |
| 61 | +OVHDOCS_LANG["FR-FR"]="fr" |
| 62 | +OVHDOCS_LANG["IT-IT"]="it" |
| 63 | +OVHDOCS_LANG["PL-PL"]="pl" |
| 64 | +OVHDOCS_LANG["PT-PT"]="pt" |
| 65 | + |
| 66 | + |
| 67 | +git rev-parse --is-inside-work-tree > /dev/null |
| 68 | +GIT_ROOT="$(git rev-parse --show-toplevel)" |
| 69 | +cd "${GIT_ROOT}" |
| 70 | + |
| 71 | +update_link_subs(){ |
| 72 | + sed -i "s,www.ovhcloud.com/[^/]*,www.ovhcloud.com/${OVHCLOUD_LANG["${LANG^^}"]},g" ${TARGET} |
| 73 | + sed -i "s,docs.ovh.com/[^/]*/[^/]*,docs.ovh.com/${OVHDOCS_LANG["${LANG^^}"]},g" ${TARGET} |
| 74 | + sed -i "s,${MANAGER["${GUIDE_SUB^^}"]},${MANAGER["${LANG^^}"]},g" ${TARGET} |
| 75 | +} |
| 76 | + |
| 77 | +find "${GIT_ROOT}" -type f -name "duplicate.task" | while read tasks |
| 78 | +do |
| 79 | + cat ${tasks} | while read task |
| 80 | + do |
| 81 | + GUIDE_SUB=$(echo ${task} | awk -F ":" '{print $1}') |
| 82 | + GUIDE_CONFIG=$(echo ${task} | awk -F ":" '{print $2}') |
| 83 | + GUIDE_OVERWRITE=$(echo ${task} | awk -F ":" '{print $3}') |
| 84 | + GUIDE=$(dirname ${tasks})/guide.${GUIDE_SUB}.md |
| 85 | + [[ -n ${GUIDE_CONFIG} ]] && source "${CONFIG_PATH}/${GUIDE_CONFIG}" |
| 86 | + [[ -n ${GUIDE_OVERWRITE} ]] && eval ${GUIDE_OVERWRITE} |
| 87 | + LANGUAGES=("${LANGUAGES[@]/$GUIDE_SUB}") |
| 88 | + for LANG in ${LANGUAGES[@]} |
| 89 | + do |
| 90 | + TARGET=$(dirname ${GUIDE})/guide.${LANG}.md |
| 91 | + echo "GUIDE: ${GUIDE#${GIT_ROOT}\/}" |
| 92 | + echo "TARGET: ${TARGET#${GIT_ROOT}\/}" |
| 93 | + if [[ -f ${TARGET} && ${OVERWRITE_MODE} == "body" && $(echo ${OVERWRITE_SUBS} | grep -ow "${LANG::2}" | wc -w) != 0 ]];then |
| 94 | + TARGET_FM=$(sed -n '1,/---/p' ${TARGET}) |
| 95 | + sed -e '1,/---/d' ${GUIDE} > ${TARGET} |
| 96 | + update_link_subs && wait |
| 97 | + CONTENT=$(echo "${TARGET_FM}" && cat ${TARGET}) |
| 98 | + echo "${CONTENT}" > ${TARGET} |
| 99 | + GUIDE_UPDATED_KEY=$(grep -Eo "^updated: [0-9]{4}(-[0-9]{2}){2}.+?$" ${GUIDE}) |
| 100 | + TARGET_UPDATED_KEY=$(grep -Eo "^updated: [0-9]{4}(-[0-9]{2}){2}.+?$" ${TARGET}) |
| 101 | + sed -i "2,/---/ s/${TARGET_UPDATED_KEY}/${GUIDE_UPDATED_KEY}/" ${TARGET} |
| 102 | + else |
| 103 | + cp -f ${GUIDE} ${TARGET} |
| 104 | + update_link_subs && wait |
| 105 | + if [[ "${GUIDE_SUB::2}" != "${LANG::2}" ]];then |
| 106 | + CANONICAL_URL="https://docs.ovh.com/${OVHDOCS_LANG[${GUIDE_SUB^^}]}/" |
| 107 | + IFS='/' read -r -a arr <<< $(dirname ${GUIDE#${GIT_ROOT}\/} | cut -d/ -f 3-) |
| 108 | + IFS=${OLD_IFS} |
| 109 | + p=$(echo ${GUIDE#${GIT_ROOT}\/} | awk -F "/" '{print $1"/"$2"/"}') |
| 110 | + for d in ${arr[@]} |
| 111 | + do |
| 112 | + p+=${d}/ |
| 113 | + CANONICAL_URL+=$(cat ${p}*.${GUIDE_SUB}.md | sed -n '2,/---/p' | awk -F ": " '/^slug: / {print $2}' | tr -d "\r")/ |
| 114 | + done |
| 115 | + sed -i "2,/---/ s;---;routes:\n canonical: '${CANONICAL_URL}'\n---;" ${TARGET} |
| 116 | + echo "CANONICAL_URL: ${CANONICAL_URL}" |
| 117 | + fi |
| 118 | + fi |
| 119 | + echo |
| 120 | + done |
| 121 | + done && wait |
| 122 | + rm -f ${tasks} |
| 123 | + echo |
| 124 | +done |
0 commit comments