@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.
@@ -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
- const folderStructureValidation = await validateThemeFolderStructure(executionContext.themeRootDir);
92
- if (!folderStructureValidation.isValid) {
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;
@@ -3,5 +3,6 @@ export const THEME_COMMANDS_THAT_REQUIRED_ACTIONS_LIST = [
3
3
  THEME_COMMANDS_NAME.pull,
4
4
  THEME_COMMANDS_NAME.init,
5
5
  THEME_COMMANDS_NAME.push,
6
- THEME_COMMANDS_NAME.delete
6
+ THEME_COMMANDS_NAME.delete,
7
+ THEME_COMMANDS_NAME.watch
7
8
  ];
@@ -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, toUnixPath } from '../path_utils.js';
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: zipEntryName } });
35
- zipfile.addEmptyDirectory(zipEntryName);
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: zipEntryName, fullPath } });
39
- zipfile.addFile(fullPath, zipEntryName, {
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
@@ -2,7 +2,7 @@
2
2
  "name": "@shoper/cli",
3
3
  "packageManager": "yarn@3.2.0",
4
4
  "sideEffects": false,
5
- "version": "0.8.3-1",
5
+ "version": "0.9.0",
6
6
  "description": "CLI tool for Shoper",
7
7
  "author": "Joanna Firek",
8
8
  "license": "MIT",
@@ -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
- };
@@ -1,8 +0,0 @@
1
- export const ALLOWED_THEME_TOP_LEVEL_DIRECTORIES = [
2
- '.shoper',
3
- 'settings',
4
- 'styles',
5
- 'macros',
6
- 'modules',
7
- 'skinstore'
8
- ];