diff options
author | Eli Schwartz <eschwartz93@gmail.com> | 2017-01-03 21:10:18 +0100 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2017-01-04 04:59:15 +0100 |
commit | eaa82b4d0775252856a4e54a6f2a9ea191cf0b8f (patch) | |
tree | 9d974f15a153a11c619ba44e42957aeb70ea7858 /scripts/libmakepkg/util/source.sh.in | |
parent | 42e7020281d3ae260e1e9693495f527b7f476625 (diff) | |
download | pacman-eaa82b4d0775252856a4e54a6f2a9ea191cf0b8f.tar.gz pacman-eaa82b4d0775252856a4e54a6f2a9ea191cf0b8f.tar.xz |
makepkg: Verify git signatures
A git repository is marked as signed if it contains the query "signed"
as defined by https://tools.ietf.org/html/rfc3986
Adds two utility functions in util/source.sh.in to extract fragments and
queries, and modifies source/git.sh.in to use them.
Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts/libmakepkg/util/source.sh.in')
-rw-r--r-- | scripts/libmakepkg/util/source.sh.in | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/libmakepkg/util/source.sh.in b/scripts/libmakepkg/util/source.sh.in index 1e781118..238d1f58 100644 --- a/scripts/libmakepkg/util/source.sh.in +++ b/scripts/libmakepkg/util/source.sh.in @@ -65,6 +65,7 @@ get_filename() { case $proto in bzr*|git*|hg*|svn*) filename=${netfile%%#*} + filename=${filename%%\?*} filename=${filename%/} filename=${filename##*/} if [[ $proto = bzr* ]]; then @@ -111,6 +112,32 @@ get_filepath() { printf "%s\n" "$file" } +# extract the VCS revision/branch specifier from a source entry +get_uri_fragment() { + local netfile=$1 + + local fragment=${netfile#*#} + if [[ $fragment = "$netfile" ]]; then + unset fragment + fi + fragment=${fragment%\?*} + + printf "%s\n" "$fragment" +} + +# extract the VCS "signed" status from a source entry +get_uri_query() { + local netfile=$1 + + local query=${netfile#*\?} + if [[ $query = "$netfile" ]]; then + unset query + fi + query=${query%#*} + + printf "%s\n" "$query" +} + get_downloadclient() { local proto=$1 |