/
dar-new
executable file
·106 lines (87 loc) · 2 KB
/
dar-new
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
#!/bin/bash
shopt -s extglob
source "/usr/share/dar/dar-functions"
#daropts ":a:d:fs:t:v" $@
#PKGS="$OPTS"
PKGS=$@
function host {
HOST="$1"
HOST="${HOST/#http:\/\/}"
HOST="${HOST/#ftp:\/\/}"
echo "${HOST/%\/*}"
}
function file {
FILE="$1"
echo "${FILE/#+([!\/])\/\/+([!\/])}"
}
function httptest {
URL="$1"
HOST="$(host $URL | sed -e 's|.sf.|.sourceforge.|')"
FILE="$(host $URL)"
echo -e "HEAD $FILE HTTP/1.1\nHost: $HOST\n\n" | nc -w 10 $HOST 80 | grep -E " (200|302) "
return $?
}
function v1 {
local V="$1"
M="${V//*./}"
echo "${V//%+([0-9])/}$((M+1))"
}
function v2 {
local V="$1"
M="${V/%.+([0-9])/}"
M="${M/#*./}"
echo "${V//%+([0-9]).+([0-9])/}$((M+1))" 2>/dev/null
}
function v3 {
local V="$1"
M="${V/%.+([0-9])/}"
M="${M/#*./}"
echo "${V//%+([0-9]).+([0-9])/}$((M+1)).0" 2>/dev/null
}
function rewrite {
echo "$(echo "$1" | perl -p -e "
s|\%{name}|$NAME|g;
s|\%{version}|$VERSIONX|g;
s|\%{real_name}|$RNAME|g;
s|\%{real_version}|$RVERSIONX|g;
s|\%{real_release}|$RRELEASE|g;
")"
}
for app in $PKGS; do
SPECFILE="$PWD/$app"
app="$(basename $app .spec)"
if [ ! -r "$SPECFILE" -o ! -f "$SPECFILE" ]; then
SPECFILE="$PWD/$app.spec"
fi
if [ ! -r "$SPECFILE" -o ! -f "$SPECFILE" ]; then
SPECFILE="$SPECSDIR/$app/$app.spec"
fi
if [ ! -r "$SPECFILE" -o ! -f "$SPECFILE" ]; then
echo "ERROR: specfile \"$SPECFILE\" is not found."
continue
fi
NAME="$(rpmconf Name)"
VERSION="$(rpmconf Version)"
RNAME="$(rpmmacro real_name)"
RVERSION="$(rpmmacro real_version)"
RRELEASE="$(rpmmacro real_release)"
SOURCE="$(rpmconf Source)"
if [ -z "$SOURCE" ]; then
SOURCE="$(rpmconf Source0)"
fi
SOURCEX="$(rewrite $SOURCE)"
if echo "$SOURCEX" | grep -q '%{'; then
error "$NAME: Source $SOURCE incorrect"
continue
fi
if [ -z "$SOURCEX" ]; then
error "$NAME: Source is empty"
continue
fi
VERSIONX="$(v1 $VERSION)"
# echo "$NAME: $VERSION -> $(host $SOURCE)"
if httptest "$(rewrite $SOURCE)"; then
echo "$NAME: New version $VERSIONX found !!"
continue;
fi
done