Skip to content

Commit a5a3896

Browse files
committed
Add a release automation script
1 parent d69fbd7 commit a5a3896

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

scripts/release.sh

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/bin/sh
2+
3+
FILE=$1
4+
VERSION=$2
5+
REPO_DIR=$3
6+
7+
function usage () {
8+
echo "Usage: $0 <soupault executable> <version> <repo dir>"
9+
exit 1
10+
}
11+
12+
if [ "$FILE" == "" ] || [ "$VERSION" == "" ] || [ "$REPO_DIR" == "" ]; then
13+
usage
14+
fi
15+
16+
if [ ! -f $FILE ]; then
17+
echo "File $FILE does not exist"
18+
exit 1
19+
fi
20+
21+
if [ ! -f $FILE ]; then
22+
echo "Soupault repository directory $REPO_DIR does not exist"
23+
exit 1
24+
fi
25+
26+
# Determine the executable target OS and architecture
27+
FILE_TYPE=$(file $FILE)
28+
29+
if $(echo $FILE_TYPE | grep "ELF 64-bit LSB executable" 2>&1 >/dev/null); then
30+
RELEASE_OS=linux
31+
RELEASE_ARCH=x86_64
32+
elif $(echo $FILE_TYPE | grep "PE32+ executable" 2>&1 >/dev/null); then
33+
RELEASE_OS=win64
34+
RELEASE_ARCH=""
35+
elif $(echo $FILE_TYPE | grep "Mach-O 64-bit x86_64 executable" 2>&1 >/dev/null); then
36+
RELEASE_OS="macos"
37+
RELEASE_ARCH="x86_64"
38+
else
39+
echo "Unsupported executable architecture!"
40+
exit 1
41+
fi
42+
43+
# Make a release string, like soupault-4.0.1-linux-x86_64
44+
RELEASE=soupault-$VERSION-$RELEASE_OS
45+
if [ -n "$RELEASE_ARCH" ]; then
46+
RELEASE=$RELEASE-$RELEASE_ARCH
47+
fi
48+
49+
# Make a release archive
50+
echo "Packaging release $RELEASE"
51+
52+
mkdir $RELEASE
53+
54+
if [ "$RELEASE_OS" == "win64" ]; then
55+
RELEASE_ARCHIVE=$RELEASE.zip
56+
57+
cp $FILE $RELEASE/soupault.exe
58+
59+
dos2unix -n $REPO_DIR/README.md $RELEASE/README.TXT
60+
dos2unix -n $REPO_DIR/LICENSE $RELEASE/LICENSE.TXT
61+
62+
zip -r $RELEASE_ARCHIVE $RELEASE
63+
else
64+
RELEASE_ARCHIVE=$RELEASE.tar.gz
65+
66+
cp $FILE $RELEASE/soupault
67+
chmod +x $RELEASE/soupault
68+
69+
cp $REPO_DIR/README.md $RELEASE/
70+
cp $REPO_DIR/LICENSE $RELEASE/
71+
72+
tar cvfz $RELEASE_ARCHIVE $RELEASE
73+
fi
74+
75+
# Checksum and sign the archive
76+
sha256sum $RELEASE_ARCHIVE >> sha256sums
77+
minisign -Sm $RELEASE_ARCHIVE
78+

0 commit comments

Comments
 (0)