@shoper/cli 0.8.3-1 → 0.9.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.
- package/build/theme/commands/push/theme_push_command.js +2 -7
- package/build/theme/hooks/themes_actions/ensure_themes_actions_hook_constants.js +2 -1
- package/build/utils/zip/create_zip_utils.js +6 -6
- package/package.json +1 -1
- package/build/theme/commands/push/ui/theme_invalid_folders_error.js +0 -16
- package/build/theme/utils/push_validators/push_path_validator_utils.js +0 -16
- package/build/theme/utils/push_validators/push_validator_constants.js +0 -8
|
@@ -25,8 +25,6 @@ import { ThemeError } from '../ui/theme_error.js';
|
|
|
25
25
|
import { mapToPermissionsTree } from '../../utils/directory_validator/directory_validator_utils.js';
|
|
26
26
|
import { mapChecksumToTree } from '../../../utils/checksums/checksums_utils.js';
|
|
27
27
|
import { ThemeUnpermittedActionsError } from './ui/theme_unpermitted_actions_error.js';
|
|
28
|
-
import { validateThemeFolderStructure } from '../../utils/push_validators/push_path_validator_utils.js';
|
|
29
|
-
import { ThemeInvalidFoldersError } from './ui/theme_invalid_folders_error.js';
|
|
30
28
|
import { LOGGER_API_NAME } from '../../../cli/utilities/features/logger/logger_constants.js';
|
|
31
29
|
export class ThemePushCommand extends BaseThemeCommand {
|
|
32
30
|
static summary = 'Uploads your local theme files to the store and overwrites the current version of the theme in your store.';
|
|
@@ -88,11 +86,8 @@ export class ThemePushCommand extends BaseThemeCommand {
|
|
|
88
86
|
permissions: mapToPermissionsTree(permissions),
|
|
89
87
|
rootDirectory: executionContext.themeRootDir
|
|
90
88
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
renderOnce(React.createElement(ThemeInvalidFoldersError, { invalidDirectories: folderStructureValidation.invalidDirectories }));
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
89
|
+
//TODO jak wysyla folder z nazwa posiadajaco \ na windows, wychodzimy
|
|
90
|
+
//TODO validacja folderów przed pushem
|
|
96
91
|
if (!validationResult.isValid) {
|
|
97
92
|
renderOnce(React.createElement(ThemeUnpermittedActionsError, { unpermittedActions: validationResult.unpermittedActions }));
|
|
98
93
|
return;
|
|
@@ -5,7 +5,7 @@ import { createWriteStream } from 'node:fs';
|
|
|
5
5
|
import { StreamReadError } from '../fs/errors/stream_read_error.js';
|
|
6
6
|
import { CreateZipError } from './errors/create_zip_error.js';
|
|
7
7
|
import { StreamWriteError } from '../fs/errors/stream_write_error.js';
|
|
8
|
-
import { join
|
|
8
|
+
import { join } from '../path_utils.js';
|
|
9
9
|
import { AppError } from '../../cli/utilities/features/logger/logs/app_error.js';
|
|
10
10
|
export const createZip = async ({ files, dist, baseDir = process.cwd(), logger }) => {
|
|
11
11
|
const zipfile = new yazl.ZipFile();
|
|
@@ -29,14 +29,14 @@ export const createZip = async ({ files, dist, baseDir = process.cwd(), logger }
|
|
|
29
29
|
code: 'FILE_NOT_FOUND',
|
|
30
30
|
details: { file, baseDir }
|
|
31
31
|
});
|
|
32
|
-
const zipEntryName = toUnixPath(file);
|
|
33
32
|
if (await isDirectory(fullPath)) {
|
|
34
|
-
logger.debug('Adding empty directory to zip', { details: { directory:
|
|
35
|
-
zipfile.addEmptyDirectory(
|
|
33
|
+
logger.debug('Adding empty directory to zip', { details: { directory: file } });
|
|
34
|
+
zipfile.addEmptyDirectory(file);
|
|
36
35
|
}
|
|
37
36
|
else {
|
|
38
|
-
logger.debug('Adding file to zip', { details: { file
|
|
39
|
-
zipfile.addFile(fullPath,
|
|
37
|
+
logger.debug('Adding file to zip', { details: { file, fullPath } });
|
|
38
|
+
zipfile.addFile(fullPath, file, {
|
|
39
|
+
//TODO params
|
|
40
40
|
compress: true
|
|
41
41
|
});
|
|
42
42
|
}
|
package/package.json
CHANGED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { List } from '../../../../ui/list/list.js';
|
|
2
|
-
import { Error } from '../../../../ui/message_box/error.js';
|
|
3
|
-
import { Text } from '../../../../ui/text.js';
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import { ALLOWED_THEME_TOP_LEVEL_DIRECTORIES } from '../../../utils/push_validators/push_validator_constants.js';
|
|
6
|
-
export const ThemeInvalidFoldersError = ({ invalidDirectories }) => {
|
|
7
|
-
const items = invalidDirectories.map((dir) => ({
|
|
8
|
-
content: dir
|
|
9
|
-
}));
|
|
10
|
-
return (React.createElement(Error, { header: "Invalid theme folder structure" },
|
|
11
|
-
React.createElement(Text, null, "The following directories are not allowed in the theme root:"),
|
|
12
|
-
React.createElement(List, { items: items }),
|
|
13
|
-
React.createElement(Text, null,
|
|
14
|
-
"Allowed top-level directories: ",
|
|
15
|
-
ALLOWED_THEME_TOP_LEVEL_DIRECTORIES.join(', '))));
|
|
16
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { getAllDirectoriesNamesInside } from '../../../utils/fs/fs_utils.js';
|
|
2
|
-
import { ALLOWED_THEME_TOP_LEVEL_DIRECTORIES } from './push_validator_constants.js';
|
|
3
|
-
export const validateThemeFolderStructure = async (themeRootDir) => {
|
|
4
|
-
const directories = await getAllDirectoriesNamesInside(themeRootDir, { recursive: false, hidden: true });
|
|
5
|
-
const allowedSet = new Set(ALLOWED_THEME_TOP_LEVEL_DIRECTORIES);
|
|
6
|
-
const invalidDirectories = directories.filter((dir) => {
|
|
7
|
-
if (dir.startsWith('.') && !allowedSet.has(dir)) {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
return !allowedSet.has(dir);
|
|
11
|
-
});
|
|
12
|
-
return {
|
|
13
|
-
isValid: invalidDirectories.length === 0,
|
|
14
|
-
invalidDirectories
|
|
15
|
-
};
|
|
16
|
-
};
|