Skip to content

Commit 58c6627

Browse files
Merge pull request #362 from continuouspipe/feature/has-composer-package
Add a has_composer_package function to php images
2 parents 6cf7dbc + a856dc1 commit 58c6627

File tree

9 files changed

+104
-5
lines changed

9 files changed

+104
-5
lines changed

php-apache/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ RUN echo 'deb http://s3-eu-west-1.amazonaws.com/qafoo-profiler/packages debian m
1717
apache2-utils \
1818
curl \
1919
git \
20+
jq \
2021
"libapache2-mod-php$PHP_VERSION" \
2122
php-apcu \
2223
php-imagick \

php-apache/usr/local/share/php/common_functions.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,12 @@ do_composer() {
2727
do_composer_postinstall_scripts() {
2828
as_code_owner 'composer run-script post-install-cmd'
2929
}
30+
31+
has_composer_package() (
32+
set -e
33+
if [ ! -f "composer.lock" ]; then
34+
return
35+
fi
36+
37+
is_true "$(jq -c '(.packages + .["packages-dev"])[] | select(.name == "'"$1"'") | has("name")' composer.lock)"
38+
)

php-nginx/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ RUN echo 'deb http://s3-eu-west-1.amazonaws.com/qafoo-profiler/packages debian m
1414
&& apt-get update -qq \
1515
&& DEBIAN_FRONTEND=noninteractive apt-get -qq -y --no-install-recommends install \
1616
awscli \
17+
jq \
1718
nginx \
1819
php-apcu \
1920
php-imagick \

php-nginx/usr/local/share/php/common_functions.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,12 @@ do_composer() {
2727
do_composer_postinstall_scripts() {
2828
as_code_owner 'composer run-script post-install-cmd'
2929
}
30+
31+
has_composer_package() (
32+
set -e
33+
if [ ! -f "composer.lock" ]; then
34+
return
35+
fi
36+
37+
is_true "$(jq -c '(.packages + .["packages-dev"])[] | select(.name == "'"$1"'") | has("name")' composer.lock)"
38+
)

symfony/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ The following variables are supported
7070

7171
Variable | Description | Expected values | Default
7272
--- | --- | --- | ----
73+
SYMFONY_DOCTRINE_MODE | Whether to use Doctrine migrations, schema update or nothing. Automatically detected based on installed composer packages by default | auto/migrations/schema/off | auto
7374
SYMFONY_ENV | The Symfony env to use, when the app reads this variable | string | prod
7475
SYMFONY_MAJOR_VERSION | The major version of Symfony that will be used | 2, 3 | auto-detected based on location of console script
7576
SYMFONY_CONSOLE | The location of the Symfony console script | file path | auto-detected

symfony/usr/local/share/container/baseimage-30.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,13 @@ do_composer() {
1313
do_symfony_composer_inner
1414
do_symfony_app_permissions
1515
}
16+
17+
alias_function do_development_start do_symfony_development_start_inner
18+
do_development_start() {
19+
do_symfony_development_start_inner
20+
do_database_build
21+
}
22+
23+
do_migrate() {
24+
do_database_build
25+
}

symfony/usr/local/share/env/45-framework

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ fi
1010

1111
export SYMFONY_MAJOR_VERSION=${SYMFONY_MAJOR_VERSION:-${SYMFONY_MAJOR_VERSION_GUESS}}
1212
export SYMFONY_CONSOLE=${SYMFONY_CONSOLE:-${SYMFONY_CONSOLE_DEFAULT}}
13+
export SYMFONY_DOCTRINE_MODE=auto

symfony/usr/local/share/symfony/symfony_functions.sh

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,52 @@ do_symfony_app_permissions() {
3232
fi
3333
}
3434

35+
36+
symfony_doctrine_mode() {
37+
case "$SYMFONY_DOCTRINE_MODE" in
38+
auto)
39+
if has_composer_package doctrine/doctrine-migrations-bundle; then
40+
SYMFONY_DOCTRINE_MODE=migrations
41+
elif has_composer_package doctrine/doctrine-bundle && has_composer_package doctrine/orm; then
42+
SYMFONY_DOCTRINE_MODE=schema
43+
else
44+
SYMFONY_DOCTRINE_MODE=off
45+
fi
46+
;;
47+
?*)
48+
;;
49+
*)
50+
SYMFONY_DOCTRINE_MODE=off
51+
;;
52+
esac
53+
export SYMFONY_DOCTRINE_MODE
54+
echo "$SYMFONY_DOCTRINE_MODE"
55+
}
56+
57+
uses_symfony_doctrine() {
58+
[ "$(symfony_doctrine_mode)" != "off" ]
59+
}
60+
61+
uses_symfony_doctrine_mode_schema() {
62+
[ "$(symfony_doctrine_mode)" = "schema" ]
63+
}
64+
65+
uses_symfony_doctrine_mode_migrations() {
66+
[ "$(symfony_doctrine_mode)" = "migrations" ]
67+
}
68+
3569
do_database_rebuild() {
36-
do_symfony_console doctrine:database:drop --force >/dev/null || true
70+
if uses_symfony_doctrine; then
71+
do_symfony_console doctrine:database:drop --force >/dev/null || true
72+
fi
3773
do_database_build
3874
}
3975

4076
do_database_build() {
77+
if ! uses_symfony_doctrine; then
78+
return 0
79+
fi
80+
4181
# load the database if it doesn't exist
4282
set +e
4383
do_symfony_console doctrine:database:create >/dev/null
@@ -57,13 +97,20 @@ do_database_build() {
5797
}
5898

5999
do_database_install() {
60-
do_database_schema_create
61-
do_database_migrations_mark_done
100+
if uses_symfony_doctrine_mode_migrations; then
101+
do_database_migrate
102+
elif uses_symfony_doctrine_mode_schema; then
103+
do_database_schema_create
104+
fi
62105
do_database_fixtures
63106
}
64107

65108
do_database_update() {
66-
do_database_migrate
109+
if uses_symfony_doctrine_mode_migrations; then
110+
do_database_migrate
111+
elif uses_symfony_doctrine_mode_schema; then
112+
do_database_schema_update
113+
fi
67114
}
68115

69116
do_database_schema_create() {
@@ -87,7 +134,9 @@ do_cache_clear() {
87134
}
88135

89136
do_database_fixtures() {
90-
do_symfony_console doctrine:fixtures:load -n
137+
if has_composer_package doctrine/doctrine-fixtures-bundle; then
138+
do_symfony_console doctrine:fixtures:load -n
139+
fi
91140
}
92141

93142
do_symfony_build() {

ubuntu/16.04/usr/local/share/bootstrap/common_functions.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,24 @@ convert_to_boolean_string_zero_is_true() {
9898
fi
9999
}
100100

101+
is_true() {
102+
case "$1" in
103+
true|1)
104+
return 0;
105+
;;
106+
esac
107+
return 1;
108+
}
109+
110+
is_false() {
111+
case "$1" in
112+
true|1)
113+
return 0;
114+
;;
115+
esac
116+
return 1;
117+
}
118+
101119
is_hem_project() {
102120
local RESULT=1
103121
if [ -f /app/tools/hem/config.yaml ] || [ -f /app/tools/hobo/config.yaml ]; then

0 commit comments

Comments
 (0)