-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdo.sh
executable file
·94 lines (78 loc) · 2.46 KB
/
do.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env sh
# Do - The Simplest Build Tool on Earth.
# Documentation and examples see https://github.com/8gears/do
set -e -u # -e "Automatic exit from bash shell script on error" -u "Treat unset variables and parameters as errors"
if [ -f ./.env ]
then
export $(cat ./.env | sed 's/#.*//g' | xargs)
fi
if [ -f ../.env ]
then
export $(cat ../.env | sed 's/#.*//g' | xargs)
fi
PROJECT_NAME=${PROJECT_NAME:-}
COMPOSER=${COMPOSER_BINARY:-~/bin/composer.phar}
composer() {
cmd="composer $@"
docker exec -it $PROJECT_NAME\_ss sh -c "$cmd"
}
devBuild() {
echo "Running dev/build on silverstripe"
docker exec $PROJECT_NAME\_ss vendor/bin/sake "dev/build" $@
}
sake() {
cmd="vendor/bin/sake $@"
docker exec -it $PROJECT_NAME\_ss sh -c "$cmd"
}
dumpDb() {
filename=$(basename ${1:-$(date -u +"dump-%Y-%m-%d-%H-%M-%S.sql")})
echo "Dumping to ./dumps/$filename"
if [[ -n "${PROJECT_NAME}" ]]
then
DUMP_DB_CMD="mysqldump --add-drop-table $SS_DATABASE_NAME > /var/data/$filename"
docker exec $PROJECT_NAME\_db sh -c "$DUMP_DB_CMD"
else
mysqldump $SS_DATABASE_NAME | gzip -v > ./dumps/$filename.gz
fi
echo "… dump saved"
}
importDb() {
echo "The following dumps archives were found; select one:"
# set the prompt used by select, replacing "#?"
PS3="Use number to select a file or 'exit' to cancel: "
filenames=$(find ./dumps -type f -name "*.sql" -or -name "*.gz")
exitposition=$(find ./dumps -type f -name "*.sql" -or -name "*.gz" | wc -l)
let "exitposition++"
select filename in $filenames "exit";
do
if [[ "$REPLY" == $exitposition || "$REPLY" == exit ]];
then
echo BYE
break
fi
if [[ $filename == "" ]]
then
echo "'$REPLY' is not a valid number"
continue
fi
if [ -f $filename ]; then
echo Now import db dump to local db...
_performImport $filename
else
echo "file does not exist!"
fi
break
done
}
_performImport() {
if [[ -n "${PROJECT_NAME}" ]]
then
IMPORT_DB_CMD="mysql -u root $SS_DATABASE_NAME < /var/data/$(basename $1)"
docker exec $PROJECT_NAME\_db sh -c "$IMPORT_DB_CMD"
else
gunzip < ./dumps/$(basename $1) | mysql --user=$SS_DATABASE_USERNAME --password $SS_DATABASE_NAME
fi
echo "$(basename $1) installed"
}
"$@" # <- execute the task
[ "$#" -gt 0 ] || printf "Usage:\n\t./do.sh %s\n" "($(compgen -A function | grep '^[^_]' | paste -sd '|' -))"