@shoper/cli 0.1.0-8 → 0.2.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/cli/auth/cli_auth_errors_factory.js +1 -1
- package/build/cli/auth/tokens/cli_auth_tokens_errors_factory.js +1 -1
- package/build/cli/auth/tokens/cli_auth_tokens_initalizer.js +1 -1
- package/build/cli/class/errors/file_system_errors_factory.js +1 -1
- package/build/cli/class/errors/http/http_errors_constants.js +1 -0
- package/build/cli/class/errors/{http_errors_factory.js → http/http_errors_factory.js} +3 -2
- package/build/cli/commands/auth/cli_auth_add_token_command.js +22 -19
- package/build/cli/commands/auth/cli_auth_commands_constants.js +3 -0
- package/build/cli/commands/auth/cli_auth_commands_utils.js +46 -0
- package/build/cli/commands/auth/cli_auth_list_tokens_command.js +19 -6
- package/build/cli/commands/auth/cli_auth_remove_token_command.js +36 -10
- package/build/cli/commands/auth/cli_auth_switch_token_command.js +19 -9
- package/build/cli/commands/auth/ui/invalid_token_index_error.js +11 -0
- package/build/cli/commands/auth/ui/missing_credentials_error.js +9 -0
- package/build/cli/commands/auth/ui/missing_token_index_error.js +19 -0
- package/build/cli/commands/cli_ui_dump_command.js +11 -0
- package/build/cli/commands/cli_update_command.js +13 -4
- package/build/cli/commands/commands_constants.js +2 -1
- package/build/cli/core/cli_setup.js +5 -1
- package/build/cli/features/controls/controls_constants.js +12 -0
- package/build/cli/features/controls/controls_dto_mappers.js +55 -0
- package/build/cli/features/controls/ui/controls_mappers.js +62 -0
- package/build/cli/features/controls/ui/form.js +4 -0
- package/build/cli/features/controls/ui/form_constants.js +7 -0
- package/build/cli/features/controls/validators/greater_eq_than_validator.js +5 -0
- package/build/cli/features/controls/validators/length_validator.js +6 -0
- package/build/cli/features/controls/validators/required_validator.js +5 -0
- package/build/cli/features/controls/validators/validator_constants.js +13 -0
- package/build/cli/features/execution_context/execution_context_service.js +5 -5
- package/build/cli/features/http_requester/http_requester_initializer.js +1 -1
- package/build/cli/hooks/authorization/ensure_authorization_hook.js +2 -2
- package/build/cli/hooks/authorization/ensure_authorization_hook_constants.js +8 -8
- package/build/index.js +37 -19
- package/build/theme/class/checksums/theme_checksums.js +174 -0
- package/build/theme/{features/theme/utils → class}/checksums/theme_checksums_error_factory.js +1 -1
- package/build/theme/class/checksums/theme_checksums_utils.js +17 -0
- package/build/theme/class/fetch_resources/fetch_resources.js +5 -3
- package/build/theme/class/fetch_resources/fetch_resources_errors_factory.js +1 -1
- package/build/theme/class/fetch_resources/fetch_resources_utils.js +4 -1
- package/build/theme/commands/delete/theme_delete_command.js +111 -0
- package/build/theme/commands/delete/ui/theme_deleted_successfully.js +15 -0
- package/build/theme/commands/delete/ui/theme_deletion_warning.js +10 -0
- package/build/theme/commands/info/theme_info_command.js +94 -0
- package/build/theme/commands/info/theme_info_command_utils.js +39 -0
- package/build/theme/commands/init/theme_init_command.js +97 -0
- package/build/theme/commands/init/ui/theme_created_success.js +15 -0
- package/build/theme/commands/list/theme_list_command.js +25 -0
- package/build/theme/commands/list/theme_list_command_utils.js +27 -0
- package/build/theme/commands/publish/theme_publish_command.js +92 -0
- package/build/theme/commands/pull/theme_pull_command.js +194 -0
- package/build/theme/commands/pull/ui/theme_pull_id_mismatch_error.js +7 -0
- package/build/theme/commands/pull/ui/theme_pull_unpublished_changes_warning.js +10 -0
- package/build/theme/commands/pull/ui/theme_pulled_success.js +5 -0
- package/build/theme/commands/push/theme_push_command.js +134 -0
- package/build/theme/commands/push/ui/theme_push_skip_into.js +7 -0
- package/build/theme/commands/push/ui/theme_pushed_success.js +5 -0
- package/build/theme/commands/push/ui/theme_unpermitted_actions_error.js +12 -0
- package/build/theme/commands/theme_commands_constants.js +4 -1
- package/build/theme/commands/theme_show_changes_command.js +1 -0
- package/build/theme/commands/theme_verify_command.js +8 -7
- package/build/theme/commands/ui/invalid_theme_id.js +11 -0
- package/build/theme/commands/ui/missing_theme_files.js +15 -0
- package/build/theme/commands/ui/missing_theme_id_error.js +13 -0
- package/build/theme/commands/ui/ouside_of_theme_directory_context_error.js +7 -0
- package/build/theme/commands/ui/theme_directory_context_error.js +7 -0
- package/build/theme/commands/ui/theme_work_url_mismatch.js +17 -0
- package/build/theme/commands/ui/unpermitted_command_error.js +18 -0
- package/build/theme/features/theme/actions/api/theme_actions_api.js +3 -0
- package/build/theme/features/theme/actions/service/theme_actions_service.js +15 -3
- package/build/theme/features/theme/actions/service/theme_actions_service_constants.js +1 -0
- package/build/theme/features/theme/actions/theme_actions_constants.js +3 -1
- package/build/theme/features/theme/actions/theme_actions_initializer.js +1 -1
- package/build/theme/features/theme/actions/theme_actions_utils.js +20 -7
- package/build/theme/features/theme/delete/api/theme_delete_api.js +13 -0
- package/build/theme/features/theme/delete/http/theme_delete_http_api.js +17 -0
- package/build/theme/features/theme/delete/service/theme_delete_service.js +31 -0
- package/build/theme/features/theme/delete/theme_delete_constants.js +2 -0
- package/build/theme/features/theme/delete/theme_delete_initalizer.js +20 -0
- package/build/theme/features/theme/fetch/service/theme_fetch_service.js +30 -10
- package/build/theme/features/theme/info/theme_info_utils.js +9 -0
- package/build/theme/features/theme/init/service/theme_init_service.js +9 -4
- package/build/theme/features/theme/merge/api/theme_merge_api.js +0 -12
- package/build/theme/features/theme/merge/service/theme_merge_service.js +20 -28
- package/build/theme/features/theme/push/service/theme_push_service.js +102 -73
- package/build/theme/features/theme/push/theme_push_constants.js +2 -0
- package/build/theme/features/theme/push/theme_push_errors_factory.js +7 -4
- package/build/theme/features/theme/push/theme_push_initializer.js +0 -3
- package/build/theme/features/theme/push/theme_push_utils.js +25 -0
- package/build/theme/features/theme/skinstore/api/theme_skinstore_api.js +19 -0
- package/build/theme/features/theme/skinstore/http/theme_skinstore_http_api.js +17 -0
- package/build/theme/features/theme/skinstore/service/theme_skinstore_service.js +32 -0
- package/build/theme/features/theme/skinstore/theme_publish_constants.js +4 -0
- package/build/theme/features/theme/skinstore/theme_skinstore_initialzier.js +20 -0
- package/build/theme/features/theme/utils/files_structure/theme_files_structure_utils.js +40 -0
- package/build/theme/features/theme/utils/hidden_directory/hidden_directory_utils.js +32 -0
- package/build/theme/features/theme/utils/meta_data/theme_meta_data_constants.js +1 -0
- package/build/theme/features/theme/utils/meta_data/theme_meta_data_error_factory.js +15 -0
- package/build/theme/features/theme/utils/meta_data/theme_meta_data_utils.js +39 -0
- package/build/theme/features/theme/utils/{directories → resources}/theme_resources_with_id_directory_utils.js +3 -14
- package/build/theme/features/theme/utils/theme_images_utils.js +5 -6
- package/build/theme/features/themes/list/api/themes_list_api.js +3 -0
- package/build/theme/features/themes/list/services/themes_list_service.js +13 -7
- package/build/theme/hooks/{ensure_theme_meta_data_untouched.js → ensure_theme_meta_data_untouched_hook.js} +2 -2
- package/build/theme/hooks/theme_checksums/ensure_theme_current_checksums_up_to_date_constants.js +1 -1
- 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
- package/build/theme/hooks/themes_actions/ensure_themes_actions_hook.js +1 -0
- package/build/theme/hooks/themes_actions/ensure_themes_actions_hook_constants.js +1 -0
- package/build/theme/index.js +11 -5
- package/build/theme/utils/directory_validator/directory_validator_constants.js +2 -6
- package/build/theme/utils/directory_validator/directory_validator_utils.js +18 -38
- package/build/ui/box.js +2 -0
- package/build/ui/color_constants.js +30 -0
- package/build/ui/command.js +6 -0
- package/build/ui/file_name.js +6 -0
- package/build/ui/flag.js +6 -0
- package/build/ui/icons/error_icon.js +7 -0
- package/build/ui/icons/info_icon.js +7 -0
- package/build/ui/icons/success_icon.js +7 -0
- package/build/ui/icons/warning_icon.js +7 -0
- package/build/ui/link.js +8 -0
- package/build/ui/list/list.js +10 -0
- package/build/ui/list/list_constants.js +4 -0
- package/build/ui/list/list_item.js +11 -0
- package/build/ui/message_box/error.js +4 -0
- package/build/ui/message_box/info.js +4 -0
- package/build/ui/message_box/message_box.js +11 -0
- package/build/ui/message_box/message_box_constants.js +24 -0
- package/build/ui/message_box/success.js +4 -0
- package/build/ui/message_box/warning.js +4 -0
- package/build/ui/prompts/prompt_confirmation.js +11 -0
- package/build/ui/prompts/prompt_input.js +10 -0
- package/build/ui/table/t_cell.js +7 -0
- package/build/ui/table/t_header.js +9 -0
- package/build/ui/table/t_row.js +5 -0
- package/build/ui/table/table.js +18 -0
- package/build/ui/text.js +2 -0
- package/build/ui/tip.js +9 -0
- package/build/ui/ui_dump/ui_component_box.js +9 -0
- package/build/ui/ui_dump/ui_dump.js +53 -0
- package/build/ui/ui_dump/ui_dump_constants.js +21 -0
- package/build/ui/ui_utils.js +11 -0
- package/build/ui/validation_errors/validation_error_content.js +19 -0
- package/build/ui/validation_errors/validation_errors.js +21 -0
- package/build/ui/validation_errors/validation_errors_utils.js +17 -0
- package/build/utils/checksums/checksums_utils.js +9 -26
- package/build/utils/download_file/download_file_errors_factory.js +1 -1
- package/build/utils/download_file/download_file_utils.js +4 -2
- package/build/utils/fs/errors/stream_read_error.js +1 -1
- package/build/utils/fs/errors/stream_write_error.js +1 -1
- package/build/utils/fs/fs_utils.js +17 -3
- package/build/utils/path_utils.js +20 -1
- package/build/utils/platform_utils.js +3 -0
- package/build/utils/zip/create_zip_utils.js +1 -1
- package/build/utils/zip/errors/create_zip_error.js +1 -1
- package/build/utils/zip/errors/open_zip_error.js +1 -1
- package/oclif.config.js +2 -2
- package/package.json +15 -8
- package/build/theme/commands/theme_init_command.js +0 -53
- package/build/theme/commands/theme_list_command.js +0 -16
- package/build/theme/commands/theme_pull_command.js +0 -124
- package/build/theme/commands/theme_push_command.js +0 -65
- package/build/theme/features/theme/directory/theme_directory_utils.js +0 -76
- package/build/theme/features/theme/publish/theme_publish_constants.js +0 -2
- package/build/theme/features/theme/utils/checksums/theme_checksums_utils.js +0 -94
- /package/build/cli/{features → class}/caches/cache_factory.js +0 -0
- /package/build/cli/{features → class}/caches/json_cache/json_cache.js +0 -0
- /package/build/cli/{features → class}/caches/memory_cache.js +0 -0
- /package/build/cli/class/errors/{app_error → app}/app_error.js +0 -0
- /package/build/cli/class/errors/{app_error → app}/app_error_constants.js +0 -0
- /package/build/theme/features/theme/{publish → skinstore}/theme_publish_utils.js +0 -0
|
@@ -1,65 +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 { EXECUTION_CONTEXT_API_NAME, EXECUTION_CONTEXTS } from '../../cli/features/execution_context/execution_context_constants.js';
|
|
4
|
-
import { THEME_ACTIONS_API_NAME, THEME_ACTIONS_TYPES } from '../features/theme/actions/theme_actions_constants.js';
|
|
5
|
-
import { THEME_PUSH_API_NAME } from '../features/theme/push/theme_push_constants.js';
|
|
6
|
-
import { ThemeDirectoryUtils } from '../features/theme/directory/theme_directory_utils.js';
|
|
7
|
-
import { mapChecksumToTree } from '../../utils/checksums/checksums_utils.js';
|
|
8
|
-
import { mapToPermissionsTree } from '../utils/directory_validator/directory_validator_utils.js';
|
|
9
|
-
import { ThemeChecksumsUtils } from '../features/theme/utils/checksums/theme_checksums_utils.js';
|
|
10
|
-
export class ThemePushCommand extends BaseThemeCommand {
|
|
11
|
-
static description = 'Upload theme files to the shop';
|
|
12
|
-
async run() {
|
|
13
|
-
const cliAuthApi = this.getApi(CLI_AUTH_API_NAME);
|
|
14
|
-
const themePushApi = this.getApi(THEME_PUSH_API_NAME);
|
|
15
|
-
const themeActionsApi = this.getApi(THEME_ACTIONS_API_NAME);
|
|
16
|
-
const executionContextApi = this.getApi(EXECUTION_CONTEXT_API_NAME);
|
|
17
|
-
const credentials = cliAuthApi.getCredentials();
|
|
18
|
-
if (!credentials)
|
|
19
|
-
this.error('Credentials not found. Please authorize first.');
|
|
20
|
-
const executionContext = await executionContextApi.getExecutionContext();
|
|
21
|
-
if (executionContext.type !== EXECUTION_CONTEXTS.theme)
|
|
22
|
-
this.error('You cannot run this command outside theme context.');
|
|
23
|
-
const pushAction = themeActionsApi.getThemeAction({
|
|
24
|
-
actionType: THEME_ACTIONS_TYPES.push,
|
|
25
|
-
themeId: executionContext.themeId,
|
|
26
|
-
credentials
|
|
27
|
-
});
|
|
28
|
-
if (!pushAction)
|
|
29
|
-
this.error(`You cannot push theme with id ${executionContext.themeId}`);
|
|
30
|
-
const checksums = await ThemeChecksumsUtils.getThemeCurrentChecksums(executionContext.themeRootDir);
|
|
31
|
-
const permissions = await ThemeDirectoryUtils.getFilesPermissions(executionContext.themeRootDir);
|
|
32
|
-
if (!checksums || !permissions)
|
|
33
|
-
this.error('Theme checksums or permissions not found. Please ensure you are in the correct theme directory.');
|
|
34
|
-
try {
|
|
35
|
-
const validationResult = await ThemeDirectoryUtils.validateThemeDirectoryStructure({
|
|
36
|
-
checksums: mapChecksumToTree(checksums),
|
|
37
|
-
permissions: mapToPermissionsTree(permissions),
|
|
38
|
-
rootDirectory: executionContext.themeRootDir
|
|
39
|
-
});
|
|
40
|
-
//TODO jak wysyla folder z nazwa posiadajaco \ na windows, wychodzimy
|
|
41
|
-
//TODO validacja folderów przed pushem
|
|
42
|
-
if (!validationResult.isValid) {
|
|
43
|
-
validationResult.unpermittedActions.forEach((unpermittedAction) => {
|
|
44
|
-
console.log('Unpermitted action:', unpermittedAction.type, unpermittedAction.path);
|
|
45
|
-
});
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const filesStructure = await ThemeDirectoryUtils.getThemeFilesStructure(executionContext.themeRootDir);
|
|
49
|
-
if (!filesStructure)
|
|
50
|
-
this.error('Theme files structure not found. Please ensure you are in the correct theme directory.');
|
|
51
|
-
await themePushApi.push({
|
|
52
|
-
credentials,
|
|
53
|
-
checksums,
|
|
54
|
-
filesStructure,
|
|
55
|
-
pushAction,
|
|
56
|
-
executionContext
|
|
57
|
-
});
|
|
58
|
-
console.log('Theme pushed successfully!');
|
|
59
|
-
}
|
|
60
|
-
catch (err) {
|
|
61
|
-
console.log(err);
|
|
62
|
-
this.error(`Failed to push theme: ${err instanceof Error ? err.message : String(err)}`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
@@ -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,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
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|