diff options
| -rw-r--r-- | src/query.sh | 10 | ||||
| -rwxr-xr-x | src/sync.sh | 72 | ||||
| -rwxr-xr-x | src/xi.sh | 8 | ||||
| -rw-r--r-- | xipkg.conf | 6 | 
4 files changed, 49 insertions, 47 deletions
| diff --git a/src/query.sh b/src/query.sh index dc3846c..14d9adf 100644 --- a/src/query.sh +++ b/src/query.sh @@ -5,10 +5,18 @@ list () {      find ${PACKAGES_DIR} -type f | sed "s,${PACKAGES_DIR}/,,"   } -list_installed () { +installed () {      ls -1 ${INSTALLED_DIR}  } +list_installed () { +    list | while read -r line; do  +        [ -d ${INSTALLED_DIR}/$line ] \ +            && echo $line "[installed]" \ +            || echo $line +    done +} +  search () {      if [ $# = 0 ]; then          list diff --git a/src/sync.sh b/src/sync.sh index 6462a8a..263d555 100755 --- a/src/sync.sh +++ b/src/sync.sh @@ -4,40 +4,36 @@  # save each listed package in a relevant directory, based on checksum  #  parse_line() { -    [ "$#" = "6" ] && { -        local repo=$1 -        local repo_url=$2 -        local package=$3 -        local checksum=$4 -        local size=$5 -        local files=$6 +    [ "$#" = "5" ] && { +        local url=$1 +        local package=$2 +        local checksum=$3 +        local size=$4 +        local files=$5          local package_name=$(basename $package ".xipkg") -        local package_dir="$PACKAGES_DIR/$repo/$package_name.versions" +        local package_dir="$PACKAGES_DIR/$package_name.versions"          local checksum_file=$package_dir/$checksum          [ -d $package_dir ] || mkdir -p $package_dir -        printf "$repo_url/$package $checksum $size $files\n" >> $checksum_file +        printf "$url/$package $checksum $size $files\n" >> $checksum_file      }  }  list_source () { -    local repo=$1 -    local src=$2 - +    local src=$1      local url=$(echo $src | cut -d":" -f2-)      local name=$(echo $src | cut -d":" -f1) -    local repo_url="${url}${repo}" -    local full_url="${repo_url}/packages.list" -    local tmp_file="${SYNC_CACHE}/$name.$repo" +    local full_url="${url}/packages.list" +    local tmp_file="${SYNC_CACHE}/$name" -    ${VERBOSE} && printf "${LIGHT_BLACK}Indexing $repo from $full_url\n" +    ${VERBOSE} && printf "${LIGHT_BLACK}Indexing packages from $full_url\n"      local status=$(download_file $tmp_file $full_url) -    if [ "$status" = "200" ] ||  [ "$status" = "000" ] && [ -f $tmp_file ]; then +    if [ "$status" = "200" ] || [ "$status" = "000" ] && [ -f $tmp_file ]; then          while IFS= read -r line; do -            parse_line $repo $repo_url $line +            parse_line $url $line          done < "$tmp_file"      else          return 1 @@ -55,11 +51,11 @@ dep_graph () {      local status=$(download_file $tmp_file $full_url)      if [ "$status" = "200" ] ||  [ "$status" = "000" ]; then          while IFS= read -r line; do -            local package=$(echo $line | cut -d: -f1) -            local new=$(echo $line | cut -d: -f2-) - -            [ -z "${package}" ] && +            [ "${#line}" != "0" ] && { +                local package=$(echo $line | cut -d: -f1) +                local new=$(echo $line | cut -d: -f2-)                  echo $new >> $DEP_DIR/$package +            }          done < "$tmp_file"      fi  } @@ -81,7 +77,7 @@ popularity_contest () {          return 1      fi -    local list=$(ls -1 -d $PACKAGES_DIR/*/*) +    local list=$(ls -1 -d $PACKAGES_DIR/*)      local total=$(echo $list | wc -l)      local completed=0 @@ -94,32 +90,29 @@ 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          dep_graph $src          completed=$((completed+1)) -        ${QUIET} || hbar -l $l -T "${LARGE_CIRCLE} indexing dependencies..." $completed $total      done -    ${QUIET} || hbar -l $l ${HBAR_COMPLETE} -T "${CHECKMARK} indexed dependencies" $completed $total +    ${QUIET} || hbar ${HBAR_COMPLETE} -T "${CHECKMARK} indexed dependencies" $completed $total  }  index_repo () { -    local repo=$1 l=$2      set -- ${SOURCES}      local total=$#      local completed=0 -      for src in ${SOURCES}; do -        list_source $repo $src  +        ${QUIET} || hbar -T "${LARGE_CIRCLE} syncing sources..." $completed $total +        list_source $src           completed=$((completed+1)) -        ${QUIET} || hbar -l $l -T "${LARGE_CIRCLE} syncing $repo..." $completed $total      done -    ${QUIET} || hbar -l $l ${HBAR_COMPLETE} -T "${CHECKMARK} synced $repo" $completed $total +    ${QUIET} || hbar ${HBAR_COMPLETE} -T "${CHECKMARK} synced sources" $completed $total  }  sync () { @@ -131,19 +124,14 @@ sync () {      mkdir $DEP_DIR      ${VERBOSE} && printf "${LIGHT_BLACK}Syncing\n" -    # create padding spaces for each hbar  -    ${QUIET} || for repo in ${REPOS}; do  -        hbar -    done      # download package lists and dep graphs at the same time -    index_deps 0 & -    local i=1 -    for repo in ${REPOS}; do  -        mkdir -p ${PACKAGES_DIR}/$repo -        index_repo $repo $i & -        i=$((i+1)) -    done +    mkdir -p ${PACKAGES_DIR} + +    # index packages and dependencies +    index_repo +    ${QUIET} || hbar +    index_deps      # wait for all jobs to complete      wait @@ -53,8 +53,10 @@ ${BLUE}Available Commands:          ${LIGHT_CYAN}verify that a package's files are intact      ${LIGHT_GREEN}list          ${LIGHT_CYAN}list available packages -    ${LIGHT_GREEN}list-installed +    ${LIGHT_GREEN}installed          ${LIGHT_CYAN}lists installed packages +    ${LIGHT_GREEN}list-installed +        ${LIGHT_CYAN}list packages showing the installed ones      ${LIGHT_GREEN}file ${LIGHT_BLUE}[path]          ${LIGHT_CYAN}shows which package a file belongs to      ${LIGHT_GREEN}info ${LIGHT_BLUE}[package] @@ -209,6 +211,9 @@ else          "list-installed")              list_installed              ;; +        "installed") +            installed +            ;;          "file")              shift              file_info $@ @@ -242,6 +247,7 @@ else              usage              ;;          *) +            checkroot              $DO_SYNC && sync              install $@              ;; @@ -7,9 +7,9 @@ include /etc/xipkg.d/default.conf  # Keep this list short, with a few local mirrors  # ensure that you have a bit of redunancy in case of back up  sources { -#    local           file:///var/lib/xib/repo/ -    ftp             https://xilinux.ftp.sh/repo/ -    davidovski      https://xi.davidovski.xyz/repo/ +    local           file:///var/lib/xib/repo/ +#    ftp             https://xilinux.ftp.sh/repo/ +#    davidovski      https://xi.davidovski.xyz/repo/  }  # The sources to download the keys from | 
