diff options
-rwxr-xr-x | src/get.sh | 17 | ||||
-rw-r--r-- | src/query.sh | 8 | ||||
-rwxr-xr-x | src/sync.sh | 15 | ||||
-rw-r--r-- | src/validate.sh | 2 | ||||
-rwxr-xr-x | src/xi.sh | 7 |
5 files changed, 32 insertions, 17 deletions
@@ -8,7 +8,7 @@ list_deps() { [ -f $tree_file ] && for dep in $(cat "$tree_file"); do echo $dep - done | sort -u + done } # list all dependencies and sub dependencies of a package @@ -30,18 +30,21 @@ resolve_deps () { local package=$1 #only add if not already added - if ! echo ${deps} | grep -q "\b$package\b"; then + case " $deps " in + *" $package "*);; + *) deps="$deps $package" i=$((i+1)) - fi + ;; + esac for dep in $(list_deps $package); do # if not already checked - if echo $@ | grep -qv "\b$dep\b"; then - set -- $@ $dep - fi + case " $@ $deps " in + *" $dep "*) ;; + *) set -- $@ $dep;; + esac done - shift ${QUIET} || hbar -T "${CHECKMARK} resolving dependencies" $i $((i + $#)) diff --git a/src/query.sh b/src/query.sh index 5f863a6..f47ea60 100644 --- a/src/query.sh +++ b/src/query.sh @@ -35,16 +35,22 @@ files () { file_info () { for file in $@; do [ ! -f ${SYSROOT}$file ] && file=$(realpath $file 2>/dev/null) + local found=false for pkg in $(installed); do for list in ${INSTALLED_DIR}/$pkg/files; do [ -f $list ] && { - grep -q "^/usr${file}$" $list || grep -q "^${file}$" $list && { ${QUIET} && echo $pkg || printf "${LIGHT_BLUE}%s${BLUE} belongs to ${LIGHT_BLUE}%s${RESET}\n" $file $pkg + found=true } } done done + $found || { + printf "${RED}$file does not belong to any package!\n" > /dev/stderr + return 1 + } + done } diff --git a/src/sync.sh b/src/sync.sh index 263d555..2df7b64 100755 --- a/src/sync.sh +++ b/src/sync.sh @@ -90,29 +90,31 @@ popularity_contest () { } index_deps () { + local l=$1 set -- ${SOURCES} local total=$# local completed=0 for src in ${SOURCES}; do - ${QUIET} || hbar -T "${LARGE_CIRCLE} indexing dependencies..." $completed $total + ${QUIET} || hbar -l $l -T "${LARGE_CIRCLE} indexing dependencies..." $completed $total dep_graph $src completed=$((completed+1)) done - ${QUIET} || hbar ${HBAR_COMPLETE} -T "${CHECKMARK} indexed dependencies" $completed $total + ${QUIET} || hbar -l $l ${HBAR_COMPLETE} -T "${CHECKMARK} indexed dependencies" $completed $total } index_repo () { + local l=$1 set -- ${SOURCES} local total=$# local completed=0 for src in ${SOURCES}; do - ${QUIET} || hbar -T "${LARGE_CIRCLE} syncing sources..." $completed $total + ${QUIET} || hbar -l $l -T "${LARGE_CIRCLE} syncing sources..." $completed $total list_source $src completed=$((completed+1)) done - ${QUIET} || hbar ${HBAR_COMPLETE} -T "${CHECKMARK} synced sources" $completed $total + ${QUIET} || hbar -l $1 ${HBAR_COMPLETE} -T "${CHECKMARK} synced sources" $completed $total } sync () { @@ -129,9 +131,10 @@ sync () { mkdir -p ${PACKAGES_DIR} # index packages and dependencies - index_repo ${QUIET} || hbar - index_deps + ${QUIET} || hbar + index_repo 1 & + index_deps 0 & # wait for all jobs to complete wait diff --git a/src/validate.sh b/src/validate.sh index 6b64616..46f6629 100644 --- a/src/validate.sh +++ b/src/validate.sh @@ -70,7 +70,7 @@ validate_files () { ${VERBOSE} && printf "${GREEN}%s is present\n" $file else ret=$((ret+1)) - ${QUIET} || printf "${RED}%s is missing\n" $file + ${QUIET} && printf "%s\n" $file || printf "${RED}%s is missing\n" $file fi done ${QUIET} || printf "${RESET}" @@ -148,7 +148,7 @@ else shift checkroot - [ "$#" = "0" ] && set -- $(list_installed) + [ "$#" = "0" ] && set -- $(installed) toinstall=${CACHE_DIR}/toinstall @@ -233,7 +233,10 @@ else shift [ -z "$*" ] && set -- $(ls ${INSTALLED_DIR}) while [ ! -z "$*" ]; do - validate_files $1 || printf "${LIGHT_RED}Failed to verify $1\n" + validate_files $1 || { + ${QUIET} && printf "%s\n" $1 || printf "${LIGHT_RED}Failed to verify $1\n" + + } shift done ;; |