@scandipwa/magento-scripts 2.4.3 → 2.4.5-alpha.0

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.
@@ -12,7 +12,7 @@ const scandipwaMagentoVersionMapping = {
12
12
  '2.4.3': '5.0.4 - 5.2.7',
13
13
  '2.4.4': '5.3.0 - 5.3.6',
14
14
  '2.4.6': '6.2.0 - 6.3.0',
15
- '2.4.7': '6.4.0+'
15
+ '2.4.7': '6.4.0'
16
16
  }
17
17
 
18
18
  module.exports = scandipwaMagentoVersionMapping
@@ -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,59 @@
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
+ MESSAGE_TITLE="Composer dependencies changed"
29
+ MESSAGE_BODY="Detected changes in:\n$CHANGED_FILES\n\nPlease run: composer install"
30
+
31
+ # Cross-platform desktop notification with multiple fallbacks
32
+ send_notification() {
33
+ local title="$1"
34
+ local body="$2"
35
+
36
+ # Try Linux notify-send first
37
+ if command -v notify-send >/dev/null 2>&1; then
38
+ notify-send -u normal -t 8000 "$title" "$body"
39
+ return 0
40
+ fi
41
+
42
+ # Try macOS terminal-notifier
43
+ if command -v terminal-notifier >/dev/null 2>&1; then
44
+ terminal-notifier -title "$title" -message "$body" -timeout 8
45
+ return 0
46
+ fi
47
+
48
+ # Try macOS osascript (AppleScript) as fallback
49
+ if command -v osascript >/dev/null 2>&1; then
50
+ osascript -e "display notification \"$body\" with title \"$title\""
51
+ return 0
52
+ fi
53
+
54
+ # Final fallback to stdout
55
+ echo "$title"
56
+ echo "$body"
57
+ }
58
+
59
+ 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
+ })
@@ -21,7 +21,6 @@ const { opensearch219 } = require('../services/opensearch/versions')
21
21
  */
22
22
  module.exports = ({ templateDir }) => ({
23
23
  magentoVersion: '2.4.8-p1',
24
- isDefault: true,
25
24
  configuration: {
26
25
  php: php83({
27
26
  templateDir,
@@ -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
+ })
@@ -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, docker },
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
 
@@ -19,10 +19,7 @@ const createSSLTerminatorConfig = () => ({
19
19
  isDockerDesktop
20
20
  } = ctx
21
21
 
22
- const {
23
- configuration: { sslTerminator },
24
- ssl
25
- } = overridenConfiguration
22
+ const { ssl } = overridenConfiguration
26
23
 
27
24
  if (ssl.enabled && !ssl.external_provider) {
28
25
  if (!ssl.ssl_certificate) {
@@ -91,6 +88,8 @@ const createSSLTerminatorConfig = () => ({
91
88
  }
92
89
  const hostPort = !isDockerDesktop ? ports.sslTerminator : 80
93
90
 
91
+ const { sslTerminator } = docker.getContainers(ports)
92
+
94
93
  const nginxVersionOutput = await run({
95
94
  image: sslTerminator.image,
96
95
  command: 'nginx -v',
@@ -122,7 +121,9 @@ const createSSLTerminatorConfig = () => ({
122
121
  'conf.d',
123
122
  'default.conf'
124
123
  ),
125
- template: sslTerminator.configTemplate,
124
+ template:
125
+ overridenConfiguration.configuration.sslTerminator
126
+ .configTemplate,
126
127
  overwrite: true,
127
128
  templateArgs: {
128
129
  ports,
@@ -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 {import('listr2').ListrTaskWrapper<import('../../../typings/context').ListrContext, any>} task
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.map((pkg) => pkg.name)
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 hasCorruptPackages = await Promise.all(
191
- packagesNames.map(async (pkg) => {
192
- const vendorPackage = path.join(vendorDir, pkg)
193
- const composerJson = path.join(vendorPackage, 'composer.json')
194
- if (!(await pathExists(composerJson))) {
195
- return true
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
- return hasCorruptPackages.every((result) => result === true)
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
- const isVendorFolderCorrupted = await getIsVendorFolderCorrupted(
241
- baseConfig.magentoDir
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, task, {
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.3",
6
+ "version": "2.4.5-alpha.0",
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": "64638d1d51bbe12b541ed30e5d8463ce3947ac59"
62
+ "gitHead": "6d3f49a587a3db183e9f89dc936e8c7357accac3"
63
63
  }