@shoper/cli 0.1.0-9 → 0.2.1-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.
Files changed (184) hide show
  1. package/build/cli/auth/cli_auth_errors_factory.js +1 -1
  2. package/build/cli/auth/tokens/cli_auth_tokens_errors_factory.js +1 -1
  3. package/build/cli/auth/tokens/cli_auth_tokens_initalizer.js +1 -1
  4. package/build/cli/class/base_command.js +14 -0
  5. package/build/cli/class/errors/file_system_errors_factory.js +1 -1
  6. package/build/cli/class/errors/http/http_errors_constants.js +1 -0
  7. package/build/cli/class/errors/{http_errors_factory.js → http/http_errors_factory.js} +3 -2
  8. package/build/cli/commands/auth/cli_auth_add_token_command.js +22 -19
  9. package/build/cli/commands/auth/cli_auth_commands_constants.js +3 -0
  10. package/build/cli/commands/auth/cli_auth_commands_utils.js +46 -0
  11. package/build/cli/commands/auth/cli_auth_list_tokens_command.js +19 -6
  12. package/build/cli/commands/auth/cli_auth_remove_token_command.js +37 -13
  13. package/build/cli/commands/auth/cli_auth_switch_token_command.js +20 -11
  14. package/build/cli/commands/auth/ui/invalid_token_index_error.js +11 -0
  15. package/build/cli/commands/auth/ui/missing_credentials_error.js +9 -0
  16. package/build/cli/commands/auth/ui/missing_token_index_error.js +19 -0
  17. package/build/cli/commands/cli_ui_dump_command.js +11 -0
  18. package/build/cli/commands/cli_update_command.js +13 -4
  19. package/build/cli/commands/commands_constants.js +6 -4
  20. package/build/cli/core/cli_setup.js +33 -14
  21. package/build/cli/features/controls/controls_constants.js +12 -0
  22. package/build/cli/features/controls/controls_dto_mappers.js +55 -0
  23. package/build/cli/features/controls/ui/controls_mappers.js +62 -0
  24. package/build/cli/features/controls/ui/form.js +4 -0
  25. package/build/cli/features/controls/ui/form_constants.js +7 -0
  26. package/build/cli/features/controls/validators/greater_eq_than_validator.js +5 -0
  27. package/build/cli/features/controls/validators/length_validator.js +6 -0
  28. package/build/cli/features/controls/validators/required_validator.js +5 -0
  29. package/build/cli/features/controls/validators/validator_constants.js +13 -0
  30. package/build/cli/features/execution_context/execution_context_service.js +5 -5
  31. package/build/cli/features/http_requester/http_requester_initializer.js +1 -1
  32. package/build/cli/hooks/authorization/ensure_authorization_hook.js +2 -2
  33. package/build/cli/hooks/authorization/ensure_authorization_hook_constants.js +7 -8
  34. package/build/index.js +37 -19
  35. package/build/theme/class/archive/theme_archive.js +44 -0
  36. package/build/theme/class/archive/theme_archive_errors_factory.js +11 -0
  37. package/build/theme/class/checksums/theme_checksums.js +170 -0
  38. package/build/theme/{features/theme/utils → class}/checksums/theme_checksums_error_factory.js +1 -1
  39. package/build/theme/class/checksums/theme_checksums_utils.js +17 -0
  40. package/build/theme/class/fetch_resources/fetch_resources.js +1 -0
  41. package/build/theme/class/fetch_resources/fetch_resources_errors_factory.js +1 -1
  42. package/build/theme/class/fetch_resources/fetch_resources_utils.js +4 -1
  43. package/build/theme/class/files_upload/theme_files_upload.js +61 -0
  44. package/build/theme/class/files_upload/theme_files_upload_http_api.js +23 -0
  45. package/build/theme/commands/delete/theme_delete_command.js +97 -0
  46. package/build/theme/commands/delete/ui/theme_deleted_successfully.js +15 -0
  47. package/build/theme/commands/delete/ui/theme_deletion_warning.js +10 -0
  48. package/build/theme/commands/info/theme_info_command.js +79 -0
  49. package/build/theme/commands/info/theme_info_command_utils.js +39 -0
  50. package/build/theme/commands/init/theme_init_command.js +84 -0
  51. package/build/theme/commands/init/ui/theme_created_success.js +15 -0
  52. package/build/theme/commands/list/theme_list_command.js +25 -0
  53. package/build/theme/commands/list/theme_list_command_utils.js +27 -0
  54. package/build/theme/commands/publish/theme_publish_command.js +76 -0
  55. package/build/theme/commands/pull/theme_pull_command.js +174 -0
  56. package/build/theme/commands/pull/ui/theme_pull_id_mismatch_error.js +7 -0
  57. package/build/theme/commands/pull/ui/theme_pull_unpublished_changes_warning.js +10 -0
  58. package/build/theme/commands/pull/ui/theme_pulled_success.js +5 -0
  59. package/build/theme/commands/push/theme_push_command.js +112 -0
  60. package/build/theme/commands/push/ui/theme_push_skip_into.js +7 -0
  61. package/build/theme/commands/push/ui/theme_pushed_success.js +5 -0
  62. package/build/theme/commands/push/ui/theme_unpermitted_actions_error.js +12 -0
  63. package/build/theme/commands/theme_commands_constants.js +9 -6
  64. package/build/theme/commands/theme_verify_command.js +64 -22
  65. package/build/theme/commands/ui/invalid_theme_id.js +11 -0
  66. package/build/theme/commands/ui/missing_theme_files.js +15 -0
  67. package/build/theme/commands/ui/missing_theme_id_error.js +13 -0
  68. package/build/theme/commands/ui/ouside_of_theme_directory_context_error.js +7 -0
  69. package/build/theme/commands/ui/theme_directory_context_error.js +7 -0
  70. package/build/theme/commands/ui/theme_error.js +29 -0
  71. package/build/theme/commands/ui/theme_work_url_mismatch.js +17 -0
  72. package/build/theme/commands/ui/unpermitted_command_error.js +18 -0
  73. package/build/theme/features/theme/actions/api/theme_actions_api.js +3 -0
  74. package/build/theme/features/theme/actions/service/theme_actions_service.js +15 -3
  75. package/build/theme/features/theme/actions/service/theme_actions_service_constants.js +1 -0
  76. package/build/theme/features/theme/actions/theme_actions_constants.js +5 -2
  77. package/build/theme/features/theme/actions/theme_actions_initializer.js +1 -1
  78. package/build/theme/features/theme/actions/theme_actions_utils.js +60 -7
  79. package/build/theme/features/theme/delete/api/theme_delete_api.js +13 -0
  80. package/build/theme/features/theme/delete/http/theme_delete_http_api.js +17 -0
  81. package/build/theme/features/theme/delete/service/theme_delete_service.js +31 -0
  82. package/build/theme/features/theme/delete/theme_delete_constants.js +2 -0
  83. package/build/theme/features/theme/delete/theme_delete_initalizer.js +20 -0
  84. package/build/theme/features/theme/fetch/service/theme_fetch_service.js +30 -10
  85. package/build/theme/features/theme/info/theme_info_utils.js +9 -0
  86. package/build/theme/features/theme/init/service/theme_init_service.js +9 -4
  87. package/build/theme/features/theme/init/theme_init_initializer.js +3 -3
  88. package/build/theme/features/theme/merge/api/theme_merge_api.js +0 -12
  89. package/build/theme/features/theme/merge/service/theme_merge_service.js +20 -28
  90. package/build/theme/features/theme/push/service/theme_push_service.js +67 -166
  91. package/build/theme/features/theme/push/theme_push_constants.js +2 -0
  92. package/build/theme/features/theme/push/theme_push_errors_factory.js +7 -4
  93. package/build/theme/features/theme/push/theme_push_initializer.js +1 -7
  94. package/build/theme/features/theme/push/theme_push_utils.js +25 -0
  95. package/build/theme/features/theme/skinstore/api/theme_skinstore_api.js +19 -0
  96. package/build/theme/features/theme/skinstore/http/theme_skinstore_http_api.js +17 -0
  97. package/build/theme/features/theme/skinstore/service/theme_skinstore_service.js +32 -0
  98. package/build/theme/features/theme/skinstore/theme_publish_constants.js +4 -0
  99. package/build/theme/features/theme/skinstore/theme_skinstore_initialzier.js +20 -0
  100. package/build/theme/features/theme/utils/files_structure/theme_file_structure_errors_factory.js +10 -0
  101. package/build/theme/features/theme/utils/files_structure/theme_files_structure_utils.js +76 -0
  102. package/build/theme/features/theme/utils/hidden_directory/hidden_directory_utils.js +32 -0
  103. package/build/theme/features/theme/utils/meta_data/theme_meta_data_constants.js +1 -0
  104. package/build/theme/features/theme/utils/meta_data/theme_meta_data_error_factory.js +15 -0
  105. package/build/theme/features/theme/utils/meta_data/theme_meta_data_utils.js +39 -0
  106. package/build/theme/features/theme/utils/{directories → resources}/theme_resources_with_id_directory_utils.js +3 -14
  107. package/build/theme/features/theme/utils/theme_images_utils.js +1 -19
  108. package/build/theme/features/theme/verify/api/theme_verify_api.js +13 -0
  109. package/build/theme/features/theme/verify/http/theme_verify_http_api.js +30 -0
  110. package/build/theme/features/theme/verify/theme_verify_constants.js +2 -0
  111. package/build/theme/features/theme/verify/theme_verify_initializer.js +19 -0
  112. package/build/theme/features/theme/verify/verify/theme_verify_service.js +55 -0
  113. package/build/theme/features/themes/list/api/themes_list_api.js +3 -0
  114. package/build/theme/features/themes/list/services/themes_list_service.js +13 -7
  115. package/build/theme/hooks/{ensure_theme_meta_data_untouched.js → ensure_theme_meta_data_untouched_hook.js} +2 -2
  116. package/build/theme/hooks/theme_checksums/ensure_theme_current_checksums_up_to_date_constants.js +1 -2
  117. package/build/theme/hooks/theme_checksums/{ensure_theme_current_checksums_up_to_date.js → ensure_theme_current_checksums_up_to_date_hook.js} +2 -5
  118. package/build/theme/hooks/themes_actions/ensure_themes_actions_hook.js +1 -0
  119. package/build/theme/hooks/themes_actions/ensure_themes_actions_hook_constants.js +1 -1
  120. package/build/theme/index.js +34 -8
  121. package/build/theme/utils/directory_validator/directory_validator_constants.js +2 -6
  122. package/build/theme/utils/directory_validator/directory_validator_utils.js +7 -25
  123. package/build/ui/box.js +2 -0
  124. package/build/ui/color_constants.js +30 -0
  125. package/build/ui/command.js +6 -0
  126. package/build/ui/file_name.js +6 -0
  127. package/build/ui/flag.js +6 -0
  128. package/build/ui/icons/error_icon.js +7 -0
  129. package/build/ui/icons/info_icon.js +7 -0
  130. package/build/ui/icons/success_icon.js +7 -0
  131. package/build/ui/icons/warning_icon.js +7 -0
  132. package/build/ui/link.js +8 -0
  133. package/build/ui/list/list.js +10 -0
  134. package/build/ui/list/list_constants.js +4 -0
  135. package/build/ui/list/list_item.js +11 -0
  136. package/build/ui/message_box/error.js +4 -0
  137. package/build/ui/message_box/info.js +4 -0
  138. package/build/ui/message_box/message_box.js +11 -0
  139. package/build/ui/message_box/message_box_constants.js +24 -0
  140. package/build/ui/message_box/success.js +4 -0
  141. package/build/ui/message_box/warning.js +4 -0
  142. package/build/ui/prompts/prompt_confirmation.js +11 -0
  143. package/build/ui/prompts/prompt_input.js +10 -0
  144. package/build/ui/table/t_cell.js +7 -0
  145. package/build/ui/table/t_header.js +9 -0
  146. package/build/ui/table/t_row.js +5 -0
  147. package/build/ui/table/table.js +18 -0
  148. package/build/ui/text.js +2 -0
  149. package/build/ui/tip.js +9 -0
  150. package/build/ui/ui_dump/ui_component_box.js +9 -0
  151. package/build/ui/ui_dump/ui_dump.js +53 -0
  152. package/build/ui/ui_dump/ui_dump_constants.js +21 -0
  153. package/build/ui/ui_utils.js +11 -0
  154. package/build/ui/validation_errors/validation_error_content.js +19 -0
  155. package/build/ui/validation_errors/validation_errors.js +21 -0
  156. package/build/ui/validation_errors/validation_errors_utils.js +17 -0
  157. package/build/utils/checksums/checksums_utils.js +9 -26
  158. package/build/utils/download_file/download_file_errors_factory.js +1 -1
  159. package/build/utils/download_file/download_file_utils.js +4 -2
  160. package/build/utils/fs/errors/stream_read_error.js +1 -1
  161. package/build/utils/fs/errors/stream_write_error.js +1 -1
  162. package/build/utils/fs/fs_utils.js +12 -1
  163. package/build/utils/path_utils.js +18 -2
  164. package/build/utils/platform_utils.js +3 -0
  165. package/build/utils/zip/create_zip_utils.js +1 -1
  166. package/build/utils/zip/errors/create_zip_error.js +1 -1
  167. package/build/utils/zip/errors/open_zip_error.js +1 -1
  168. package/oclif.config.js +3 -3
  169. package/package.json +14 -9
  170. package/build/cli/commands/files_diff_command.js +0 -174
  171. package/build/theme/commands/theme_init_command.js +0 -53
  172. package/build/theme/commands/theme_list_command.js +0 -16
  173. package/build/theme/commands/theme_pull_command.js +0 -126
  174. package/build/theme/commands/theme_push_command.js +0 -65
  175. package/build/theme/commands/theme_show_changes_command.js +0 -60
  176. package/build/theme/features/theme/directory/theme_directory_utils.js +0 -76
  177. package/build/theme/features/theme/publish/theme_publish_constants.js +0 -2
  178. package/build/theme/features/theme/utils/checksums/theme_checksums_utils.js +0 -94
  179. /package/build/cli/{features → class}/caches/cache_factory.js +0 -0
  180. /package/build/cli/{features → class}/caches/json_cache/json_cache.js +0 -0
  181. /package/build/cli/{features → class}/caches/memory_cache.js +0 -0
  182. /package/build/cli/class/errors/{app_error → app}/app_error.js +0 -0
  183. /package/build/cli/class/errors/{app_error → app}/app_error_constants.js +0 -0
  184. /package/build/theme/features/theme/{publish → skinstore}/theme_publish_utils.js +0 -0
@@ -1,60 +0,0 @@
1
- import { BaseThemeCommand } from '../class/base_theme_command.js';
2
- import { CLI_AUTH_API_NAME } from '../../cli/auth/cli_auth_constants.js';
3
- import { THEME_MERGE_API_NAME } from '../features/theme/merge/theme_merge_constants.js';
4
- import { EXECUTION_CONTEXT_API_NAME, EXECUTION_CONTEXTS } from '../../cli/features/execution_context/execution_context_constants.js';
5
- import { THEME_FETCH_API_NAME, THEME_FETCH_TYPES } from '../features/theme/fetch/theme_fetch_constants.js';
6
- import tmp from 'tmp-promise';
7
- import { THEME_ACTIONS_API_NAME, THEME_ACTIONS_TYPES } from '../features/theme/actions/theme_actions_constants.js';
8
- import { join } from '../../utils/path_utils.js';
9
- import ora from 'ora';
10
- export class ThemeShowChangesCommand extends BaseThemeCommand {
11
- static description = 'Show local theme changes';
12
- async run() {
13
- const cliAuthApi = this.getApi(CLI_AUTH_API_NAME);
14
- const credentials = cliAuthApi.getCredentials();
15
- if (!credentials)
16
- this.error('Credentials not found. Please authorize first.');
17
- const executionContextApi = this.getApi(EXECUTION_CONTEXT_API_NAME);
18
- const themeMergeApi = this.getApi(THEME_MERGE_API_NAME);
19
- const themeFetchApi = this.getApi(THEME_FETCH_API_NAME);
20
- const themeActionsApi = this.getApi(THEME_ACTIONS_API_NAME);
21
- const executionContext = await executionContextApi.getExecutionContext();
22
- if (executionContext.type !== EXECUTION_CONTEXTS.theme)
23
- this.error('You cannot run this command outside theme context.');
24
- const { path: tmpDir } = await tmp.dir({ unsafeCleanup: true });
25
- const pullAction = themeActionsApi.getThemeAction({
26
- actionType: THEME_ACTIONS_TYPES.pull,
27
- themeId: executionContext.themeId,
28
- credentials
29
- });
30
- const spinner = ora('Pulling theme...').start();
31
- try {
32
- spinner.stopAndPersist({
33
- symbol: '\u2713',
34
- text: 'Calculating theme changes...'
35
- });
36
- const { name } = await themeFetchApi.fetchTheme({
37
- credentials,
38
- action: pullAction,
39
- config: {
40
- fetchType: THEME_FETCH_TYPES.full,
41
- dist: tmpDir
42
- }
43
- });
44
- const changes = await themeMergeApi.getChangesBetweenThemes(executionContext.themeRootDir, join(tmpDir, name));
45
- spinner.clear();
46
- if (!changes.length) {
47
- this.log('No changes found in your theme.');
48
- return;
49
- }
50
- this.log('Changes:\n');
51
- changes.forEach(([action, name]) => {
52
- console.log(name, ' - ', action);
53
- });
54
- }
55
- catch (err) {
56
- //TODO
57
- this.error(`Failed to fetch theme changes: ${err instanceof Error ? err.message : 'Unknown error'}`);
58
- }
59
- }
60
- }
@@ -1,76 +0,0 @@
1
- import { closestFile, fileExists, getAllFilesNamesInside, readJSONFile, writeJSONFile } from '../../../../utils/fs/fs_utils.js';
2
- import { SHOPER_THEME_METADATA_DIR } from '../../../constants/directory_contstants.js';
3
- import { join } from '../../../../utils/path_utils.js';
4
- import { validateDirectory } from '../../../utils/directory_validator/directory_validator_utils.js';
5
- import { THEME_CURRENT_CHECKSUMS_FILE_NAME, THEME_CURRENT_CHECKSUMS_VERITY_FILE_NAME, THEME_FILES_STRUCTURE_FILE_NAME, THEME_INITIAL_CHECKSUMS_FILE_NAME, THEME_INITIAL_CHECKSUMS_VERITY_FILE_NAME } from '../theme_constants.js';
6
- import { computeFileChecksum } from '../../../../utils/checksums/checksums_utils.js';
7
- import { ThemeChecksumsUtils } from '../utils/checksums/theme_checksums_utils.js';
8
- /**
9
- * jezli modzisz lokalnie
10
- * robisz pull, ale na remove nic ise nie zmienia
11
- * tow nie pownno byc pytania
12
- */
13
- export class ThemeDirectoryUtils {
14
- static async closestThemeRootDirectory(path) {
15
- return closestFile(SHOPER_THEME_METADATA_DIR, path);
16
- }
17
- static async isThemeRootDirectory(path) {
18
- return fileExists(join(path, SHOPER_THEME_METADATA_DIR));
19
- }
20
- static getThemeMetaDataDirPath(themeDirectory) {
21
- return join(themeDirectory, SHOPER_THEME_METADATA_DIR);
22
- }
23
- static async getThemeDirectoryMetadata(themeDirectory) {
24
- const filePath = join(this.getThemeMetaDataDirPath(themeDirectory), 'metadata.json');
25
- const metadataFileContent = await readJSONFile(filePath);
26
- return {
27
- themeId: String(metadataFileContent.skin_id)
28
- };
29
- }
30
- static async getThemeFilesStructure(themeDirectory) {
31
- return await readJSONFile(join(themeDirectory, SHOPER_THEME_METADATA_DIR, THEME_FILES_STRUCTURE_FILE_NAME));
32
- }
33
- static async writeThemeFilesStructure(themeDirectory, filesStructure) {
34
- const filePath = join(themeDirectory, SHOPER_THEME_METADATA_DIR, THEME_FILES_STRUCTURE_FILE_NAME);
35
- await writeJSONFile(filePath, filesStructure);
36
- }
37
- static async getFilesPermissions(themeDirectory) {
38
- //TODO convert paths sepearator to os
39
- const fileStructure = await ThemeDirectoryUtils.getThemeFilesStructure(themeDirectory);
40
- return Object.entries(fileStructure).reduce((acc, [key, value]) => {
41
- return {
42
- ...acc,
43
- [key]: value.permissions
44
- };
45
- }, {});
46
- }
47
- static async validateThemeDirectoryStructure({ checksums, permissions, rootDirectory }) {
48
- return await validateDirectory({
49
- permissions,
50
- checksums,
51
- rootDirectory
52
- });
53
- }
54
- static async ensureFilesInsideThemeMetaDataDirectoryUntouched(themeDirectory) {
55
- const themeMetadataPath = this.getThemeMetaDataDirPath(themeDirectory);
56
- const checksums = await ThemeChecksumsUtils.getThemeCurrentChecksums(themeDirectory);
57
- if (!checksums)
58
- throw new Error(`Checksums file not found in theme metadata directory: ${themeMetadataPath}`);
59
- if (!(await ThemeChecksumsUtils.verifyThemeChecksums(themeDirectory)))
60
- throw new Error('Theme checksum file is not valid');
61
- const filesNames = (await getAllFilesNamesInside(themeMetadataPath)).filter((fileName) => fileName !== THEME_CURRENT_CHECKSUMS_FILE_NAME &&
62
- fileName !== THEME_CURRENT_CHECKSUMS_VERITY_FILE_NAME &&
63
- fileName !== THEME_INITIAL_CHECKSUMS_FILE_NAME &&
64
- fileName !== THEME_INITIAL_CHECKSUMS_VERITY_FILE_NAME);
65
- for (const fileName of filesNames) {
66
- if (fileName === THEME_CURRENT_CHECKSUMS_FILE_NAME)
67
- continue;
68
- const fileFullPath = join(themeMetadataPath, fileName);
69
- const fileRelativePath = join(SHOPER_THEME_METADATA_DIR, fileName);
70
- const currentChecksum = await computeFileChecksum(fileFullPath);
71
- if (currentChecksum !== checksums[fileRelativePath]) {
72
- throw new Error(`File ${fileName} inside theme metadata directory (${themeMetadataPath}) has been modified. You cannot modify files inside .shoper directory`);
73
- }
74
- }
75
- }
76
- }
@@ -1,2 +0,0 @@
1
- export const THEME_SKINSTORE_LOCATION = 'skinstore';
2
- export const THEME_SKINSTORE_SETTINGS_FILE_NAME = 'settings.json';
@@ -1,94 +0,0 @@
1
- import { join } from '../../../../../utils/path_utils.js';
2
- import { THEME_CURRENT_CHECKSUMS_FILE_NAME, THEME_CURRENT_CHECKSUMS_VERITY_FILE_NAME, THEME_INITIAL_CHECKSUMS_FILE_NAME, THEME_INITIAL_CHECKSUMS_VERITY_FILE_NAME } from '../../theme_constants.js';
3
- import { createWriteStream } from 'fs';
4
- import { copyFile, readJSONFile, removeFile } from '../../../../../utils/fs/fs_utils.js';
5
- import { ThemeChecksumsErrorFactory } from './theme_checksums_error_factory.js';
6
- import { ThemeDirectoryUtils } from '../../directory/theme_directory_utils.js';
7
- import { computeFileChecksum } from '../../../../../utils/checksums/checksums_utils.js';
8
- import { JSON_FILE_INDENT } from '../../../../../cli/cli_constants.js';
9
- export class ThemeChecksumsUtils {
10
- static getCurrentThemeChecksumsFilePath(themeDir) {
11
- return join(ThemeDirectoryUtils.getThemeMetaDataDirPath(themeDir), THEME_CURRENT_CHECKSUMS_FILE_NAME);
12
- }
13
- static getInitialThemeChecksumsFilePath(themeDir) {
14
- return join(ThemeDirectoryUtils.getThemeMetaDataDirPath(themeDir), THEME_INITIAL_CHECKSUMS_FILE_NAME);
15
- }
16
- static getCurrentThemeChecksumsVerificationFilePath(themeDir) {
17
- return join(ThemeDirectoryUtils.getThemeMetaDataDirPath(themeDir), THEME_CURRENT_CHECKSUMS_VERITY_FILE_NAME);
18
- }
19
- static getInitialThemeChecksumsVerificationFilePath(themeDir) {
20
- return join(ThemeDirectoryUtils.getThemeMetaDataDirPath(themeDir), THEME_INITIAL_CHECKSUMS_VERITY_FILE_NAME);
21
- }
22
- static async createThemeChecksumsFiles(themeDir, checksums) {
23
- return new Promise((resolve, reject) => {
24
- const currentChecksumFilePath = this.getCurrentThemeChecksumsFilePath(themeDir);
25
- const initialChecksumFilePath = this.getInitialThemeChecksumsFilePath(themeDir);
26
- const checksumStream = createWriteStream(initialChecksumFilePath);
27
- checksumStream.write(JSON.stringify(checksums, null, JSON_FILE_INDENT));
28
- checksumStream.end();
29
- checksumStream
30
- .on('finish', async () => {
31
- const initialChecksumVerifyFilePath = this.getInitialThemeChecksumsVerificationFilePath(themeDir);
32
- const currentChecksumVerifyFilePath = this.getCurrentThemeChecksumsVerificationFilePath(themeDir);
33
- await this.createThemeChecksumVerifyFile(initialChecksumFilePath, initialChecksumVerifyFilePath);
34
- await copyFile(initialChecksumFilePath, currentChecksumFilePath);
35
- await copyFile(initialChecksumVerifyFilePath, currentChecksumVerifyFilePath);
36
- resolve();
37
- })
38
- .on('error', async (err) => {
39
- await removeFile(initialChecksumFilePath, { force: true });
40
- reject(ThemeChecksumsErrorFactory.createThemeChecksumError(err.stack));
41
- });
42
- });
43
- }
44
- static async createThemeCurrentChecksumsFile(themeDir, checksums) {
45
- return new Promise((resolve, reject) => {
46
- const currentChecksumFilePath = this.getCurrentThemeChecksumsFilePath(themeDir);
47
- const checksumStream = createWriteStream(currentChecksumFilePath);
48
- checksumStream.write(JSON.stringify(checksums, null, JSON_FILE_INDENT));
49
- checksumStream.end();
50
- checksumStream
51
- .on('finish', async () => {
52
- const currentChecksumVerifyFilePath = this.getCurrentThemeChecksumsVerificationFilePath(themeDir);
53
- await this.createThemeChecksumVerifyFile(currentChecksumFilePath, currentChecksumVerifyFilePath);
54
- resolve();
55
- })
56
- .on('error', async (err) => {
57
- await removeFile(currentChecksumFilePath, { force: true });
58
- reject(ThemeChecksumsErrorFactory.createThemeChecksumError(err.stack));
59
- });
60
- });
61
- }
62
- static async createThemeChecksumVerifyFile(checksumFilePath, checksumVerifyFullPath) {
63
- const checksumVerifyStream = createWriteStream(checksumVerifyFullPath);
64
- const checksumVerify = await computeFileChecksum(checksumFilePath);
65
- checksumVerifyStream
66
- .on('error', async (err) => {
67
- await removeFile(checksumFilePath, { force: true });
68
- throw ThemeChecksumsErrorFactory.createThemeChecksumError(err.stack);
69
- })
70
- .write(JSON.stringify(checksumVerify));
71
- checksumVerifyStream.end();
72
- }
73
- static async getThemeCurrentChecksums(themeDir) {
74
- const checksumFilePath = this.getCurrentThemeChecksumsFilePath(themeDir);
75
- return await readJSONFile(checksumFilePath);
76
- }
77
- static async getThemeInitialChecksums(themeDir) {
78
- const checksumFilePath = this.getInitialThemeChecksumsFilePath(themeDir);
79
- return await readJSONFile(checksumFilePath);
80
- }
81
- static async verifyThemeChecksums(themeDir) {
82
- const initialChecksumFilePath = this.getInitialThemeChecksumsFilePath(themeDir);
83
- const initialChecksumVerifyFilePath = this.getInitialThemeChecksumsVerificationFilePath(themeDir);
84
- const initialChecksum = await computeFileChecksum(initialChecksumFilePath);
85
- const initialChecksumVerify = await readJSONFile(initialChecksumVerifyFilePath);
86
- return initialChecksum === initialChecksumVerify;
87
- }
88
- static async getThemeCurrentChecksumsVerification(themeDir) {
89
- return await readJSONFile(this.getCurrentThemeChecksumsVerificationFilePath(themeDir));
90
- }
91
- static async getInitialChecksumsVerification(themeDir) {
92
- return await readJSONFile(this.getInitialThemeChecksumsVerificationFilePath(themeDir));
93
- }
94
- }