~ubuntu-langpack/langpack-o-matic/main

« back to all changes in this revision

Viewing changes to merge-tarballs

  • Committer: Martin Pitt
  • Date: 2015-09-23 14:11:32 UTC
  • mfrom: (543.1.4 lom-multi_merge)
  • Revision ID: martin.pitt@canonical.com-20150923141132-9chdfbhdgbzwuwle
merge-tarballs: accept more than 2 tarballs

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
# this is part of langpack-o-matic, by Martin Pitt <martin.pitt@canonical.com>
4
4
#
5
 
# (C) 2005 Canonical Ltd.
 
5
# (C) 2005-2015 Canonical Ltd.
6
6
#
7
 
# Merge two translation tarballs.
 
7
# Merge multiple translation tarballs.
8
8
 
9
 
[ "$1" -a "$2" -a "$3" ] || {
10
 
    echo "Usage: $0 <input tarball 1> <input tarball 2> <output tarball>"  >&2
 
9
[ $# -lt 3 ] && {
 
10
    echo "Usage: $0 <input tarball 1> <input tarball 2> ... <input tarball n> <output tarball>" >&2
11
11
    exit 1
12
12
}
13
13
 
14
 
T1=$(mktemp -d)
15
 
T2=$(mktemp -d)
16
 
 
17
 
trap "rm -rf $T1 $T2" 0 1 2 3 13 15
18
 
 
19
 
tar -C $T1 -xz < "$1"
20
 
tar -C $T2 -xz < "$2"
21
 
 
22
 
TOP1="$T1/$(ls "$T1")"
23
 
TOP2="$T2/$(ls "$T2")"
24
 
 
25
 
if echo "$3" | grep -q '^/'; then
 
14
TD=$(mktemp -d)
 
15
# initial trap for script interruption
 
16
trap "rm -rf $TD" 0 1 2 3 13 15
 
17
 
 
18
# extract the first tarball - all others will be merged sequentially into that one
 
19
tar -C $TD -xz < "$1"
 
20
shift 1
 
21
TOPD="$TD/$(ls "$TD")"
 
22
cp "$TOPD/mapping.txt" "$TOPD/mapping.txt.merged"
 
23
MAIN=`pwd`
 
24
 
 
25
TS=$(mktemp -d)
 
26
trap "rm -rf $TD $TS" 0 1 2 3 13 15
 
27
 
 
28
while [ "$#" != "1" ]; do
 
29
    tar -C $TS -xz < "$1"
 
30
    TOPS="$TS/$(ls "$TS")"
 
31
 
 
32
    # copy PO and POT files
 
33
    cd "$TOPS"
 
34
    find \( -name "*.po" -o -name "*.pot" \) -exec install -D -m 644 '{}' "$TOPD/{}" \;
 
35
 
 
36
    # timestamp
 
37
    cp "$TOPS/timestamp.txt" "$TOPD"
 
38
 
 
39
    # append domain maps
 
40
    cat "$TOPS/mapping.txt" >> "$TOPD/mapping.txt"
 
41
 
 
42
    shift 1
 
43
    cd $MAIN
 
44
    rm -rf $TS/*
 
45
done
 
46
 
 
47
# merge the domain maps
 
48
sort -u "$TOPD/mapping.txt.merged" > "$TOPD/mapping.txt"
 
49
 
 
50
rmdir $TS
 
51
 
 
52
if echo "$1" | grep -q '^/'; then
26
53
    # absolute path
27
 
    OUT="$3"
 
54
    OUT="$1"
28
55
else
29
56
    # relative path
30
 
    OUT="$(pwd)/$3"
 
57
    OUT="$(pwd)/$1"
31
58
fi
32
59
 
33
 
# copy PO and POT files
34
 
cd "$TOP2"
35
 
find \( -name "*.po" -o -name "*.pot" \) -exec install -D -m 644 '{}' "$TOP1/{}" \;
36
 
 
37
 
# timestamp
38
 
cp "$TOP2/timestamp.txt" "$TOP1"
39
 
 
40
 
# merge domain maps
41
 
cat "$TOP1/mapping.txt" "$TOP2/mapping.txt" | sort -u > "$TOP1/mapping.txt.merged"
42
 
mv "$TOP1/mapping.txt.merged" "$TOP1/mapping.txt"
43
 
 
44
 
# create new tarball
45
 
cd "$T1"
 
60
cd "$TD"
46
61
tar c . | gzip -9 > "$OUT"
 
62