diff --git a/Dockerfile b/Dockerfile index 0b111ed..a04aeab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,6 +27,11 @@ RUN chmod 755 /usr/local/sbin/reprepro-import RUN mkdir -p /var/lib/reprepro/conf ADD configs/reprepro-distributions /var/lib/reprepro/conf/distributions +# reprepro config generator +ADD scripts/create-distros.sh /usr/local/sbin/create-distros +RUN chmod 755 /usr/local/sbin/create-distros +ADD configs/reprepro-distributions.temp /etc/reprepro-distributions.temp + # Configure nginx RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN rm -f /etc/nginx/sites-enabled/default diff --git a/configs/reprepro-distributions.temp b/configs/reprepro-distributions.temp new file mode 100644 index 0000000..dc31a5a --- /dev/null +++ b/configs/reprepro-distributions.temp @@ -0,0 +1,8 @@ +Origin: {{EASYREPO_ORIGIN}} +Label: {{EASYREPO_LABEL}} +Suite: {{EASYREPO_SUITE}} +Codename: {{EASYREPO_CODENAME}} +Version: 3.1 +Architectures: {{EASYREPO_ARCHITECTURES}} +Components: main non-free contrib +Description: {{EASYREPO_DESCRIPTION}} diff --git a/scripts/create-distros.sh b/scripts/create-distros.sh new file mode 100644 index 0000000..ce233c4 --- /dev/null +++ b/scripts/create-distros.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +REPREPRO_DIST="${REPREPRO_OVERRIDE:-/var/lib/reprepro/conf/distributions}" + +# path to template file +REPREPRO_DIST_TEMP="/etc/reprepro-distributions.temp" + +# Default results to configs/reprepro-distributions +EASYREPO_SUITES="${EASYREPO_SUITES:-unstable,sid/stable,buster/testing,bullseye}" +EASYREPO_ORIGIN="${EASYREPO_ORIGIN:-Test Origin}" +EASYREPO_LABEL="${EASYREPO_LABEL:-Easy Debian Repository}" +EASYREPO_ARCHITECTURES="${EASYREPO_ARCHITECTURES:-i386 amd64 powerpc source}" +EASYREPO_DESCRIPTION="${EASYREPO_LABEL:-Easy Debian Repository}" + +# Empty the file +echo -n > $REPREPRO_DIST + +# Slash delimited +for i in $(echo ${EASYREPO_SUITES} | sed "s/\// /g") +do + g=($(echo $i | sed "s/\,/ /g")) + sed -e "s/{{EASYREPO_ORIGIN}}/${EASYREPO_ORIGIN}/" \ + -e "s/{{EASYREPO_LABEL}}/${EASYREPO_LABEL}/" \ + -e "s/{{EASYREPO_SUITE}}/${g[0]}/" \ + -e "s/{{EASYREPO_CODENAME}}/${g[1]}/" \ + -e "s/{{EASYREPO_ARCHITECTURES}}/${EASYREPO_ARCHITECTURES}/" \ + -e "s/{{EASYREPO_DESCRIPTION}}/${EASYREPO_DESCRIPTION}/" $REPREPRO_DIST_TEMP >> $REPREPRO_DIST + echo "" >> $REPREPRO_DIST +done + +# Remove last line +sed -i '$ d' $REPREPRO_DIST diff --git a/scripts/reprepro-import.sh b/scripts/reprepro-import.sh index d40998c..57c2d94 100644 --- a/scripts/reprepro-import.sh +++ b/scripts/reprepro-import.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash BASEDIR=/var/lib/reprepro INCOMING=/docker/incoming @@ -11,10 +11,17 @@ cd $INCOMING cd .. #set -x -reprepro -V --basedir $BASEDIR --outdir $OUTDIR createsymlinks stable -reprepro -V --basedir $BASEDIR --outdir $OUTDIR createsymlinks jessie -reprepro -V --basedir $BASEDIR --outdir $OUTDIR createsymlinks unstable -reprepro -V --basedir $BASEDIR --outdir $OUTDIR createsymlinks sid + +# Check for EASYREPO_SUITES to create symlinks +EASYREPO_SUITES="${EASYREPO_SUITES:-unstable,sid/stable,buster/testing,bullseye}" + +for k in $(echo ${EASYREPO_SUITES} | sed "s/\// /g") +do + g=($(echo $k | sed "s/\,/ /g")) + reprepro -V --basedir $BASEDIR --outdir $OUTDIR createsymlinks ${g[0]} +done + + # # See if we found any new packages # diff --git a/scripts/start.sh b/scripts/start.sh index 1e6534c..7db6906 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -30,6 +30,9 @@ crontab <> /var/log/reprepro.log EOF +# run distro config generator +/usr/local/sbin/create-distros + # run import once, to create the right directory structure /usr/local/sbin/reprepro-import