From d1c08f718468e10cb785a622443fc008abb63cee Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 26 May 2013 21:29:19 -0400 Subject: blacklist.sh: make -euE or non -euE safe, add comments, make executable. Also, change blacklist-lookup()'s internals. --- src/lib/blacklist.sh | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) mode change 100644 => 100755 src/lib/blacklist.sh diff --git a/src/lib/blacklist.sh b/src/lib/blacklist.sh old mode 100644 new mode 100755 index e02bbfa..664b5f3 --- a/src/lib/blacklist.sh +++ b/src/lib/blacklist.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -euE # Copyright (c) 2013 by Luke Shumaker # # This program is free software; you can redistribute it and/or modify @@ -17,20 +17,29 @@ # make sure XDG_CACHE_HOME is set . /usr/share/libretools/conf.sh +# Usage: blacklist-normalize <$file +# Normalizes the syntax of the blacklist on stdin. blacklist-normalize() { sed -e 's/^[^:]*$/&::/' -e 's/^[^:]*:[^:]*$/&:/' } +# Usage: blacklist-cat +# Prints the blacklist +# Uses the chache, but downloads it if it doesn't exist. Also normalizes the +# blacklist for easier parsing. blacklist-cat() { local file="$XDG_CACHE_HOME/libretools/blacklist.txt" if ! [[ -e $file ]]; then - blacklist-update + # exit on failure, whether set -e or not + blacklist-update || return $? fi blacklist-normalize < "$file" } +# Usage: blacklist-update +# Updates (or creates) the cached copy of the blacklist blacklist-update() ( - set -euE + set -euE # allow it to not be set globally . libremessages load_files libretools check_vars BLACKLIST @@ -57,19 +66,35 @@ blacklist-update() ( fi ) +# Usage: blacklist-cat | blacklist-lookup $pkgname +# Filters to obtain the line for $pkgname from the blacklist on stdin. +# Exits successfully whether a line is found or not. blacklist-lookup() { local pkg=$1 - blacklist-cat | sed 's/^/^/' | grep -F "^$pkg:" | sed 's/^^//' + # we accept that $pkg contains no regex-nes + blacklist-cat | grep "^$pkg:" || true } +# Usage: blacklist-{cat|lookup} | blacklist-get-pkg +# Outputs only the package name field of the blacklist line(s) on stdin. blacklist-get-pkg() { cut -d: -f1 } +# Usage: blacklist-{cat|lookup} | blacklist-get-rep +# Outputs only the replacement package field of the blacklist line(s) on stdin. blacklist-get-rep() { cut -d: -f2 } +# Usage: blacklist-{cat|lookup} | blacklist-get-reason +# Outputs only the reason field of the blacklist line(s) on stdin. blacklist-get-reason() { cut -d: -f3- } + +if [[ "${0##*/}" == libreblacklist ]]; then + _blacklist_cmd=$1 + shift + "blacklist-$_blacklist_cmd" "$@" +fi -- cgit v1.2.2