summaryrefslogtreecommitdiffstats
path: root/po/update-potfiles
blob: 1cbfdc4705294134c425d95d84c0bb40e560647c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/sh
#
# Copyright (C) 2009 Karel Zak <kzak@redhat.com>
#

# find all git-tracked and existing *.c and *.h files
# exclude some (sub)directories
# sort the list

if [ ! -f "po/Makevars" ]; then
	echo "error: update-potfiles must run in the top-level directory" >&2
	exit 1
fi

# find all git-tracked files
source_files=$(git ls-files . 2>/dev/null)
if [ $? -ne 0 ] || [ -z "$source_files" ]; then
	# we still go through the rest of this script to provide at least an empty
	# list or remove non-existing (deleted) files
	source_files=$(cat po/POTFILES.in 2>/dev/null)
fi
if [ $? -ne 0 ] || [ -z "$source_files" ]; then
	source_files=$(find . -type f -printf "%P\\n" 2>/dev/null)
fi

# apply include/exclude patterns
source_files=$(
	echo "$source_files" \
	| sed \
		-e '/\(\.h\|\.c\)$/!d' \
		-e '/^tests\//d' \
		-e '/\/samples\//d' \
		-e '/^Documentation\//d' \
)

# throw away non-existing files (dirty git repo)
echo "$source_files" \
	| xargs -r find 2>/dev/null \
	| sort \
	> po/POTFILES.in

# if this script is broken then we have probably an empty list
[ -s po/POTFILES.in ] || echo "$0: warning: po/POTFILES.in is empty" >&2