@scandipwa/magento-scripts 2.4.4 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config/scandipwa-versions.js +1 -1
- package/lib/config/services/opensearch/versions/index.js +5 -1
- package/lib/config/services/opensearch/versions/opensearch-3.0.js +14 -0
- package/lib/config/services/opensearch/versions/opensearch-3.1.js +14 -0
- package/lib/config/templates/git-postcheckout-hook.template +66 -0
- package/lib/config/versions/magento-2.4.5-p14.js +40 -0
- package/lib/config/versions/magento-2.4.6-p12.js +40 -0
- package/lib/config/versions/magento-2.4.7-p7.js +41 -0
- package/lib/config/versions/magento-2.4.8-p1.js +0 -1
- package/lib/config/versions/magento-2.4.8-p2.js +43 -0
- package/lib/config/versions/magento-2.4.9-alpha2.js +41 -0
- package/lib/tasks/execute.js +2 -0
- package/lib/tasks/file-system/create-git-hook-notification.js +58 -0
- package/lib/tasks/file-system/create-nginx-config.js +1 -9
- package/lib/tasks/file-system/index.js +3 -1
- package/lib/tasks/magento/install-magento-project.js +66 -20
- package/package.json +2 -2
|
@@ -3,11 +3,15 @@ const opensearch13 = require('./opensearch-1.3')
|
|
|
3
3
|
const opensearch25 = require('./opensearch-2.5')
|
|
4
4
|
const opensearch212 = require('./opensearch-2.12')
|
|
5
5
|
const opensearch219 = require('./opensearch-2.19')
|
|
6
|
+
const opensearch300 = require('./opensearch-3.0')
|
|
7
|
+
const opensearch310 = require('./opensearch-3.1')
|
|
6
8
|
|
|
7
9
|
module.exports = {
|
|
8
10
|
opensearch12,
|
|
9
11
|
opensearch13,
|
|
10
12
|
opensearch25,
|
|
11
13
|
opensearch212,
|
|
12
|
-
opensearch219
|
|
14
|
+
opensearch219,
|
|
15
|
+
opensearch300,
|
|
16
|
+
opensearch310
|
|
13
17
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const defaultEnv = require('../default-os-env')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @returns {import('../../../../../typings/index').OpenSearchSearchConfiguration}
|
|
5
|
+
*/
|
|
6
|
+
const opensearch300 = () => ({
|
|
7
|
+
image: 'opensearchproject/opensearch:3.0.0',
|
|
8
|
+
env: {
|
|
9
|
+
...defaultEnv,
|
|
10
|
+
'indices.id_field_data.enabled': true
|
|
11
|
+
}
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
module.exports = opensearch300
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const defaultEnv = require('../default-os-env')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @returns {import('../../../../../typings/index').OpenSearchSearchConfiguration}
|
|
5
|
+
*/
|
|
6
|
+
const opensearch310 = () => ({
|
|
7
|
+
image: 'opensearchproject/opensearch:3.1.0',
|
|
8
|
+
env: {
|
|
9
|
+
...defaultEnv,
|
|
10
|
+
'indices.id_field_data.enabled': true
|
|
11
|
+
}
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
module.exports = opensearch310
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
OLD_REF="$1"
|
|
2
|
+
NEW_REF="$2"
|
|
3
|
+
IS_BRANCH_CHECKOUT="$3"
|
|
4
|
+
|
|
5
|
+
# Only act on branch checkouts (not path checkouts)
|
|
6
|
+
if [ "$IS_BRANCH_CHECKOUT" != "1" ]; then
|
|
7
|
+
exit 0
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
# If git is not available, do nothing
|
|
11
|
+
if ! command -v git >/dev/null 2>&1; then
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
# If old ref is empty (unborn) or same as new, skip
|
|
16
|
+
if [ -z "$OLD_REF" ] || [ "$OLD_REF" = "$NEW_REF" ] || echo "$OLD_REF" | grep -q '^0\{40\}$'; then
|
|
17
|
+
exit 0
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
# Determine if any composer files changed anywhere in the repo between refs
|
|
21
|
+
ALL_CHANGED=$(git diff --name-only "$OLD_REF" "$NEW_REF" 2>/dev/null || true)
|
|
22
|
+
CHANGED_FILES=$(printf "%s\n" "$ALL_CHANGED" | grep -E '(^|/)(composer\.json|composer\.lock)$' || true)
|
|
23
|
+
|
|
24
|
+
if [ -z "$CHANGED_FILES" ]; then
|
|
25
|
+
exit 0
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Extract the first directory name from changed composer files
|
|
29
|
+
CHANGED_DIR=$(basename "$(git rev-parse --show-toplevel)")
|
|
30
|
+
|
|
31
|
+
# Get branch names from refs
|
|
32
|
+
OLD_BRANCH=$(git name-rev --name-only "$OLD_REF" 2>/dev/null | sed 's/^remotes\///' || echo "$OLD_REF")
|
|
33
|
+
NEW_BRANCH=$(git name-rev --name-only "$NEW_REF" 2>/dev/null | sed 's/^remotes\///' || echo "$NEW_REF")
|
|
34
|
+
|
|
35
|
+
MESSAGE_TITLE="Composer dependencies changed"
|
|
36
|
+
MESSAGE_BODY="Changes detected in: $CHANGED_DIR\nBranch: $OLD_BRANCH → $NEW_BRANCH\n\nPlease run composer install or npm run start"
|
|
37
|
+
|
|
38
|
+
# Cross-platform desktop notification with multiple fallbacks
|
|
39
|
+
send_notification() {
|
|
40
|
+
local title="$1"
|
|
41
|
+
local body="$2"
|
|
42
|
+
|
|
43
|
+
# Try Linux notify-send first
|
|
44
|
+
if command -v notify-send >/dev/null 2>&1; then
|
|
45
|
+
notify-send -u normal -t 8000 "$title" "$body"
|
|
46
|
+
return 0
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# Try macOS terminal-notifier
|
|
50
|
+
if command -v terminal-notifier >/dev/null 2>&1; then
|
|
51
|
+
terminal-notifier -title "$title" -message "$body" -timeout 8
|
|
52
|
+
return 0
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# Try macOS osascript (AppleScript) as fallback
|
|
56
|
+
if command -v osascript >/dev/null 2>&1; then
|
|
57
|
+
osascript -e "display notification \"$body\" with title \"$title\""
|
|
58
|
+
return 0
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Final fallback to stdout
|
|
62
|
+
echo "$title"
|
|
63
|
+
echo "$body"
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
send_notification "$MESSAGE_TITLE" "$MESSAGE_BODY"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php81 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish77 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer22 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis72 } = require('../services/redis')
|
|
13
|
+
const { mariadb106 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch717 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.5-p14',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php81({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.1-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: redis72(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb106(),
|
|
33
|
+
elasticsearch: elasticsearch717(),
|
|
34
|
+
composer: composer22(),
|
|
35
|
+
varnish: varnish77({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch219()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php81 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish77 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer22 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis72 } = require('../services/redis')
|
|
13
|
+
const { mariadb1011 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch717 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.6-p12',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php81({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.1-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: redis72(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb1011(),
|
|
33
|
+
elasticsearch: elasticsearch717(),
|
|
34
|
+
composer: composer22(),
|
|
35
|
+
varnish: varnish77({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch219()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php82 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish76 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer28 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis72 } = require('../services/redis')
|
|
13
|
+
const { mariadb1011 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch817 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.7-p7',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php82({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.2-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: redis72(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb1011(),
|
|
33
|
+
elasticsearch: elasticsearch817(),
|
|
34
|
+
composer: composer28(),
|
|
35
|
+
varnish: varnish76({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch219(),
|
|
39
|
+
searchengine: 'opensearch'
|
|
40
|
+
}
|
|
41
|
+
})
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const ftp = require('../services/php/extensions/ftp')
|
|
3
|
+
const {
|
|
4
|
+
magento24PHPExtensionList
|
|
5
|
+
} = require('../magento/required-php-extensions')
|
|
6
|
+
const { php83 } = require('../services/php/versions')
|
|
7
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
8
|
+
const { varnish76 } = require('../services/varnish')
|
|
9
|
+
const { repo } = require('../services/php/base-repo')
|
|
10
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
11
|
+
const { composer28 } = require('../services/composer/versions')
|
|
12
|
+
const { maildev } = require('../services/maildev')
|
|
13
|
+
const { valkey80 } = require('../services/redis')
|
|
14
|
+
const { mariadb114 } = require('../services/mariadb/versions')
|
|
15
|
+
const { elasticsearch817 } = require('../services/elasticsearch/versions')
|
|
16
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
17
|
+
const { opensearch300 } = require('../services/opensearch/versions')
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
21
|
+
*/
|
|
22
|
+
module.exports = ({ templateDir }) => ({
|
|
23
|
+
magentoVersion: '2.4.8-p2',
|
|
24
|
+
isDefault: true,
|
|
25
|
+
configuration: {
|
|
26
|
+
php: php83({
|
|
27
|
+
templateDir,
|
|
28
|
+
extensions: { ...magento24PHPExtensionList, sodium, ftp },
|
|
29
|
+
baseImage: `${repo}:php-8.3-magento-2.4`
|
|
30
|
+
}),
|
|
31
|
+
nginx: nginx126({ templateDir }),
|
|
32
|
+
redis: valkey80(),
|
|
33
|
+
mysql: mysql80(),
|
|
34
|
+
mariadb: mariadb114(),
|
|
35
|
+
elasticsearch: elasticsearch817(),
|
|
36
|
+
composer: composer28(),
|
|
37
|
+
varnish: varnish76({ templateDir }),
|
|
38
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
39
|
+
maildev: maildev(),
|
|
40
|
+
opensearch: opensearch300(),
|
|
41
|
+
searchengine: 'opensearch'
|
|
42
|
+
}
|
|
43
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php83 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish77 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer28 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { valkey80 } = require('../services/redis')
|
|
13
|
+
const { mariadb114 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch87 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql84 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch300 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.9-alpha2',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php83({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.3-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: valkey80(),
|
|
31
|
+
mysql: mysql84(),
|
|
32
|
+
mariadb: mariadb114(),
|
|
33
|
+
elasticsearch: elasticsearch87(),
|
|
34
|
+
composer: composer28(),
|
|
35
|
+
varnish: varnish77({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch300(),
|
|
39
|
+
searchengine: 'opensearch'
|
|
40
|
+
}
|
|
41
|
+
})
|
package/lib/tasks/execute.js
CHANGED
|
@@ -5,6 +5,7 @@ const getMagentoVersionConfig = require('../config/get-magento-version-config')
|
|
|
5
5
|
const checkConfigurationFile = require('../config/check-configuration-file')
|
|
6
6
|
const getProjectConfiguration = require('../config/get-project-configuration')
|
|
7
7
|
const { getCachedPorts } = require('../config/get-port-config')
|
|
8
|
+
const checkPHPVersion = require('./requirements/php-version')
|
|
8
9
|
const {
|
|
9
10
|
executeInContainer,
|
|
10
11
|
runInContainer
|
|
@@ -28,6 +29,7 @@ const executeTask = async (argv) => {
|
|
|
28
29
|
getProjectConfiguration(),
|
|
29
30
|
getCachedPorts(),
|
|
30
31
|
dockerNetwork.tasks.createNetwork(),
|
|
32
|
+
checkPHPVersion(),
|
|
31
33
|
prepareFileSystem()
|
|
32
34
|
],
|
|
33
35
|
{
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const path = require('path')
|
|
2
|
+
const fs = require('fs')
|
|
3
|
+
const UnknownError = require('../../errors/unknown-error')
|
|
4
|
+
const setConfigFile = require('../../util/set-config')
|
|
5
|
+
const { execAsyncSpawn } = require('../../util/exec-async-command')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
9
|
+
*/
|
|
10
|
+
const createGitHookNotification = () => ({
|
|
11
|
+
title: 'Setting git hook notification',
|
|
12
|
+
task: async (ctx) => {
|
|
13
|
+
const gitHookTemplatePath = path.join(
|
|
14
|
+
ctx.config.baseConfig.templateDir,
|
|
15
|
+
'git-postcheckout-hook.template'
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
const gitRoot = await execAsyncSpawn('git rev-parse --show-toplevel')
|
|
19
|
+
|
|
20
|
+
let currentGitHookPath = await execAsyncSpawn(
|
|
21
|
+
`git config --get core.hooksPath`
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
if (!currentGitHookPath.trim()) {
|
|
25
|
+
await execAsyncSpawn(`git config core.hooksPath .git/hooks`)
|
|
26
|
+
|
|
27
|
+
currentGitHookPath = '.git/hooks'
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const gitHookPath = path.join(
|
|
31
|
+
gitRoot,
|
|
32
|
+
currentGitHookPath,
|
|
33
|
+
'post-checkout'
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
await setConfigFile({
|
|
38
|
+
configPathname: gitHookPath,
|
|
39
|
+
template: gitHookTemplatePath,
|
|
40
|
+
overwrite: false
|
|
41
|
+
})
|
|
42
|
+
} catch (e) {
|
|
43
|
+
throw new UnknownError(
|
|
44
|
+
`Unexpected error accrued during git hook notification creation\n\n${e}`
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// check if gitHookPath is executable
|
|
49
|
+
const isExecutable = await fs.promises.stat(gitHookPath)
|
|
50
|
+
if (isExecutable.mode & 0o111) {
|
|
51
|
+
return
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
await execAsyncSpawn(`chmod +x ${gitHookPath}`)
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
module.exports = createGitHookNotification
|
|
@@ -10,7 +10,7 @@ const createNginxConfig = () => ({
|
|
|
10
10
|
task: async (ctx) => {
|
|
11
11
|
const {
|
|
12
12
|
ports,
|
|
13
|
-
config: { overridenConfiguration, baseConfig
|
|
13
|
+
config: { overridenConfiguration, baseConfig },
|
|
14
14
|
isDockerDesktop
|
|
15
15
|
} = ctx
|
|
16
16
|
|
|
@@ -28,17 +28,9 @@ const createNginxConfig = () => ({
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
if (isDockerDesktop) {
|
|
31
|
-
// const containers = docker.getContainers(ports)
|
|
32
|
-
|
|
33
|
-
// networkSettings.phpNetwork = containers.php.name
|
|
34
|
-
// networkSettings.phpWithXdebugNetwork = containers.phpWithXdebug.name
|
|
35
|
-
|
|
36
31
|
networkSettings.phpNetwork = 'host.docker.internal'
|
|
37
32
|
networkSettings.phpWithXdebugNetwork = 'host.docker.internal'
|
|
38
33
|
|
|
39
|
-
// networkSettings.fpmPort = 9000
|
|
40
|
-
// networkSettings.fpmXdebugPort = 9000
|
|
41
|
-
|
|
42
34
|
networkSettings.hostPort = 80
|
|
43
35
|
}
|
|
44
36
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const createGitHookNotification = require('./create-git-hook-notification')
|
|
1
2
|
const createMariaDBConfig = require('./create-mariadb-config')
|
|
2
3
|
const createNginxConfig = require('./create-nginx-config')
|
|
3
4
|
const createPhpConfig = require('./create-php-config')
|
|
@@ -26,7 +27,8 @@ const prepareFileSystem = () => ({
|
|
|
26
27
|
createPhpStormConfig(),
|
|
27
28
|
createVSCodeConfig(),
|
|
28
29
|
createVarnishConfig(),
|
|
29
|
-
createMariaDBConfig()
|
|
30
|
+
createMariaDBConfig(),
|
|
31
|
+
createGitHookNotification()
|
|
30
32
|
],
|
|
31
33
|
{
|
|
32
34
|
concurrent: true
|
|
@@ -134,12 +134,10 @@ Change magento edition in config file or manually reinstall correct magento edit
|
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
136
|
* @param {import('../../../typings/context').ListrContext} ctx
|
|
137
|
-
* @param {
|
|
138
|
-
* @param {{ magentoProject: string, magentoPackageVersion: string }} param2
|
|
137
|
+
* @param {{ magentoProject: string, magentoPackageVersion: string }} param1
|
|
139
138
|
*/
|
|
140
139
|
const createMagentoProject = async (
|
|
141
140
|
ctx,
|
|
142
|
-
task,
|
|
143
141
|
{ magentoProject, magentoPackageVersion }
|
|
144
142
|
) => {
|
|
145
143
|
const tempDir = `/tmp/magento-tmpdir-${Date.now()}`
|
|
@@ -178,26 +176,69 @@ const getIsVendorFolderCorrupted = async (magentoDir) => {
|
|
|
178
176
|
return true
|
|
179
177
|
}
|
|
180
178
|
/**
|
|
181
|
-
* @type {{ packages: { name: string }[] } | null}
|
|
179
|
+
* @type {{ packages: { name: string }[], ['packages-dev']: { name: string }[] } | null}
|
|
182
180
|
*/
|
|
183
181
|
const composerLockData = await getJsonFileData(composerLockFile)
|
|
184
182
|
if (!composerLockData || !composerLockData.packages) {
|
|
185
183
|
return true
|
|
186
184
|
}
|
|
187
|
-
const { packages } = composerLockData
|
|
188
|
-
const packagesNames = packages
|
|
185
|
+
const { packages, 'packages-dev': packagesDev } = composerLockData
|
|
186
|
+
const packagesNames = packages
|
|
187
|
+
.filter((pkg) => pkg.type !== 'metapackage')
|
|
188
|
+
.map((pkg) => pkg.name)
|
|
189
|
+
const packagesDevNames = packagesDev
|
|
190
|
+
.filter((pkg) => pkg.type !== 'metapackage')
|
|
191
|
+
.map((pkg) => pkg.name)
|
|
189
192
|
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
193
|
+
const missingPackages = (
|
|
194
|
+
await Promise.all(
|
|
195
|
+
packagesNames.map(async (pkg) => {
|
|
196
|
+
const vendorPackage = path.join(vendorDir, pkg)
|
|
197
|
+
return [pkg, await pathExists(vendorPackage)]
|
|
198
|
+
})
|
|
199
|
+
)
|
|
200
|
+
).filter(([_, result]) => result === false)
|
|
201
|
+
|
|
202
|
+
if (missingPackages.length > 0) {
|
|
203
|
+
return true
|
|
204
|
+
}
|
|
199
205
|
|
|
200
|
-
|
|
206
|
+
const vendorPackages = await fs.promises.readdir(vendorDir, {
|
|
207
|
+
withFileTypes: true
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
const extraPackages = (
|
|
211
|
+
await Promise.all(
|
|
212
|
+
vendorPackages
|
|
213
|
+
.filter((pkg) => pkg.isDirectory())
|
|
214
|
+
.flatMap(async (pkg) => {
|
|
215
|
+
const vendorPackage = path.join(vendorDir, pkg.name)
|
|
216
|
+
const vendorPackages = await fs.promises.readdir(
|
|
217
|
+
vendorPackage,
|
|
218
|
+
{
|
|
219
|
+
withFileTypes: true
|
|
220
|
+
}
|
|
221
|
+
)
|
|
222
|
+
return vendorPackages
|
|
223
|
+
.filter((subPkg) => subPkg.isDirectory())
|
|
224
|
+
.map((subPkg) => [
|
|
225
|
+
`${pkg.name}/${subPkg.name}`,
|
|
226
|
+
packagesNames.includes(
|
|
227
|
+
`${pkg.name}/${subPkg.name}`
|
|
228
|
+
) ||
|
|
229
|
+
packagesDevNames.includes(
|
|
230
|
+
`${pkg.name}/${subPkg.name}`
|
|
231
|
+
)
|
|
232
|
+
])
|
|
233
|
+
})
|
|
234
|
+
)
|
|
235
|
+
).filter((pkg) => pkg.some(([_, result]) => result === false))
|
|
236
|
+
|
|
237
|
+
if (extraPackages.length > 0) {
|
|
238
|
+
return true
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return false
|
|
201
242
|
}
|
|
202
243
|
|
|
203
244
|
/**
|
|
@@ -237,9 +278,14 @@ const installMagentoProject = () => ({
|
|
|
237
278
|
'composer.lock': true
|
|
238
279
|
})
|
|
239
280
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
281
|
+
let isVendorFolderCorrupted = false
|
|
282
|
+
try {
|
|
283
|
+
isVendorFolderCorrupted = await getIsVendorFolderCorrupted(
|
|
284
|
+
baseConfig.magentoDir
|
|
285
|
+
)
|
|
286
|
+
} catch (e) {
|
|
287
|
+
// ignore error just in case
|
|
288
|
+
}
|
|
243
289
|
|
|
244
290
|
if (isFsMatching && !isVendorFolderCorrupted) {
|
|
245
291
|
ctx.magentoFirstInstall = false
|
|
@@ -254,7 +300,7 @@ const installMagentoProject = () => ({
|
|
|
254
300
|
if (
|
|
255
301
|
!(await pathExists(path.join(process.cwd(), 'composer.json')))
|
|
256
302
|
) {
|
|
257
|
-
await createMagentoProject(ctx,
|
|
303
|
+
await createMagentoProject(ctx, {
|
|
258
304
|
magentoProject,
|
|
259
305
|
magentoPackageVersion
|
|
260
306
|
})
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Scripts and configuration used by CMA.",
|
|
4
4
|
"homepage": "https://docs.create-magento-app.com/",
|
|
5
5
|
"repository": "github:scandipwa/create-magento-app",
|
|
6
|
-
"version": "2.4.
|
|
6
|
+
"version": "2.4.5",
|
|
7
7
|
"main": "./index.js",
|
|
8
8
|
"types": "./typings/index.d.ts",
|
|
9
9
|
"license": "OSL-3.0",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"@types/node": "^20.14.11",
|
|
60
60
|
"@types/yargs": "^17.0.32"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "1251d345bd3105a6ce83dd6041c05dad345ba9b7"
|
|
63
63
|
}
|