summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavidovski <david@davidovski.xyz>2022-02-20 02:13:54 +0000
committerdavidovski <david@davidovski.xyz>2022-02-20 02:13:54 +0000
commite5bc87ffc368799685b9c9bf0e01db35ee974540 (patch)
tree322791eae090f5b6f3f821f6f09b83c5aa199561
parent65940c0cc719311fbac5e11c81cce34563ea3f21 (diff)
added search functionality
-rwxr-xr-xsrc/get.sh6
-rw-r--r--src/install.sh2
-rwxr-xr-xsrc/profile.sh2
-rw-r--r--src/query.sh5
-rwxr-xr-xsrc/sync.sh20
-rw-r--r--src/util.sh5
-rwxr-xr-xsrc/xi.sh6
-rw-r--r--xipkg.conf2
8 files changed, 34 insertions, 14 deletions
diff --git a/src/get.sh b/src/get.sh
index edda26e..a6821a1 100755
--- a/src/get.sh
+++ b/src/get.sh
@@ -81,16 +81,18 @@ download_packages () {
if validate_checksum $output $checksum; then
${VERBOSE} && printf "${LIGHT_BLACK}skipping download for %s already exists with checksum %s${RESET}\n" $package $checksum
else
+ ${VERBOSE} && printf "${LIGHT_BLACK}downloading $package from $url\n" $package $checksum
touch $output
- curl ${CURL_OPTS} -o "$output_info" "$url.info" &
- curl ${CURL_OPTS} -o "$output" "$url" &
+ (curl ${CURL_OPTS} -o "$output_info" "$url.info" || printf "${RED}Failed to download info for %s\n" $package) &
+ (curl ${CURL_OPTS} -o "$output" "$url" || printf "${RED}Failed to download %s\n" $package) &
fi
outputs="$outputs $output"
done
wait_for_download $total_download ${outputs}
+ echo
local i=0
set -- $outputs
diff --git a/src/install.sh b/src/install.sh
index 63120be..432af27 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -1,7 +1,7 @@
#!/bin/sh
extract () {
- tar -h --no-overwrite-dir -vvxf $1 -C ${SYSROOT} | grep ^-
+ tar -h --no-overwrite-dir -vvxf $1 -C ${SYSROOT} | grep ^- | tr -s " " | cut -d" " -f6 | cut -c2-
}
install_package () {
diff --git a/src/profile.sh b/src/profile.sh
index 915f1c9..f05271b 100755
--- a/src/profile.sh
+++ b/src/profile.sh
@@ -7,7 +7,7 @@
export CONF_FILE="/etc/xipkg.conf"
-export CURL_OPTS="-SsL"
+export CURL_OPTS="-sL"
export DEP_DIR=$(parseconf -v dir.deps)
export REPOS="$(parseconf -v repos)"
diff --git a/src/query.sh b/src/query.sh
new file mode 100644
index 0000000..7e66b7c
--- /dev/null
+++ b/src/query.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+search () {
+ find ${PACKAGES_DIR} -type f | sed "s,${PACKAGES_DIR}/,," | grep$(echo $@ | sed "s/ /\\|/g")
+}
diff --git a/src/sync.sh b/src/sync.sh
index c0dd36c..3d1c7d1 100755
--- a/src/sync.sh
+++ b/src/sync.sh
@@ -30,12 +30,15 @@ list_source () {
local full_url="${repo_url}/packages.list"
local tmp_file="${SYNC_CACHE}/$name.$repo"
+ ${VERBOSE} && printf "${LIGHT_BLACK}Indexing $repo from $full_url\n"
local status=$(download_file $tmp_file $full_url)
- if [ "$status" = "200" ]; then
+ if [ "$status" = "200" ] || [ "$status" = "000" ]; then
while IFS= read -r line; do
parse_line $repo $repo_url $line
done < "$tmp_file"
+ else
+ return 1
fi
}
@@ -47,7 +50,8 @@ dep_graph () {
local tmp_file="${SYNC_CACHE}/$name.deps.graph"
[ -f $tmp_file ] && rm $tmp_file; touch $tmp_file
- if [ "$(download_file $tmp_file $full_url)" = "200" ]; then
+ 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-)
@@ -68,6 +72,11 @@ contest () {
}
popularity_contest () {
+ if [ "$(find $PACKAGES_DIR -type f | wc -l)" = "0" ]; then
+ printf "${RED}No packages found!\n";
+ return 1
+ fi
+
local list=$(ls -1 -d $PACKAGES_DIR/*/*)
local total=$(echo $list | wc -l)
@@ -75,9 +84,9 @@ popularity_contest () {
for package_dir in $list; do
contest $package_dir &
completed=$((completed+1))
- hbar -T "${LARGE_CIRCLE} contesting packages..." $completed $total
+ ${QUIET} || hbar -T "${LARGE_CIRCLE} contesting packages..." $completed $total
done
- hbar -t ${HBAR_COMPLETE} -T "${CHECKMARK} contested packages" $completed $completed
+ ${QUIET} || hbar -t ${HBAR_COMPLETE} -T "${CHECKMARK} contested packages" $completed $completed
}
index_deps () {
@@ -100,6 +109,7 @@ index_repo () {
local total=$#
local completed=0
+
for src in ${SOURCES}; do
list_source $repo $src
completed=$((completed+1))
@@ -108,7 +118,6 @@ index_repo () {
${QUIET} || hbar -l $l ${HBAR_COMPLETE} -T "${CHECKMARK} synced $repo" $completed $total
}
-
sync () {
# prepare the file structure for the sync
mkdir -p ${SYNC_CACHE}
@@ -117,6 +126,7 @@ sync () {
rm -r $DEP_DIR
mkdir $DEP_DIR
+ ${VERBOSE} && printf "${LIGHT_BLACK}Syncing\n"
# create padding spaces for each hbar
${QUIET} || for repo in ${REPOS}; do
hbar
diff --git a/src/util.sh b/src/util.sh
index 82d26ca..11db5e3 100644
--- a/src/util.sh
+++ b/src/util.sh
@@ -35,7 +35,7 @@ wait_for_download () {
local downloaded=0
while [ "$downloaded" -lt "$total_download" ]; do
-
+ downloaded=0
for output in $@; do
size=$(stat -c %s $output)
downloaded=$((downloaded+size))
@@ -56,8 +56,7 @@ wait_for_extract () {
shift
while [ "$extracted" -lt "$total_filecount" ]; do
- local extracted=0
-
+ extracted=0
for output in $@; do
if [ -f $output ]; then
size=$(cat $output | wc -l)
diff --git a/src/xi.sh b/src/xi.sh
index ea4f399..0311a56 100755
--- a/src/xi.sh
+++ b/src/xi.sh
@@ -44,6 +44,7 @@ done
. ${LIBDIR}/util.sh
. ${LIBDIR}/validate.sh
+. ${LIBDIR}/query.sh
. ${LIBDIR}/sync.sh
. ${LIBDIR}/install.sh
. ${LIBDIR}/get.sh
@@ -59,9 +60,12 @@ else
;;
"install" | "update")
shift
- $DO_SYNC && sync
install $@
;;
+ "search")
+ shift
+ search $@
+ ;;
*)
$DO_SYNC && sync
fetch $@
diff --git a/xipkg.conf b/xipkg.conf
index ee120fe..728e3e5 100644
--- a/xipkg.conf
+++ b/xipkg.conf
@@ -7,7 +7,7 @@ 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 {
- localhost http://localhost:8089/repo/
+ local file:///var/lib/xib/export/repo/
davidovski https://xi.davidovski.xyz/repo/
ftp https://xilinux.ftp.sh/repo/
}