Skip to content

Commit 3d4243a

Browse files
Merge pull request #22 from contentstack/feat/DX-4942
feat: add support for assets in custom roles
2 parents 53745cc + 3e38d66 commit 3d4243a

File tree

8 files changed

+47
-14
lines changed

8 files changed

+47
-14
lines changed

packages/contentstack-bootstrap/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ $ npm install -g @contentstack/cli-cm-bootstrap
1515
$ csdx COMMAND
1616
running command...
1717
$ csdx (--version)
18-
@contentstack/cli-cm-bootstrap/1.19.0-beta.0 darwin-arm64 node-v22.14.0
18+
@contentstack/cli-cm-bootstrap/1.19.0-beta.1 darwin-arm64 node-v22.14.0
1919
$ csdx --help [COMMAND]
2020
USAGE
2121
$ csdx COMMAND

packages/contentstack-bootstrap/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@contentstack/cli-cm-bootstrap",
33
"description": "Bootstrap contentstack apps",
4-
"version": "1.19.0-beta.0",
4+
"version": "1.19.0-beta.1",
55
"author": "Contentstack",
66
"bugs": "https://github.com/contentstack/cli/issues",
77
"scripts": {
@@ -16,7 +16,7 @@
1616
"test:report": "nyc --reporter=lcov mocha \"test/**/*.test.js\""
1717
},
1818
"dependencies": {
19-
"@contentstack/cli-cm-seed": "~1.15.0-beta.1",
19+
"@contentstack/cli-cm-seed": "~1.15.0-beta.2",
2020
"@contentstack/cli-command": "~1.8.0-beta.0",
2121
"@contentstack/cli-config": "~1.20.0-beta.0",
2222
"@contentstack/cli-utilities": "~1.18.0-beta.0",
@@ -73,4 +73,4 @@
7373
}
7474
},
7575
"repository": "contentstack/cli"
76-
}
76+
}

packages/contentstack-clone/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ $ npm install -g @contentstack/cli-cm-clone
1616
$ csdx COMMAND
1717
running command...
1818
$ csdx (--version)
19-
@contentstack/cli-cm-clone/1.21.0-beta.0 darwin-arm64 node-v22.14.0
19+
@contentstack/cli-cm-clone/1.21.0-beta.1 darwin-arm64 node-v22.14.0
2020
$ csdx --help [COMMAND]
2121
USAGE
2222
$ csdx COMMAND

packages/contentstack-clone/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
22
"name": "@contentstack/cli-cm-clone",
33
"description": "Contentstack stack clone plugin",
4-
"version": "1.21.0-beta.0",
4+
"version": "1.21.0-beta.1",
55
"author": "Contentstack",
66
"bugs": "https://github.com/rohitmishra209/cli-cm-clone/issues",
77
"dependencies": {
88
"@colors/colors": "^1.6.0",
99
"@contentstack/cli-cm-export": "~1.24.0-beta.0",
10-
"@contentstack/cli-cm-import": "~1.32.0-beta.0",
10+
"@contentstack/cli-cm-import": "~1.32.0-beta.1",
1111
"@contentstack/cli-command": "~1.8.0-beta.0",
1212
"@contentstack/cli-utilities": "~1.18.0-beta.0",
1313
"@oclif/core": "^4.3.0",
@@ -82,4 +82,4 @@
8282
"cm:stack-clone": "O-CLN"
8383
}
8484
}
85-
}
85+
}

packages/contentstack-import/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ $ npm install -g @contentstack/cli-cm-import
4747
$ csdx COMMAND
4848
running command...
4949
$ csdx (--version)
50-
@contentstack/cli-cm-import/1.32.0-beta.0 darwin-arm64 node-v22.14.0
50+
@contentstack/cli-cm-import/1.32.0-beta.1 darwin-arm64 node-v22.14.0
5151
$ csdx --help [COMMAND]
5252
USAGE
5353
$ csdx COMMAND

packages/contentstack-import/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@contentstack/cli-cm-import",
33
"description": "Contentstack CLI plugin to import content into stack",
4-
"version": "1.32.0-beta.0",
4+
"version": "1.32.0-beta.1",
55
"author": "Contentstack",
66
"bugs": "https://github.com/contentstack/cli/issues",
77
"dependencies": {
@@ -94,4 +94,4 @@
9494
}
9595
},
9696
"repository": "https://github.com/contentstack/cli"
97-
}
97+
}

packages/contentstack-import/src/import/modules/custom-roles.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export default class ImportCustomRoles extends BaseClass {
1414
private customRolesUidMapperPath: string;
1515
private envUidMapperFolderPath: string;
1616
private entriesUidMapperFolderPath: string;
17+
private assetsUidMapperFolderPath: string;
1718
private createdCustomRolesPath: string;
1819
private customRolesFailsPath: string;
1920
private customRolesConfig: CustomRoleConfig;
@@ -25,6 +26,8 @@ export default class ImportCustomRoles extends BaseClass {
2526
private environmentsUidMap: Record<string, unknown>;
2627
private entriesUidMap: Record<string, unknown>;
2728
private localesUidMap: Record<string, unknown>;
29+
private assetsUidMap: Record<string, unknown>;
30+
private assetsFolderUidMap: Record<string, unknown>;
2831
public targetLocalesMap: Record<string, unknown>;
2932
public sourceLocalesMap: Record<string, unknown>;
3033

@@ -37,6 +40,7 @@ export default class ImportCustomRoles extends BaseClass {
3740
this.customRolesUidMapperPath = join(this.customRolesMapperPath, 'uid-mapping.json');
3841
this.envUidMapperFolderPath = join(this.importConfig.backupDir, 'mapper', 'environments');
3942
this.entriesUidMapperFolderPath = join(this.importConfig.backupDir, 'mapper', 'entries');
43+
this.assetsUidMapperFolderPath = join(this.importConfig.backupDir, 'mapper', 'assets');
4044
this.createdCustomRolesPath = join(this.customRolesMapperPath, 'success.json');
4145
this.customRolesFailsPath = join(this.customRolesMapperPath, 'fails.json');
4246
this.customRoles = {};
@@ -47,6 +51,8 @@ export default class ImportCustomRoles extends BaseClass {
4751
this.environmentsUidMap = {};
4852
this.entriesUidMap = {};
4953
this.localesUidMap = {};
54+
this.assetsUidMap = {};
55+
this.assetsFolderUidMap = {};
5056
}
5157

5258
/**
@@ -86,6 +92,16 @@ export default class ImportCustomRoles extends BaseClass {
8692
? (fsUtil.readFile(join(this.entriesUidMapperFolderPath, 'uid-mapping.json'), true) as Record<string, unknown>) || {}
8793
: {};
8894

95+
log.debug('Loading assets UID data...', this.importConfig.context);
96+
this.assetsUidMap = fileHelper.fileExistsSync(this.assetsUidMapperFolderPath)
97+
? (fsUtil.readFile(join(this.assetsUidMapperFolderPath, 'uid-mapping.json'), true) as Record<string, unknown>) || {}
98+
: {};
99+
100+
log.debug('Loading asset folders UID data...', this.importConfig.context);
101+
this.assetsFolderUidMap = fileHelper.fileExistsSync(this.assetsUidMapperFolderPath)
102+
? (fsUtil.readFile(join(this.assetsUidMapperFolderPath, 'folder-mapping.json'), true) as Record<string, unknown>) || {}
103+
: {};
104+
89105
if (this.customRolesUidMapper && Object.keys(this.customRolesUidMapper || {}).length > 0) {
90106
const customRolesUidCount = Object.keys(this.customRolesUidMapper || {}).length;
91107
log.debug(`Loaded existing custom roles UID data: ${customRolesUidCount} items`, this.importConfig.context);
@@ -290,6 +306,23 @@ export default class ImportCustomRoles extends BaseClass {
290306
} else {
291307
log.debug('No entry UID mappings available for transformation.', this.importConfig.context);
292308
}
309+
} else if (rule.module === 'asset') {
310+
if (!isEmpty(this.assetsUidMap)) {
311+
const originalAssets = rule.assets?.length || 0;
312+
rule.assets = map(rule.assets, (uid: string) => (this.assetsUidMap[uid] as string) ?? uid);
313+
log.debug(`Transformed ${originalAssets} asset UIDs for rule`, this.importConfig.context);
314+
} else {
315+
log.debug('No asset UID mappings available for transformation.', this.importConfig.context);
316+
}
317+
} else if (rule.module === 'folder') {
318+
if (!isEmpty(this.assetsFolderUidMap)) {
319+
const originalFolders = rule.folders?.length || 0;
320+
rule.folders = map(rule.folders, (uid: string) => (this.assetsFolderUidMap[uid] as string) ?? uid);
321+
rule.heirarchy = map(rule.heirarchy, (uid: string) => (this.assetsFolderUidMap[uid] as string) ?? uid);
322+
log.debug(`Transformed ${originalFolders} folder UIDs for rule`, this.importConfig.context);
323+
} else {
324+
log.debug('No asset folder UID mappings available for transformation.', this.importConfig.context);
325+
}
293326
}
294327
return rule;
295328
};

packages/contentstack-seed/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "@contentstack/cli-cm-seed",
33
"description": "create a Stack from existing content types, entries, assets, etc.",
4-
"version": "1.15.0-beta.1",
4+
"version": "1.15.0-beta.2",
55
"author": "Contentstack",
66
"bugs": "https://github.com/contentstack/cli/issues",
77
"dependencies": {
8-
"@contentstack/cli-cm-import": "~1.32.0-beta.0",
8+
"@contentstack/cli-cm-import": "~1.32.0-beta.1",
99
"@contentstack/cli-command": "~1.8.0-beta.0",
1010
"@contentstack/cli-utilities": "~1.18.0-beta.0",
1111
"inquirer": "8.2.7",
@@ -71,4 +71,4 @@
7171
"compile": "tsc -b tsconfig.json",
7272
"build": "pnpm compile && oclif manifest && oclif readme"
7373
}
74-
}
74+
}

0 commit comments

Comments
 (0)