diff --git a/debrepo b/debrepo index 1a45ea8..1ec8b5e 100755 --- a/debrepo +++ b/debrepo @@ -5,7 +5,6 @@ DIR="$(cd "$(dirname "$0")" && pwd)" # location of debrepo source path # set vars index=1 for arg in $@; do - # set REPODIR variable if [ $arg = "--repodir" ]; then ARGID="$((index+1))" eval "REPODIR=\$$ARGID" @@ -16,6 +15,11 @@ for arg in $@; do eval "GPG=\$$ARGID" fi + if [ $arg = "--distro" ]; then + ARGID="$((index+1))" + eval "DISTRO=\$$ARGID" + fi + index=$((index+1)) done @@ -31,6 +35,13 @@ if [ "$1" = "init" ] || [ "$1" = "-i" ] || [ "$1" = "--init" ]; then fi if [ "$1" = "add" ] || [ "$1" = "-a" ] || [ "$1" = "--add" ]; then + # if distro specific package + if [ "$DISTRO" ]; then + echo "distro: $DISTRO" + + exit + fi + exit # copy deb file to repo folder structure if [ "$2" = "--letter-based-structure" ] || [ "$2" = "-l" ];then first_letter=$(echo "$3" | sed 's/.*\///' | cut -c 1 | tr '[:upper:]' '[:lower:]') @@ -42,8 +53,8 @@ if [ "$1" = "add" ] || [ "$1" = "-a" ] || [ "$1" = "--add" ]; then fi # generate package and release file - $DIR/scripts/genPkgRel.sh $REPODIR $2 && echo "debrepo: package $2 was successfully added" - $DIR/scripts/gpgSign.sh $REPODIR $GPG && echo "debrepo: repo was succesfully signed" + $DIR/scripts/genPkgRel.sh $REPODIR $2 $DISTRO && echo "debrepo: package $2 was successfully added" + $DIR/scripts/gpgSign.sh $REPODIR $GPG $DISTRO && echo "debrepo: repo was succesfully signed" exit fi diff --git a/scripts/genPkgRel.sh b/scripts/genPkgRel.sh index 190d6ca..01842f2 100755 --- a/scripts/genPkgRel.sh +++ b/scripts/genPkgRel.sh @@ -1,17 +1,22 @@ #!/bin/sh -DIR="$(cd "$(dirname "$0")" && pwd)" LS="$(which ls)" # this prevents bugs when aliasing ls to tools like exa +DIR="$(cd "$(dirname "$0")" && pwd)" REPODIR="$1" -ARCHS="$($LS -l $REPODIR/apt-repo/dists/stable/main/ | awk '{print $9}' | awk NF | awk -F - '{print $2}')" +DISTRO="$3" +if [ !$DISTRO ]; then + DISTRO="stable" +fi + +ARCHS="$($LS -l $REPODIR/apt-repo/dists/$DISTRO/main/ | awk '{print $9}' | awk NF | awk -F - '{print $2}')" # generate Packages file for ARCH in $ARCHS; do - dpkg-scanpackages --multiversion --arch $ARCH "$REPODIR/apt-repo/pool/" > "$REPODIR/apt-repo/dists/stable/main/binary-$ARCH/Packages" + dpkg-scanpackages --multiversion --arch $ARCH "$REPODIR/apt-repo/pool/" > "$REPODIR/apt-repo/dists/$DISTRO/main/binary-$ARCH/Packages" # compress Packages file - cat "$REPODIR/apt-repo/dists/stable/main/binary-$ARCH/Packages" | gzip -9 > "$REPODIR/apt-repo/dists/stable/main/binary-$ARCH/Packages.gz" + cat "$REPODIR/apt-repo/dists/$DISTRO/main/binary-$ARCH/Packages" | gzip -9 > "$REPODIR/apt-repo/dists/$DISTRO/main/binary-$ARCH/Packages.gz" done # generate Release file -cd "$REPODIR/apt-repo/dists/stable/" -$DIR/generate-release.sh > "Release" +cd "$REPODIR/apt-repo/dists/$DISTRO/" +$DIR/generate-release.sh $DISTRO > "Release" diff --git a/scripts/generate-release.sh b/scripts/generate-release.sh index ca55f17..07726aa 100755 --- a/scripts/generate-release.sh +++ b/scripts/generate-release.sh @@ -2,6 +2,15 @@ set -e . ../../config # this file is in /apt-repo/config +if [ ! $DISTRO ]; then + DISTRO="stable" +fi + +if [ ! -f "../../config" ]; then + echo "error - config file does not exists" + exit 1; +fi + do_hash() { HASH_NAME=$1 HASH_CMD=$2 @@ -15,17 +24,11 @@ do_hash() { done } -if [ ! -f "../../config" ]; then - echo "error - config file does not exists" - exit 1; -fi - - cat << EOF Origin: $ORIGIN Label: $LABEL Suite: $SUITE -Codename: $CODENAME +Codename: $DISTRO Version: $VERSION Architectures: $ARCHITECTURES Components: $COMPONENTS diff --git a/scripts/gpgSign.sh b/scripts/gpgSign.sh index c7e03af..9daa5da 100755 --- a/scripts/gpgSign.sh +++ b/scripts/gpgSign.sh @@ -1,21 +1,11 @@ #!/bin/sh REPODIR="$1" +DISTRO="$3" . $REPODIR/apt-repo/config -#KEY="$2" -#echo $KEY -#if [ $KEY = "--repodir" ]; then -# KEY="" -#fi -# -#if [ $KEY ]; then -# continue -#elif [ $DEFAULT_GPG ]; then -# KEY="$DEFAULT_GPG" -#else -# echo "error: no gpg key provided" -# exit 1 -#fi +if [ ! $DISTRO ]; then + DISTRO="stable" +fi if [ ! $DEFAULT_GPG ]; then echo "error: no gpg key provided in config file" @@ -23,10 +13,8 @@ if [ ! $DEFAULT_GPG ]; then fi KEY=$DEFAULT_GPG - - echo "debrepo: signing using $KEY" -cat $REPODIR/apt-repo/dists/stable/Release | gpg --default-key $KEY -abs > $REPODIR/apt-repo/dists/stable/Release.gpg -cat $REPODIR/apt-repo/dists/stable/Release | gpg --default-key $KEY -abs --clearsign > $REPODIR/apt-repo/dists/stable/InRelease +cat $REPODIR/apt-repo/dists/$DISTRO/Release | gpg --default-key $KEY -abs > $REPODIR/apt-repo/dists/$DISTRO/Release.gpg +cat $REPODIR/apt-repo/dists/$DISTRO/Release | gpg --default-key $KEY -abs --clearsign > $REPODIR/apt-repo/dists/$DISTRO/InRelease diff --git a/scripts/repoinit.sh b/scripts/repoinit.sh index e839126..5b28274 100755 --- a/scripts/repoinit.sh +++ b/scripts/repoinit.sh @@ -9,3 +9,21 @@ fi mkdir -p $1/apt-repo/dists/stable/main/binary-amd64/ mkdir -p $1/apt-repo/pool/main/ +# make config file +echo \ +"#!/bin/sh + +# Repository preferences +DEFAULT_GPG=\"\" + +# Repository info +ORIGIN=\"example.com\" +LABEL=\"example repository\" +SUITE=\"stable\" +CODENAME=\"stable\" +VERSION=\"1.0\" +ARCHITECTURES=\"amd64\" +COMPONENTS=\"main\" +DESCRIPTION=\"example repository\" +" > $1/apt-repo/config +