From 09ce58df5ad8835fa116663b98f46e37848c31b6 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 13 2019 22:08:30 +0000 Subject: [PATCH 1/14] generate commands for all-po-to-src from site.yml --- diff --git a/readyaml.py b/readyaml.py new file mode 100644 index 0000000..1b479ab --- /dev/null +++ b/readyaml.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +import yaml +import urllib.request +import os +from pprint import pprint + +# download site.yml + +urllib.request.urlretrieve ("https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml") + +# Read site.yml +with open("site.yml", 'r') as stream: + data_loaded = yaml.load(stream) + +# Parse site.yml + +for source in data_loaded['content']['sources']: + url = source['url'] + + if 'start_path' in source: + src_basedir = source['start_path'] + print("$cmd --clone-target-repo --src-basedir {basedir} {url} $output_dir".format( basedir=src_basedir, url=url )) + + elif 'branches' in source: + for branch in source['branches']: + src_branch = branch + print("$cmd --clone-target-repo --src-branch {branch} {url} $output_dir".format( branch=src_branch, url=url )) + else: + print("$cmd --clone-target-repo {url} $output_dir".format( url=url )) + +# Remove site.yml + +os.remove("site.yml") From ad8b302d2333942299e527cc9316dfe60c9fc3f5 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 14 2019 19:35:05 +0000 Subject: [PATCH 2/14] follow pylint advices --- diff --git a/readyaml.py b/readyaml.py index 1b479ab..ce12db0 100644 --- a/readyaml.py +++ b/readyaml.py @@ -1,33 +1,38 @@ # -*- coding: utf-8 -*- -import yaml -import urllib.request import os -from pprint import pprint +import urllib.request +import yaml +# from pprint import pprint # download site.yml - -urllib.request.urlretrieve ("https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml") +urllib.request.urlretrieve( + "https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml" + ) # Read site.yml with open("site.yml", 'r') as stream: - data_loaded = yaml.load(stream) + DATA_LOADED = yaml.load(stream) # Parse site.yml - -for source in data_loaded['content']['sources']: - url = source['url'] +for source in DATA_LOADED['content']['sources']: + url = source['url'] if 'start_path' in source: src_basedir = source['start_path'] - print("$cmd --clone-target-repo --src-basedir {basedir} {url} $output_dir".format( basedir=src_basedir, url=url )) + print( + "$cmd --clone-target-repo --src-basedir {basedir} {url} $output_dir" + .format(basedir=src_basedir, url=url) + ) elif 'branches' in source: for branch in source['branches']: src_branch = branch - print("$cmd --clone-target-repo --src-branch {branch} {url} $output_dir".format( branch=src_branch, url=url )) + print( + "$cmd --clone-target-repo --src-branch {branch} {url} $output_dir" + .format(branch=src_branch, url=url) + ) else: - print("$cmd --clone-target-repo {url} $output_dir".format( url=url )) + print("$cmd --clone-target-repo {url} $output_dir".format(url=url)) # Remove site.yml - os.remove("site.yml") From 3a237ab1793d127e0aedf6fbda2c78341af8daf0 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 14 2019 19:41:50 +0000 Subject: [PATCH 3/14] python autopep8 --- diff --git a/readyaml.py b/readyaml.py index ce12db0..73a75e3 100644 --- a/readyaml.py +++ b/readyaml.py @@ -1,4 +1,5 @@ -# -*- coding: utf-8 -*- +#!/usr/bin/env python3 + import os import urllib.request import yaml @@ -7,7 +8,7 @@ import yaml # download site.yml urllib.request.urlretrieve( "https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml" - ) +) # Read site.yml with open("site.yml", 'r') as stream: @@ -22,7 +23,7 @@ for source in DATA_LOADED['content']['sources']: print( "$cmd --clone-target-repo --src-basedir {basedir} {url} $output_dir" .format(basedir=src_basedir, url=url) - ) + ) elif 'branches' in source: for branch in source['branches']: @@ -30,7 +31,7 @@ for source in DATA_LOADED['content']['sources']: print( "$cmd --clone-target-repo --src-branch {branch} {url} $output_dir" .format(branch=src_branch, url=url) - ) + ) else: print("$cmd --clone-target-repo {url} $output_dir".format(url=url)) From 6a6ecf4de1ba0f6db01a67600dc9d5f528cdc379 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 14 2019 19:43:33 +0000 Subject: [PATCH 4/14] remove pprint --- diff --git a/readyaml.py b/readyaml.py index 73a75e3..6a40633 100644 --- a/readyaml.py +++ b/readyaml.py @@ -3,7 +3,6 @@ import os import urllib.request import yaml -# from pprint import pprint # download site.yml urllib.request.urlretrieve( From 213b98b79390eaefac3c71ee8071959b89bfdc98 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 14 2019 20:30:53 +0000 Subject: [PATCH 5/14] add arguments handling --- diff --git a/readyaml.py b/readyaml.py old mode 100644 new mode 100755 index 6a40633..67ed243 --- a/readyaml.py +++ b/readyaml.py @@ -1,38 +1,67 @@ #!/usr/bin/env python3 +"""Calls `./po-to-src.sh` for all source repos""" +import argparse import os import urllib.request import yaml -# download site.yml -urllib.request.urlretrieve( - "https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml" -) - -# Read site.yml -with open("site.yml", 'r') as stream: - DATA_LOADED = yaml.load(stream) - -# Parse site.yml -for source in DATA_LOADED['content']['sources']: - url = source['url'] - - if 'start_path' in source: - src_basedir = source['start_path'] - print( - "$cmd --clone-target-repo --src-basedir {basedir} {url} $output_dir" - .format(basedir=src_basedir, url=url) - ) - - elif 'branches' in source: - for branch in source['branches']: - src_branch = branch + +def main(): + """Handle params""" + parser = argparse.ArgumentParser( + description="Calls `./po-to-src.sh` for all source repos") + parser.add_argument("output_dir", help="Output directory") + args = parser.parse_args() + + output_dir = args.output_dir + + os.makedirs(output_dir, exist_ok=True) + + output_dir = os.path.abspath(output_dir) + + parse_yml(output_dir) + + +def parse_yml(output_dir): + """List repositories to convert to pot from antora yaml file""" + + # download site.yml + urllib.request.urlretrieve( + "https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml" + ) + + # Read site.yml + with open("site.yml", 'r') as stream: + data_loaded = yaml.load(stream) + + # Parse site.yml + for source in data_loaded['content']['sources']: + url = source['url'] + + if 'start_path' in source: + src_basedir = source['start_path'] + print( + "$cmd --clone-target-repo --src-basedir {basedir} {url} {output_dir}" + .format(basedir=src_basedir, url=url, output_dir=output_dir) + ) + + elif 'branches' in source: + for branch in source['branches']: + src_branch = branch + print( + "$cmd --clone-target-repo --src-branch {branch} {url} {output_dir}" + .format(branch=src_branch, url=url, output_dir=output_dir) + ) + else: print( - "$cmd --clone-target-repo --src-branch {branch} {url} $output_dir" - .format(branch=src_branch, url=url) + "$cmd --clone-target-repo {url} {output_dir}" + .format(url=url, output_dir=output_dir) ) - else: - print("$cmd --clone-target-repo {url} $output_dir".format(url=url)) -# Remove site.yml -os.remove("site.yml") + # Remove site.yml + os.remove("site.yml") + + +if __name__ == '__main__': + main() From ddd19fd0f7679164aa174ce3670bd7f7514d4e63 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 20 2019 08:03:50 +0000 Subject: [PATCH 6/14] call podman command --- diff --git a/readyaml.py b/readyaml.py index 67ed243..bff5a65 100755 --- a/readyaml.py +++ b/readyaml.py @@ -4,6 +4,8 @@ import argparse import os import urllib.request +import subprocess +import shlex import yaml @@ -23,6 +25,17 @@ def main(): parse_yml(output_dir) +def clone_translated_sources(output_dir, doc): + """Call podman and tell him to use po-to-src.sh for the specified documentation""" + + command = "podman run --rm -it -v {o}:/output:z ".format(o=output_dir) + command += "-v {c}/src-to-pot.sh:/scripts/src-to-pot.sh:z ".format(c=os.getcwd()) + command += "asamalik/fedora-docs-translations /scripts/src-to-pot.sh {d}".format(d=doc) + print(command) + args = shlex.split(command) + subprocess.call(args) + + def parse_yml(output_dir): """List repositories to convert to pot from antora yaml file""" @@ -41,23 +54,18 @@ def parse_yml(output_dir): if 'start_path' in source: src_basedir = source['start_path'] - print( - "$cmd --clone-target-repo --src-basedir {basedir} {url} {output_dir}" - .format(basedir=src_basedir, url=url, output_dir=output_dir) - ) + doc = "--clone-target-repo --src-basedir \"{bd}\" {url} {o}".format( + bd=src_basedir, url=url, o=output_dir) elif 'branches' in source: for branch in source['branches']: src_branch = branch - print( - "$cmd --clone-target-repo --src-branch {branch} {url} {output_dir}" - .format(branch=src_branch, url=url, output_dir=output_dir) - ) + doc = "--clone-target-repo --src-branch \"{br}\" {url} {o}".format( + br=src_branch, url=url, o=output_dir) else: - print( - "$cmd --clone-target-repo {url} {output_dir}" - .format(url=url, output_dir=output_dir) - ) + doc = "--clone-target-repo {url} {o}".format(url=url, o=output_dir) + + clone_translated_sources(output_dir, doc) # Remove site.yml os.remove("site.yml") From a240fc70edcb3aa010155e1211b2c84ada7f7ce8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 20 2019 14:47:47 +0000 Subject: [PATCH 7/14] change the way to coll podman and src-to-po --- diff --git a/readyaml.py b/readyaml.py index bff5a65..cd6aa04 100755 --- a/readyaml.py +++ b/readyaml.py @@ -21,19 +21,15 @@ def main(): os.makedirs(output_dir, exist_ok=True) output_dir = os.path.abspath(output_dir) - parse_yml(output_dir) - -def clone_translated_sources(output_dir, doc): - """Call podman and tell him to use po-to-src.sh for the specified documentation""" - +def call_podman_and_src_to_po(output_dir, doc): command = "podman run --rm -it -v {o}:/output:z ".format(o=output_dir) command += "-v {c}/src-to-pot.sh:/scripts/src-to-pot.sh:z ".format(c=os.getcwd()) command += "asamalik/fedora-docs-translations /scripts/src-to-pot.sh {d}".format(d=doc) print(command) args = shlex.split(command) - subprocess.call(args) + subprocess.run(args, check=True) def parse_yml(output_dir): @@ -65,7 +61,7 @@ def parse_yml(output_dir): else: doc = "--clone-target-repo {url} {o}".format(url=url, o=output_dir) - clone_translated_sources(output_dir, doc) + call_podman_and_src_to_po(output_dir, doc) # Remove site.yml os.remove("site.yml") From 5919fc247d7d016fea930f30ed79798ef965d871 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 20 2019 15:09:23 +0000 Subject: [PATCH 8/14] fix output directory --- diff --git a/readyaml.py b/readyaml.py index cd6aa04..277fb52 100755 --- a/readyaml.py +++ b/readyaml.py @@ -50,16 +50,16 @@ def parse_yml(output_dir): if 'start_path' in source: src_basedir = source['start_path'] - doc = "--clone-target-repo --src-basedir \"{bd}\" {url} {o}".format( - bd=src_basedir, url=url, o=output_dir) + doc = "--clone-target-repo --src-basedir \"{bd}\" {url} /output".format( + bd=src_basedir, url=url) elif 'branches' in source: for branch in source['branches']: src_branch = branch - doc = "--clone-target-repo --src-branch \"{br}\" {url} {o}".format( - br=src_branch, url=url, o=output_dir) + doc = "--clone-target-repo --src-branch \"{br}\" {url} /output".format( + br=src_branch, url=url) else: - doc = "--clone-target-repo {url} {o}".format(url=url, o=output_dir) + doc = "--clone-target-repo {url} /output".format(url=url) call_podman_and_src_to_po(output_dir, doc) From e40735462ade6984f95fb4713b6caee291ca2ef3 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Mar 21 2019 04:45:06 +0000 Subject: [PATCH 9/14] shellcheck fixes --- diff --git a/src-to-pot.sh b/src-to-pot.sh index a6d5175..436173c 100755 --- a/src-to-pot.sh +++ b/src-to-pot.sh @@ -23,7 +23,6 @@ usage () { echo " --clone-target-repo Clones the PO/POT repo into the output directory" } - while true ; do case $1 in --src-branch ) @@ -79,14 +78,7 @@ else fi # TARGET_DIR need to exist -if [ -d "$output_dir" ]; then - pushd $output_dir > /dev/null - output_dir=$(pwd) - popd > /dev/null -else - echo "Error. The specified output directory doesn't exist" - exit 1 -fi +mkdir -p "$output_dir" if [ -z "$src_branch" ]; then src_branch="master" @@ -98,7 +90,7 @@ fi tmp_english_src=$(mktemp -d) -if ! git clone -b $src_branch $src_repo $tmp_english_src ; then +if ! git clone -b $src_branch "$src_repo" "$tmp_english_src" ; then echo "" echo "Error cloning the specified git repository." rm -rf "$tmp_english_src" @@ -123,7 +115,7 @@ fi -pushd "$tmp_english_src/$src_basedir" > /dev/null +pushd "$tmp_english_src/$src_basedir" > /dev/null || exit # Get component name from the antora.yml component=$(sed -n 's/^name: *\"*\([[:alnum:]_-]*\).*/\1/p' antora.yml) @@ -136,7 +128,7 @@ version=$(sed -n 's/^version: *\"*\([[:alnum:]_-]*\).*/\1/p' antora.yml) # 2) the user specified it using --module MODULE and it exists # In case there are multiple modules under ./modules/ # and the user hasn't specified one, throw an error. -if [ ! $(ls -1 ./modules | wc -l) = 1 ] && [ -z $module ]; then +if [ ! $(ls -1 ./modules | wc -l) = 1 ] && [ -z "$module" ]; then echo "" echo "Error. This repository contains multiple antora modules," echo "and the script doesn't know which one to choose." @@ -149,7 +141,7 @@ if [ ! $(ls -1 ./modules | wc -l) = 1 ] && [ -z $module ]; then exit 1 fi -if [ -z $module ]; then +if [ -z "$module" ]; then module=$(ls ./modules) fi @@ -165,15 +157,18 @@ if [ ! -d "modules/$module" ]; then exit 1 fi -popd > /dev/null +popd > /dev/null || exit -if [ $module = "ROOT" ]; then +if [ "$module" = "ROOT" ]; then target_repo_name="$component" else target_repo_name="$component-$module" fi -if [ "$clone_target_repo_name" ]; then + +echo -ne "Source: $src_repo basedir:$src_basedir branch:$src_branch is using this repository for pot/po files:https://pagure.io/fedora-l10n/$target_repo_name\n" >> "$output_dir/log.txt" + +if [ -n "$clone_target_repo_name" ]; then if [ -d "$output_dir/$target_repo_name" ]; then echo "" echo "Error. You chose to clone the target repo," @@ -205,10 +200,10 @@ module_dir="$output_dir/$target_repo_name/pot/$version" # Confert all .adoc files to .pot -pushd "$tmp_english_src/$src_basedir/modules/$module" > /dev/null +pushd "$tmp_english_src/$src_basedir/modules/$module" > /dev/null || exit for adoc_file in $(find . -name '*.adoc'); do - pot_file="$module_dir/$(dirname $adoc_file)/$(basename -s .adoc $adoc_file).pot" + pot_file=$module_dir/$(dirname "$adoc_file")/$(basename -s .adoc "$adoc_file").pot # generate new POT files @@ -231,10 +226,10 @@ for adoc_file in $(find . -name '*.adoc'); do for lang in $(ls "$output_dir/$target_repo_name/po"); do - po_file="$output_dir/$target_repo_name/po/$lang/$version/$(dirname $adoc_file)/$(basename -s .adoc $adoc_file).po" + po_file="$output_dir/$target_repo_name/po/$lang/$version/$(dirname "$adoc_file")/$(basename -s .adoc "$adoc_file").po" # po4a-updatepo would be angry otherwise - sed -i 's/Content-Type: text\/plain; charset=CHARSET/Content-Type: text\/plain; charset=UTF-8/g' $po_file + sed -i 's/Content-Type: text\/plain; charset=CHARSET/Content-Type: text\/plain; charset=UTF-8/g' "$po_file" if ! po4a-updatepo \ --format asciidoc \ @@ -251,13 +246,13 @@ for adoc_file in $(find . -name '*.adoc'); do fi done -popd > /dev/null +popd > /dev/null || exit # Convert the antora.yml to antora.yml.pot # if this is the main module -if [ $module = "ROOT" ]; then - pushd "$tmp_english_src/$src_basedir" > /dev/null +if [ "$module" = "ROOT" ]; then + pushd "$tmp_english_src/$src_basedir" > /dev/null || exit if ! po4a-gettextize \ --format asciidoc \ --option debug split_attributelist \ @@ -269,10 +264,8 @@ if [ $module = "ROOT" ]; then rm -rf "$tmp_english_src" exit 1 fi - popd > /dev/null + popd > /dev/null || exit fi -rm -rf $tmp_english_src - -echo -ne "Source: $src_repo basedir:$src_basedir branch:$src_branch is using this repository for pot/po files:https://pagure.io/fedora-l10n/$target_repo_name\n" >> "$output_dir/log.txt" \ No newline at end of file +rm -rf "$tmp_english_src" \ No newline at end of file From 0f6ca4d8163077b3bc3a028ac7e546e32c602bb3 Mon Sep 17 00:00:00 2001 From: Jibec Date: Mar 21 2019 07:12:27 +0000 Subject: [PATCH 10/14] rename readyaml.py -> all-src-to-pot.py --- diff --git a/all-src-to-pot.py b/all-src-to-pot.py new file mode 100755 index 0000000..277fb52 --- /dev/null +++ b/all-src-to-pot.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +"""Calls `./po-to-src.sh` for all source repos""" + +import argparse +import os +import urllib.request +import subprocess +import shlex +import yaml + + +def main(): + """Handle params""" + parser = argparse.ArgumentParser( + description="Calls `./po-to-src.sh` for all source repos") + parser.add_argument("output_dir", help="Output directory") + args = parser.parse_args() + + output_dir = args.output_dir + + os.makedirs(output_dir, exist_ok=True) + + output_dir = os.path.abspath(output_dir) + parse_yml(output_dir) + +def call_podman_and_src_to_po(output_dir, doc): + command = "podman run --rm -it -v {o}:/output:z ".format(o=output_dir) + command += "-v {c}/src-to-pot.sh:/scripts/src-to-pot.sh:z ".format(c=os.getcwd()) + command += "asamalik/fedora-docs-translations /scripts/src-to-pot.sh {d}".format(d=doc) + print(command) + args = shlex.split(command) + subprocess.run(args, check=True) + + +def parse_yml(output_dir): + """List repositories to convert to pot from antora yaml file""" + + # download site.yml + urllib.request.urlretrieve( + "https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml" + ) + + # Read site.yml + with open("site.yml", 'r') as stream: + data_loaded = yaml.load(stream) + + # Parse site.yml + for source in data_loaded['content']['sources']: + url = source['url'] + + if 'start_path' in source: + src_basedir = source['start_path'] + doc = "--clone-target-repo --src-basedir \"{bd}\" {url} /output".format( + bd=src_basedir, url=url) + + elif 'branches' in source: + for branch in source['branches']: + src_branch = branch + doc = "--clone-target-repo --src-branch \"{br}\" {url} /output".format( + br=src_branch, url=url) + else: + doc = "--clone-target-repo {url} /output".format(url=url) + + call_podman_and_src_to_po(output_dir, doc) + + # Remove site.yml + os.remove("site.yml") + + +if __name__ == '__main__': + main() diff --git a/readyaml.py b/readyaml.py deleted file mode 100755 index 277fb52..0000000 --- a/readyaml.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python3 -"""Calls `./po-to-src.sh` for all source repos""" - -import argparse -import os -import urllib.request -import subprocess -import shlex -import yaml - - -def main(): - """Handle params""" - parser = argparse.ArgumentParser( - description="Calls `./po-to-src.sh` for all source repos") - parser.add_argument("output_dir", help="Output directory") - args = parser.parse_args() - - output_dir = args.output_dir - - os.makedirs(output_dir, exist_ok=True) - - output_dir = os.path.abspath(output_dir) - parse_yml(output_dir) - -def call_podman_and_src_to_po(output_dir, doc): - command = "podman run --rm -it -v {o}:/output:z ".format(o=output_dir) - command += "-v {c}/src-to-pot.sh:/scripts/src-to-pot.sh:z ".format(c=os.getcwd()) - command += "asamalik/fedora-docs-translations /scripts/src-to-pot.sh {d}".format(d=doc) - print(command) - args = shlex.split(command) - subprocess.run(args, check=True) - - -def parse_yml(output_dir): - """List repositories to convert to pot from antora yaml file""" - - # download site.yml - urllib.request.urlretrieve( - "https://pagure.io/fedora-docs/docs-fp-o/raw/master/f/site.yml", "site.yml" - ) - - # Read site.yml - with open("site.yml", 'r') as stream: - data_loaded = yaml.load(stream) - - # Parse site.yml - for source in data_loaded['content']['sources']: - url = source['url'] - - if 'start_path' in source: - src_basedir = source['start_path'] - doc = "--clone-target-repo --src-basedir \"{bd}\" {url} /output".format( - bd=src_basedir, url=url) - - elif 'branches' in source: - for branch in source['branches']: - src_branch = branch - doc = "--clone-target-repo --src-branch \"{br}\" {url} /output".format( - br=src_branch, url=url) - else: - doc = "--clone-target-repo {url} /output".format(url=url) - - call_podman_and_src_to_po(output_dir, doc) - - # Remove site.yml - os.remove("site.yml") - - -if __name__ == '__main__': - main() From ad0ad3c932ff3660dc8585456d9ee9224df252b0 Mon Sep 17 00:00:00 2001 From: Jibec Date: Mar 22 2019 20:22:36 +0000 Subject: [PATCH 11/14] don't crash if folder exists --- diff --git a/src-to-pot.sh b/src-to-pot.sh index 436173c..bc052f1 100755 --- a/src-to-pot.sh +++ b/src-to-pot.sh @@ -168,33 +168,47 @@ fi echo -ne "Source: $src_repo basedir:$src_basedir branch:$src_branch is using this repository for pot/po files:https://pagure.io/fedora-l10n/$target_repo_name\n" >> "$output_dir/log.txt" -if [ -n "$clone_target_repo_name" ]; then - if [ -d "$output_dir/$target_repo_name" ]; then - echo "" - echo "Error. You chose to clone the target repo," - echo "but the directory '$target_repo_name' already exist" - echo "under '$output_dir'." - echo "" - echo "Either delete it, or run this command without" - echo "the --clone-target-repo option" +get_url="https://pagure.io/fedora-l10n/$target_repo_name.git" +push_url="ssh://git@pagure.io/fedora-l10n/$target_repo_name.git" + +if [ -d "$output_dir/$target_repo_name" ]; then + pushd "$output_dir/$target_repo_name" + echo "$output_dir/$target_repo_name" + push_url_current=$(git config --get remote.origin.pushurl) + get_url_current=$(git remote get-url origin) + popd + + if [ "$get_url" != "$get_url_current" ] ; then + echo "Git repository already exists" + echo "But the fetch remote url doesn't match $get_url" + echo "Current value is: $get_url_current" rm -rf "$tmp_english_src" exit 1 fi - # if I run this in a container that doesn't have push permissions, I need to be able to clone it - # while still configuring the right URL for push later - if ! git clone \ - --config "remote.origin.pushurl=ssh://git@pagure.io/fedora-l10n/$target_repo_name.git" \ - "https://pagure.io/fedora-l10n/$target_repo_name.git" "$output_dir/$target_repo_name" ; then - echo "" - echo "Error cloning the target repository." - echo "It might not exist. It should be here:" - echo "https://pagure.io/fedora-l10n/$target_repo_name" + if [ "$push_url" != "$push_url_current" ] ; then + echo "Git repository already exists" + echo "But the push remote url doesn't match $push_url" + echo "Current value is: $push_url_current" rm -rf "$tmp_english_src" exit 1 fi + + pushd "$output_dir/$target_repo_name" + git pull + popd + +# if I run this in a container that doesn't have push permissions, I need to be able to clone it +# while still configuring the right URL for push later +elif ! git clone \ + --config "remote.origin.pushurl=$push_url" "$get_url" "$output_dir/$target_repo_name" ; then + echo "" + echo "Error cloning the target repository." + echo "It might not exist. It should be here:" + echo "https://pagure.io/fedora-l10n/$target_repo_name" + rm -rf "$tmp_english_src" + exit 1 fi - module_dir="$output_dir/$target_repo_name/pot/$version" From c202701758a05f98241eedec25f8a8de7170a08e Mon Sep 17 00:00:00 2001 From: Jibec Date: Mar 22 2019 20:33:07 +0000 Subject: [PATCH 12/14] skip if po doesn't exist for this lang --- diff --git a/src-to-pot.sh b/src-to-pot.sh index bc052f1..2759ed8 100755 --- a/src-to-pot.sh +++ b/src-to-pot.sh @@ -242,6 +242,14 @@ for adoc_file in $(find . -name '*.adoc'); do po_file="$output_dir/$target_repo_name/po/$lang/$version/$(dirname "$adoc_file")/$(basename -s .adoc "$adoc_file").po" + # before the translation platform sends it, the language may not + # exists, most of the time because the branch exists in EN + # but not for the target language + if [ ! -e "$po_file" ] ; then + echo "missing po file: $po_file" + break + fi + # po4a-updatepo would be angry otherwise sed -i 's/Content-Type: text\/plain; charset=CHARSET/Content-Type: text\/plain; charset=UTF-8/g' "$po_file" From 824add543524c47c4808dea407794b6e3fe9886d Mon Sep 17 00:00:00 2001 From: Jibec Date: Mar 22 2019 20:34:28 +0000 Subject: [PATCH 13/14] make pushd/popd quiet --- diff --git a/src-to-pot.sh b/src-to-pot.sh index 2759ed8..7d97a6e 100755 --- a/src-to-pot.sh +++ b/src-to-pot.sh @@ -172,11 +172,11 @@ get_url="https://pagure.io/fedora-l10n/$target_repo_name.git" push_url="ssh://git@pagure.io/fedora-l10n/$target_repo_name.git" if [ -d "$output_dir/$target_repo_name" ]; then - pushd "$output_dir/$target_repo_name" + pushd "$output_dir/$target_repo_name" > /dev/null || exit echo "$output_dir/$target_repo_name" push_url_current=$(git config --get remote.origin.pushurl) get_url_current=$(git remote get-url origin) - popd + popd > /dev/null || exit if [ "$get_url" != "$get_url_current" ] ; then echo "Git repository already exists" @@ -194,9 +194,9 @@ if [ -d "$output_dir/$target_repo_name" ]; then exit 1 fi - pushd "$output_dir/$target_repo_name" + pushd "$output_dir/$target_repo_name" > /dev/null || exit git pull - popd + popd > /dev/null || exit # if I run this in a container that doesn't have push permissions, I need to be able to clone it # while still configuring the right URL for push later From 2a1b76c6767b5da1d06ccd496b3c291311acfdfe Mon Sep 17 00:00:00 2001 From: Jibec Date: Apr 07 2019 12:28:56 +0000 Subject: [PATCH 14/14] move checks to prepare temporary clonage removal --- diff --git a/src-to-pot.sh b/src-to-pot.sh index 7d97a6e..a890717 100755 --- a/src-to-pot.sh +++ b/src-to-pot.sh @@ -97,25 +97,31 @@ if ! git clone -b $src_branch "$src_repo" "$tmp_english_src" ; then exit 1 fi -# Make sure the basedir exists -if [ ! -d "$tmp_english_src/$src_basedir" ]; then - echo "" - echo "Error. The specified basedir doesn't exist in the git repository." - rm -rf "$tmp_english_src" - exit 1 -fi +check_dir() ( + local basedir=$1 -# Make sure it's an Antora source -if [ ! -f "$tmp_english_src/$src_basedir/antora.yml" ]; then - echo "" - echo "Error. There is no Antora source. (no antora.yml found)" - rm -rf "$tmp_english_src" - exit 1 -fi + # Make sure the basedir exists + if [ ! -d "$basedir" ]; then + echo "" + echo "Error. The specified basedir doesn't exist in the git repository." + rm -rf "$tmp_english_src" + exit 1 + fi + + # Make sure it's an Antora source + if [ ! -f "$basedir/antora.yml" ]; then + echo "" + echo "Error. There is no Antora source. (no antora.yml found)" + rm -rf "$tmp_english_src" + exit 1 + fi +) +basedir="$tmp_english_src/$src_basedir" +check_dir "$basedir" -pushd "$tmp_english_src/$src_basedir" > /dev/null || exit +pushd "$basedir" > /dev/null || exit # Get component name from the antora.yml component=$(sed -n 's/^name: *\"*\([[:alnum:]_-]*\).*/\1/p' antora.yml) @@ -128,6 +134,7 @@ version=$(sed -n 's/^version: *\"*\([[:alnum:]_-]*\).*/\1/p' antora.yml) # 2) the user specified it using --module MODULE and it exists # In case there are multiple modules under ./modules/ # and the user hasn't specified one, throw an error. +# TODO: use antora.yml file if existing, if not, site.yml if [ ! $(ls -1 ./modules | wc -l) = 1 ] && [ -z "$module" ]; then echo "" echo "Error. This repository contains multiple antora modules," @@ -214,7 +221,7 @@ module_dir="$output_dir/$target_repo_name/pot/$version" # Confert all .adoc files to .pot -pushd "$tmp_english_src/$src_basedir/modules/$module" > /dev/null || exit +pushd "$basedir/modules/$module" > /dev/null || exit for adoc_file in $(find . -name '*.adoc'); do pot_file=$module_dir/$(dirname "$adoc_file")/$(basename -s .adoc "$adoc_file").pot @@ -274,7 +281,7 @@ popd > /dev/null || exit # Convert the antora.yml to antora.yml.pot # if this is the main module if [ "$module" = "ROOT" ]; then - pushd "$tmp_english_src/$src_basedir" > /dev/null || exit + pushd "$basedir" > /dev/null || exit if ! po4a-gettextize \ --format asciidoc \ --option debug split_attributelist \