Skip to content

Commit 239dbf7

Browse files
committed
More orthodoxous deployment model. Updating automation scripts
1 parent 0e85af9 commit 239dbf7

File tree

10 files changed

+240
-42
lines changed

10 files changed

+240
-42
lines changed

.gitignore

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.vs
22
bin
33
obj
4-
GameData/**/*.LICENSE
5-
GameData/**/*.NOTICE
6-
GameData/**/*.README.md
4+
GameData/**/LICENSE*
5+
GameData/**/NOTICE*
6+
GameData/**/README.md
77
GameData/**/*.version
88
GameData/**/*.dll
9-
GameData/**/*.CHANGE_LOG.md
9+
GameData/**/CHANGE_LOG.md
1010
Source/**/Properties/Version.cs
1111
packages
1212
Archive

CONFIG.inc

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,38 @@
11
source ../CONFIG.inc
22

33
PACKAGE=ModuleManager
4-
TARGETDIR=""
5-
TARGETBINDIR=""
4+
TARGETDIR="$PACKAGE"
5+
TARGETBINDIR="$TARGETDIR"
66
PROJECTSDIR="Source/$PACKAGE/"
7+
VERSIONFILE="$PACKAGE.version"
78

8-
VERSION=$( cat $PACKAGE.version | tr '\n' ' ' | sed -n -E 's/^.*?"VERSION\":\{.*"MAJOR":([0-9]+?),.*?"MINOR":([0-9]+?),.*?"PATCH":([0-9]+?),.*?"BUILD":([0-9]+?).*?\}.*$/\1.\2.\3.\4/p' )
9+
DLLS="$PACKAGE"
10+
# PluginData DLLs
11+
PD_DLLS=""
12+
# Rule oriented deployoment for PluginData
13+
#declare -A PD_SUB_RULES=( ["KSPe.UI.12"]="./12x/KSPe.UI" ["KSPe.UI.14"]="./14x/KSPe.UI" ["KSPe.UI.18"]="./18x/KSPe.UI" )
14+
declare -A PD_SUB_RULES=( )
15+
PD_SUB_DLLS=`{ for K in "${!PD_SUB_RULES[@]}"; do echo $(basename ${PD_SUB_RULES[$K]}); done } | sort -u | tr '\n' ' '`
16+
PD_SUB_DIRS=`{ for K in "${!PD_SUB_RULES[@]}"; do echo $(dirname ${PD_SUB_RULES[$K]}); done } | sort -u | tr '\n' ' '`
17+
18+
# GameData deployed DLLs
19+
GD_DLLS="KSPe"
20+
GD_PRIORITY="000"
21+
22+
# Dev LIB deployed DLLs
23+
LIB_DLLS="${DLLS}"
24+
25+
# External Libs from the LIB directory
26+
EXT_DLLS=""
27+
28+
29+
PROJECT_BRANCH=`git branch | grep \* | cut -d ' ' -f2`
30+
if [ "$PROJECT_BRANCH" == "master" ] ; then
31+
# Release mode
32+
PROJECT_STATE=""
33+
else
34+
# Note: Add a leading dash when this value is present!
35+
PROJECT_STATE=""
36+
fi
37+
38+
VERSION=$( cat $VERSIONFILE | tr '\n' ' ' | sed -n -E 's/^.*?"VERSION\":\{.*"MAJOR":([0-9]+?),.*?"MINOR":([0-9]+?),.*?"PATCH":([0-9]+?),.*?"BUILD":([0-9]+?).*?\}.*$/\1.\2.\3.\4/p' )

check.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/usr/bin/env bash
2+
3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
6+
source ./CONFIG.inc
7+
8+
echo "LIB = ${LIB}"
9+
echo "PACKAGE = $PACKAGE"
10+
echo "TARGETDIR = $TARGETDIR"
11+
echo "TARGETBINDIR = $TARGETBINDIR"
12+
echo "PROJECTSDIR = $PROJECTSDIR"
13+
echo "DLLS = $DLLS"
14+
echo "PD_DLLS = $PD_DLLS"
15+
echo "PD_SUB_DLLS = $PD_SUB_DLLS"
16+
echo "PD_SUB_DIRS = $PD_SUB_DIRS"
17+
echo "GD_DLLS = $GD_DLLS"
18+
echo "GD_PRIORITY = $GD_PRIORITY"
19+
echo "LIB_DLLS = $LIB_DLLS"
20+
echo "PROJECT_BRANCH = $PROJECT_BRANCH"
21+
echo "PROJECT_STATE = $PROJECT_STATE"
22+
echo "VERSION = $VERSION"
23+
echo "KSP_DEV = $KSP_DEV"

clean.sh

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
#!/usr/bin/env bash
22

3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
36
source ./CONFIG.inc
47

58
clean() {
69
local DLL=$1.dll
710

11+
find ./bin -name "$DLL" -delete
12+
find ./obj -name "$DLL" -delete
13+
rm -f "./GameData/$DLL"
814
rm -f "./GameData/$TARGETBINDIR/$DLL"
915
rm -f "$LIB/$DLL"
16+
rm -f "${KSP_DEV}/GameData/$DLL"
1017
rm -f "${KSP_DEV}/GameData/$TARGETBINDIR/$DLL"
1118
}
1219

1320
VERSIONFILE=$PACKAGE.version
1421

15-
rm -fR "./bin"
16-
rm -fR "./obj"
1722
rm -f "./GameData/$TARGETDIR/$VERSIONFILE"
1823
rm -f "./GameData/$TARGETDIR/CHANGE_LOG.md"
1924
rm -f "./GameData/$TARGETDIR/README.md"
20-
rm -f "./GameData/$TARGETDIR/*.LICENSE"
21-
for dll in $PACKAGE ; do
25+
rm -f "./GameData/$TARGETDIR/LICENSE*"
26+
for dll in $DLLS ; do
2227
clean $dll
2328
done

deploy-and-run.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
6+
7+
. ./CONFIG.inc
8+
. ./deploy.sh
9+
10+
echo "Running ${KSP_DEV}"
11+
open ${KSP_DEV}/KSP.app
12+

deploy.sh

Lines changed: 78 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
#!/usr/bin/env bash
22

3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
36
source ./CONFIG.inc
7+
IFS=$' '
48

59
check() {
610
if [ ! -d "./GameData/$TARGETBINDIR/" ] ; then
711
rm -f "./GameData/$TARGETBINDIR/"
812
mkdir -p "./GameData/$TARGETBINDIR/"
913
fi
14+
15+
for dll in $EXT_DLLS ; do
16+
if [ ! -f "${LIB}/$dll.dll" ] ; then
17+
echo "$dll not found!!! Aborting."
18+
exit -1
19+
fi
20+
done
1021
}
1122

1223
deploy_dev() {
@@ -21,28 +32,84 @@ deploy() {
2132
local DLL=$1.dll
2233

2334
if [ -f "./bin/Release/$DLL" ] ; then
24-
cp "./bin/Release/$DLL" "./GameData/$TARGETBINDIR/"
35+
cp -R "./bin/Release/$DLL" "./GameData/$TARGETBINDIR/"
2536
if [ -d "${KSP_DEV}/GameData/$TARGETBINDIR/" ] ; then
26-
cp "./bin/Release/$DLL" "${KSP_DEV/}GameData/$TARGETBINDIR/"
37+
cp -R "./bin/Release/$DLL" "${KSP_DEV}/GameData/$TARGETBINDIR/"
2738
fi
2839
fi
2940
if [ -f "./bin/Debug/$DLL" ] ; then
3041
if [ -d "${KSP_DEV}/GameData/$TARGETBINDIR/" ] ; then
31-
cp "./bin/Debug/$DLL" "${KSP_DEV}GameData/$TARGETBINDIR/"
42+
cp -R "./bin/Debug/$DLL" "${KSP_DEV}GameData/$TARGETBINDIR/"
43+
fi
44+
fi
45+
}
46+
47+
deploy_plugindata() {
48+
local DLL=$1.dll
49+
50+
if [ -f "./bin/Release/$DLL" ] ; then
51+
cp "./bin/Release/$DLL" "./GameData/$TARGETBINDIR/PluginData/"
52+
if [ -d "${KSP_DEV}/GameData/" ] ; then
53+
cp "./bin/Release/$DLL" "${KSP_DEV}GameData/$TARGETBINDIR/PluginData/"
54+
fi
55+
fi
56+
if [ -f "./bin/Debug/$DLL" ] ; then
57+
if [ -d "${KSP_DEV}/GameData/" ] ; then
58+
cp "./bin/Debug/$DLL" "${KSP_DEV}GameData/$TARGETBINDIR/PluginData/"
59+
fi
60+
fi
61+
}
62+
63+
deploy_gamedata() {
64+
local PLACE=$1
65+
local DLL=$2.dll
66+
67+
if [ -f "./bin/Release/$DLL" ] ; then
68+
cp "./bin/Release/$DLL" "./GameData/000_$DLL"
69+
if [ -d "${KSP_DEV}/GameData/" ] ; then
70+
cp "./bin/Release/$DLL" "${KSP_DEV/}GameData/${PLACE}_$DLL"
71+
fi
72+
fi
73+
if [ -f "./bin/Debug/$DLL" ] ; then
74+
if [ -d "${KSP_DEV}/GameData/" ] ; then
75+
cp "./bin/Debug/$DLL" "${KSP_DEV}GameData/${PLACE}_$DLL"
3276
fi
3377
fi
3478
}
3579

36-
VERSIONFILE=$PACKAGE.version
80+
deploy_ext() {
81+
local DLL=$1.dll
82+
83+
if [ -f "$LIB/$DLL" ] ; then
84+
cp -R "$LIB/$DLL" "./GameData/$TARGETBINDIR/"
85+
if [ -d "${KSP_DEV}/GameData/" ] ; then
86+
cp -R "$LIB/$DLL" "${KSP_DEV/}GameData/$TARGETBINDIR/"
87+
fi
88+
fi
89+
}
3790

3891
check
39-
cp $VERSIONFILE "./GameData/$TARGETDIR"
40-
cp CHANGE_LOG.md "./GameData/$TARGETDIR/$PACKAGE.CHANGE_LOG.md"
41-
cp README.md "./GameData/$TARGETDIR/$PACKAGE.README.md"
42-
cp LICENSE "./GameData/$TARGETDIR/$PACKAGE.LICENSE"
43-
cp NOTICE "./GameData/$TARGETDIR/$PACKAGE.NOTICE"
4492

45-
for dll in $PACKAGE ; do
93+
cp $VERSIONFILE "./GameData/$TARGETDIR/"
94+
cp CHANGE_LOG.md "./GameData/$TARGETDIR/"
95+
cp README.md "./GameData/$TARGETDIR/"
96+
cp LICENSE "./GameData/$TARGETDIR/"
97+
cp NOTICE "./GameData/$TARGETDIR/"
98+
99+
for dll in $GD_DLLS ; do
100+
deploy_dev $dll
101+
deploy_gamedata $GD_PRIORITY $dll
102+
done
103+
104+
for dll in $PD_DLLS ; do
105+
deploy_plugindata $dll
106+
done
107+
108+
for dll in $DLLS ; do
46109
deploy_dev $dll
47-
deploy $dll
110+
TARGETBINDIR="" deploy $dll
111+
done
112+
113+
for dll in $EXT_DLLS ; do
114+
deploy_ext $dll
48115
done

pack-curse.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
6+
source ./CONFIG.inc
7+
8+
echo Not yet!
9+
exit -1
10+
11+
clean() {
12+
rm -fR $FILE
13+
if [ ! -d Archive ] ; then
14+
mkdir Archive
15+
fi
16+
}
17+
18+
pwd=$(pwd)
19+
FILE=${pwd}/Archive/$PACKAGE-$VERSION${PROJECT_STATE}-CurseForge.zip
20+
echo $FILE
21+
clean
22+
cd GameData
23+
24+
zip -r $FILE ./$PACKAGE/* -x ".*"
25+
zip -d $FILE __MACOSX "**/.DS_Store"
26+
cd $pwd

pack-full.sh

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/usr/bin/env bash
2+
3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
6+
source ./CONFIG.inc
7+
8+
clean() {
9+
rm -fR $FILE
10+
if [ ! -d Archive ] ; then
11+
mkdir Archive
12+
fi
13+
}
14+
15+
pwd=$(pwd)
16+
FILE=${pwd}/Archive/$PACKAGE-$VERSION${PROJECT_STATE}.zip
17+
echo $FILE
18+
clean
19+
zip -r $FILE ./GameData/* -x ".*"
20+
zip -r $FILE ./PluginData/* -x ".*"
21+
zip -r $FILE ./Extras/* -x ".*"
22+
zip $FILE INSTALL.md
23+
zip -d $FILE __MACOSX "**/.DS_Store"
24+
cd $pwd

pack.sh

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
11
#!/usr/bin/env bash
22

3-
source ./CONFIG.inc
3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
46

5-
clean() {
6-
rm $FILE
7-
if [ ! -d Archive ] ; then
8-
rm -f Archive
9-
mkdir Archive
10-
fi
11-
}
12-
13-
FILE=$PACKAGE-$VERSION.zip
14-
echo $FILE
15-
clean
16-
zip -r $FILE ./GameData/* -x ".*"
17-
zip -r $FILE ./PluginData/* -x ".*"
18-
zip $FILE ./INSTALL.md
19-
zip -d $FILE __MACOSX "**/.DS_Store"
20-
mv $FILE ./Archive
7+
pwd=$(pwd)
8+
./pack-full.sh
9+
cd $pwd
10+
./pack-curse.sh
11+
cd $pwd

publish.sh

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,29 @@
11
#!/usr/bin/env bash
22

3+
# see http://redsymbol.net/articles/unofficial-bash-strict-mode/
4+
set -euo pipefail
5+
IFS=$'\n\t'
36
source ./CONFIG.inc
47

58
VERSIONFILE=$PACKAGE.version
69

7-
scp -i $SSH_ID "./GameData/$TARGETDIR/$VERSIONFILE" $SITE:/$TARGET_CONTENT_PATH
8-
scp -i $SSH_ID "./GameData/$TARGETDIR/$PACKAGE.README.md" $SITE:/${TARGET_CMS_PATH}${PACKAGE}/index.md
9-
#scp -i $SSH_ID "./PR_material/banner.jpg" $SITE:/${TARGET_CONTENT_PATH}PR_material/banner.jpg
10+
deploy_md() {
11+
local MD=$1
12+
local TARGET=$2
13+
#![NxMyyTK.png](./PR_material/img/NxMyyTK.png) -> ![NxMyyTK.png](./PR_material/$PACKAGE/img/NxMyyTK.png)
14+
sed $MD -e "s/\\.\\/PR_material\\//.\\/PR_material\\/$PACKAGE\\//g" | ssh -i $SSH_ID $SITE "cat - >$TARGET_CMS_PATH/$TARGET"
15+
}
16+
17+
deploy_assets() {
18+
local IN_DIR=$1
19+
local OUT_DIR=$2
20+
ssh -i $SSH_ID $SITE "mkdir ${TARGET_CONTENT_PATH}$OUT_DIR"
21+
local cur_path=`pwd`
22+
cd $IN_DIR
23+
scp -i $SSH_ID -rp `find . -type f \! -name ".DS_Store" ` "$SITE:${TARGET_CONTENT_PATH}$OUT_DIR"
24+
cd $cur_path
25+
}
26+
27+
scp -i $SSH_ID ./GameData/$PACKAGE/$VERSIONFILE $SITE:/$TARGET_CONTENT_PATH
28+
deploy_assets ./PR_material ./PR_material/$PACKAGE
29+
deploy_md README.md $PACKAGE.md

0 commit comments

Comments
 (0)