-
Notifications
You must be signed in to change notification settings - Fork 1
/
fdroid-repo-update.nix
61 lines (50 loc) · 1.66 KB
/
fdroid-repo-update.nix
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
{ config, pkgs, jdk ? pkgs.openjdk8}:
let
fdroid = "${pkgs.fdroidserver}/bin/fdroid";
sed = "${pkgs.gnused}/bin/sed";
tr = "${pkgs.coreutils}/bin/tr";
update-config = with config.services.fdroid-repo; (pkgs.writeScriptBin "update-config" ''
#!${pkgs.runtimeShell} -e
sed_multiline_i() {
## for inline replacements with mulitline-patterns
SED_EXPR=$1
FILE=$2
cp $FILE $FILE~
cat $FILE~ | ${tr} '\n' '\t' | ${sed} "$SED_EXPR" | ${tr} '\t' '\n' > $FILE
}
expr() {
VAR=$1
VALUE=$2
QUOTE=$3
ANY='[^"]*'
EXPR="$(echo 's@'$VAR$ANY'='$ANY$QUOTE$ANY$QUOTE'@'$VAR' = "'$VALUE'"@')"
}
replace_python_str_value() {
VAR=$1
VALUE=$2
FILE=$3
expr $VAR "$VALUE" '"""' && sed_multiline_i "$EXPR" $FILE
expr $VAR "$VALUE" '"' && ${sed} -i "$EXPR" $FILE
}
replace_python_str_value repo_url "${repo_url}" config.py
replace_python_str_value repo_name "${repo_name}" config.py
replace_python_str_value repo_description "${repo_description}" config.py
'');
in
(pkgs.writeScriptBin "fdroid-repo-update" ''
#!${pkgs.runtimeShell} -e
PATH="$PATH:${pkgs.stdenv.lib.makeBinPath [jdk]}"
## This command is an idempotent version of https://f-droid.org/docs/Setup_an_F-Droid_App_Repo/#overview
[ ! -d fdroid ] && mkdir fdroid
cd fdroid
[ ! -f config.py ] && ${fdroid} init
echo 'Feel free to edit ./fdroid/config.py yourself.'
echo 'Be aware that fdroid-repo-update overwrites the variables defined in configuration.nix'
${update-config}/bin/update-config
[ ! -d repo ] && mkdir repo
if ! ls repo/*.apk ; then
echo 'Please put APK files into ./fdroid/repo/'
exit
fi
${fdroid} update -c
'')