aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--config.mk22
-rwxr-xr-xtools/mkdist.sh30
3 files changed, 31 insertions, 27 deletions
diff --git a/Makefile b/Makefile
index c63eb5a..eceb18d 100644
--- a/Makefile
+++ b/Makefile
@@ -24,11 +24,7 @@ tests/etc/cpt-hook:
ln -s ../hook-file $@
dist: docs/cpt.info
- mkdir "cpt-${VERSION}"
- cp -r ${DISTFILES} "cpt-${VERSION}"
- tar cf "cpt-${VERSION}.tar" "cpt-${VERSION}"
- xz -z "cpt-${VERSION}.tar"
- rm -rf -- "cpt-${VERSION}"
+ ./tools/mkdist.sh "${VERSION}"
install: all
test "${DOCS}" != yes || ${MAKE} -C docs install
diff --git a/config.mk b/config.mk
index d29414c..1bc27fe 100644
--- a/config.mk
+++ b/config.mk
@@ -16,25 +16,3 @@ MAKEINFO = makeinfo
# Comment or change if you don't want to build/install the documentation
DOCS = yes
-
-# Files to be added into the distribution tarball
-DISTFILES = \
- .build.yml \
- .dir-locals.el \
- .editorconfig \
- .fossil-settings \
- .gitignore \
- .shellspec \
- CHANGELOG.md \
- LICENSE \
- Makefile \
- README \
- config.mk \
- contrib \
- cpt-base \
- docs \
- man \
- spec \
- src \
- tests \
- tools
diff --git a/tools/mkdist.sh b/tools/mkdist.sh
new file mode 100755
index 0000000..c21e964
--- /dev/null
+++ b/tools/mkdist.sh
@@ -0,0 +1,30 @@
+#!/bin/sh -e
+
+out() { printf '%s\n' "$@" >&2 ;}
+die() { printf '\033[1;31mERR: \033[m%s\n' "$@" >&2; exit 1;}
+
+case "$1" in ''|-*)
+ die "Run this script by calling 'make dist' from the" \
+ "root repository directory"
+esac
+
+fossil stat >/dev/null 2>&1 || {
+ printf '\033[1;31mERR: \033[m%s\n' \
+ "Distribution tarballs can only be generated using the Fossil repository." \
+ "Exiting..." >&2
+ exit 1
+}
+
+basedir=cpt-$1
+mkdir -p "$basedir"
+
+fossil ls | while read -r file; do
+ case "$file" in
+ */*) mkdir -p "$basedir/${file%/*}"
+ esac
+ cp "$file" "$basedir/$file"
+done
+
+tar cf "$basedir.tar" "$basedir"
+xz -z "$basedir.tar"
+rm -rf -- "$basedir"