blob: d8ef6ee1e19b158ca087b5c57a85bbc26138fcdf (
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
#!/bin/bash
# Copyright (c) 2012-2013 Luke Shumaker <lukeshu@sbcglobal.net>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
status() {
[[ -z $(git status -s .) ]]
}
download() {
. $(librelib conf)
load_files libretools
check_vars libretools WORKDIR ABSLIBRERECV || return 1
# Get the Parabola-added git repo
libregit "$ABSLIBRERECV" master "$WORKDIR/abslibre" || return 1
# This bit configures a 'pushUrl' to use ssh, leaves plain https for
# 'url' (used for fetch).
if [[ -n ${ABSLIBRESEND:-} ]]; then
pushd "$WORKDIR/abslibre" >/dev/null
local pushUrl="$(git config --get remote.origin.pushUrl)"
if [[ $? != 0 ]]; then
git config remote.origin.pushUrl "$ABSLIBRESEND";
elif [[ $pushUrl != "$ABSLIBRESEND" ]]; then
warning "A %s is configured for %s, but it doesn't match %s" pushUrl "$WORKDIR/abslibre" "$ABSLIBRESEND"
fi
popd >/dev/null
fi
# Get the everything-included tree
abs
}
release() {
local repo=$1
local arch=$2
local lookupfile=
. libremessages
. $(librelib conf)
load_files libretools
check_vars libretools WORKDIR || return 1
read mode type sha1 file <<<"$(git ls-tree -d --full-tree HEAD "$(pwd)")"
lock 9 "$lookupfile.lock" "Waiting for lock on %s" "$lookupfile"
{
sed "/^$repo $arch $pkgbase /d" < "$lookupfile"
echo "$repo $arch $pkgbase $sha1 $path"
} > "$lookupfile.$$"
mv "$lookupfile.$$" "$lookupfile"
lock_close 9
}
unrelease() {
local pkgbase=$1
local repo=$2
local arch=$3
lock 9 "$lookupfile.lock" "Waiting for lock on %s" "$lookupfile"
sed -i "/^$repo $arch $pkgbase /d" "$lookupfile"
lock_close 9
}
move() {
local repo_from=$1
local repo_to=$2
local pkgbase=$3
lock 9 "$lookupfile.lock" "Waiting for lock on %s" "$lookupfile"
sed -ri "s/^${repo_from} (\S+) $pkgbase /${repo_to} \1 $pkgbase/" "$lookupfile"
# TODO
lock_close 9
return 1
}
releasepath() {
local pkgbase=$1
local repo=$2
local arch=$3
local r=0
. $(librelib conf)
load_files libretools
check_vars libretools WORKDIR || r=$?
load_files abs
check_vars abs ABSROOT || r=$?
local abstree
local dir
for abstree in "$WORKDIR/abslibre" "$ABSROOT"; do
dir="$abstree/$repo/$pkgbase"
if [[ -f "$dir/PKGBUILD" ]]; then
printf '%s\n' "$dir"
return 0
fi
done
return 1
}
case "$1" in
status|download|release|unrelease|move|releasepath) "$@";;
*) exit 127;;
esac
|