refactor: rename debrepo -> debrepo.sh
This commit is contained in:
152
debrepo.sh
Executable file
152
debrepo.sh
Executable file
@@ -0,0 +1,152 @@
|
||||
#!/bin/sh
|
||||
VERSION="0.1.0"
|
||||
#DIR="$(cd "$(dirname "$0")" && pwd)" # location of debrepo source path
|
||||
SCRIPT_PATH=$(readlink -f "$0")
|
||||
DIR=$(dirname "$SCRIPT_PATH")
|
||||
|
||||
# set vars
|
||||
index=1
|
||||
for arg in $@; do
|
||||
# set REPODIR variable
|
||||
if [ $arg = "--repodir" ]; then
|
||||
ARGID="$((index+1))"
|
||||
eval "REPODIR=\$$ARGID"
|
||||
fi
|
||||
|
||||
if [ $arg = "--gpg" ]; then
|
||||
ARGID="$((index+1))"
|
||||
eval "GPG=\$$ARGID"
|
||||
fi
|
||||
|
||||
index=$((index+1))
|
||||
done
|
||||
|
||||
if [ -z $REPODIR ]; then
|
||||
echo "error: --repodir is not set"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "init" ] || [ "$1" = "-i" ] || [ "$1" = "--init" ]; then
|
||||
# create basic folder structure
|
||||
$DIR/scripts/repoinit.sh $REPODIR && echo "debrepo: repository folders have been successfully created"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "add" ] || [ "$1" = "-a" ] || [ "$1" = "--add" ]; then
|
||||
if [ "$2" = "--letter-based-structure" ] || [ "$2" = "-l" ]; then
|
||||
# generate package file name and copy deb file
|
||||
PKG=$3
|
||||
PKG_ARCH=$(dpkg -I $PKG | grep "Architecture" | sed 's/ Architecture: //')
|
||||
PKG_VERSION=$(dpkg -I $PKG | grep "Version" | sed 's/ Version: //')
|
||||
PKG_NAME=$(echo "$PKG" | sed 's/.*\///' | awk -F "_" '{print $1}')
|
||||
PKG_FULLNAME="${PKG_NAME}_${PKG_VERSION}_${PKG_ARCH}.deb"
|
||||
FIRST_LETTER=$(echo "$PKG" | sed 's/.*\///' | cut -c 1 | tr '[:upper:]' '[:lower:]')
|
||||
PKG_PATH="$REPODIR/apt-repo/pool/main/$FIRST_LETTER/$PKG_NAME/$PKG_FULLNAME"
|
||||
|
||||
mkdir -p "$REPODIR/apt-repo/pool/main/$FIRST_LETTER/$PKG_NAME/"
|
||||
cp $PKG $PKG_PATH
|
||||
else
|
||||
# generate package file name and copy deb file
|
||||
PKG=$2
|
||||
PKG_ARCH=$(dpkg -I $PKG | grep "Architecture" | sed 's/ Architecture: //')
|
||||
PKG_VERSION=$(dpkg -I $PKG | grep "Version" | sed 's/ Version: //')
|
||||
PKG_NAME=$(echo "$PKG" | sed 's/.*\///' | awk -F "_" '{print $1}')
|
||||
PKG_FULLNAME="${PKG_NAME}_${PKG_VERSION}_${PKG_ARCH}.deb"
|
||||
|
||||
cp $PKG "$REPODIR/apt-repo/pool/main/$PKG_FULNAME"
|
||||
fi
|
||||
|
||||
# generate package and release file
|
||||
$DIR/scripts/genPkgRel.sh $REPODIR && echo "debrepo: package $PKG_FULLNAME was successfully added"
|
||||
$DIR/scripts/gpgSign.sh $REPODIR && echo "debrepo: repo was succesfully signed"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "del" ] || [ "$1" = "-d" ] || [ "$1" = "--del" ]; then
|
||||
first_letter=$(echo "$2" | sed 's/.*\///' | cut -c 1 | tr '[:upper:]' '[:lower:]')
|
||||
pkg_name=$(echo "$2" | sed 's/.*\///' | awk -F "_" '{print $1}')
|
||||
|
||||
if [ -f "$REPODIR/apt-repo/pool/main/$first_letter/$pkg_name/$2" ]; then
|
||||
# remove package
|
||||
rm -i "$REPODIR/apt-repo/pool/main/$first_letter/$pkg_name/$2" && echo "debrepo: package $2 was successfully removed"
|
||||
elif [ -f "$REPODIR/apt-repo/pool/main/$2" ]; then
|
||||
# remove package
|
||||
rm -i "$REPODIR/apt-repo/pool/main/$2" && echo "debrepo: package $2 was successfully removed"
|
||||
else
|
||||
echo "error: package $2 was not found";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# generate package and release file
|
||||
$DIR/scripts/genPkgRel.sh $REPODIR && echo "debrepo: repository was successfully updated"
|
||||
$DIR/scripts/gpgSign.sh $REPODIR && echo "debrepo: repo was succesfully signed"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "list" ] || [ "$1" = "-l" ] || [ "$1" = "--list" ]; then
|
||||
echo "debrepo: list of packages"
|
||||
|
||||
# if command tree is installed
|
||||
if [ -e "$(which tree)" ]; then
|
||||
tree "$REPODIR/apt-repo/pool/main/"
|
||||
else
|
||||
ls -R "$REPODIR/apt-repo/pool/main/"
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "sign" ] || [ "$1" = "-s" ] || [ "$1" = "--sign" ]; then
|
||||
$DIR/scripts/gpgSign.sh $2 # $2 is optional value if GPG is set in config file
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "update" ] || [ "$1" = "-u" ] || [ "$1" = "--update" ]; then
|
||||
$DIR/scripts/genPkgRel.sh && echo "debrepo: repo was successfully updated" $DIR/scripts/gpgSign.sh $3 && echo "debrepo: repo was succesfully signed" # $3 is optional value if GPG is set in config file
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "serve" ] || [ "$1" = "-S" ] || [ "$1" = "--serve" ]; then
|
||||
echo "THIS SHOULD BE ONLY USED FOR TESTING!"
|
||||
python3 -m http.server
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" = "-v" ] || [ "$1" = "--version" ]; then
|
||||
echo "debrepo $VERSION"
|
||||
exit
|
||||
fi
|
||||
|
||||
#if [ "$1" = "help" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||
if [ 1 ]; then
|
||||
HELPMESSAGE="
|
||||
debrepo $VERSION
|
||||
A Debian repository management tool.
|
||||
|
||||
USAGE:
|
||||
debrepo [OPTIONS] [DEB]
|
||||
|
||||
OPTIONS:
|
||||
init, -i, --init
|
||||
create repository folder structure
|
||||
add, -a, --add
|
||||
add deb package to repository
|
||||
del, -d, --del
|
||||
delete deb package from repository
|
||||
list, -l, --list
|
||||
list deb packages
|
||||
serve, -s, --serve
|
||||
serve repository using python built in http module
|
||||
help, -h, --help
|
||||
print help message
|
||||
-v, --version
|
||||
print version of debrepo package
|
||||
|
||||
ARGS:
|
||||
<DEB>...
|
||||
*.deb package to add or delete from repository.
|
||||
|
||||
"
|
||||
|
||||
printf "%s\n" "$HELPMESSAGE"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user