@contentstack/cli-cm-import 1.5.11 → 1.6.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/README.md +6 -14
- package/bin/dev +17 -0
- package/bin/dev.cmd +3 -0
- package/bin/run +6 -0
- package/bin/run.cmd +3 -0
- package/lib/commands/cm/stacks/import.d.ts +10 -0
- package/lib/commands/cm/stacks/import.js +111 -0
- package/lib/config/index.d.ts +3 -0
- package/lib/config/index.js +372 -0
- package/lib/import/index.d.ts +1 -0
- package/lib/import/index.js +8 -0
- package/lib/import/module-importer.d.ts +13 -0
- package/lib/import/module-importer.js +70 -0
- package/lib/import/modules/assets.d.ts +63 -0
- package/lib/import/modules/assets.js +265 -0
- package/lib/import/modules/base-class.d.ts +69 -0
- package/lib/import/modules/base-class.js +165 -0
- package/lib/import/modules/index.d.ts +2 -0
- package/lib/import/modules/index.js +19 -0
- package/lib/import/modules/locales.d.ts +31 -0
- package/lib/import/modules/locales.js +152 -0
- package/lib/import/modules-js/assets.d.ts +33 -0
- package/lib/import/modules-js/assets.js +415 -0
- package/lib/import/modules-js/content-types.d.ts +33 -0
- package/lib/import/modules-js/content-types.js +176 -0
- package/lib/import/modules-js/custom-roles.d.ts +15 -0
- package/lib/import/modules-js/custom-roles.js +141 -0
- package/lib/import/modules-js/entries.d.ts +54 -0
- package/lib/import/modules-js/entries.js +1260 -0
- package/lib/import/modules-js/environments.d.ts +13 -0
- package/lib/import/modules-js/environments.js +85 -0
- package/lib/import/modules-js/extensions.d.ts +17 -0
- package/lib/import/modules-js/extensions.js +86 -0
- package/lib/import/modules-js/global-fields.d.ts +13 -0
- package/lib/import/modules-js/global-fields.js +109 -0
- package/lib/import/modules-js/index.d.ts +1 -0
- package/lib/import/modules-js/index.js +33 -0
- package/lib/import/modules-js/labels.d.ts +20 -0
- package/lib/import/modules-js/labels.js +148 -0
- package/lib/import/modules-js/locales.d.ts +24 -0
- package/lib/import/modules-js/locales.js +196 -0
- package/lib/import/modules-js/marketplace-apps.d.ts +60 -0
- package/lib/import/modules-js/marketplace-apps.js +409 -0
- package/lib/import/modules-js/webhooks.d.ts +17 -0
- package/lib/import/modules-js/webhooks.js +85 -0
- package/lib/import/modules-js/workflows.d.ts +18 -0
- package/lib/import/modules-js/workflows.js +132 -0
- package/lib/types/default-config.d.ts +130 -0
- package/lib/types/default-config.js +2 -0
- package/lib/types/import-config.d.ts +51 -0
- package/lib/types/import-config.js +2 -0
- package/lib/types/index.d.ts +30 -0
- package/lib/types/index.js +2 -0
- package/lib/utils/asset-helper.d.ts +4 -0
- package/lib/utils/asset-helper.js +387 -0
- package/lib/utils/backup-handler.d.ts +2 -0
- package/lib/utils/backup-handler.js +31 -0
- package/lib/utils/common-helper.d.ts +20 -0
- package/lib/utils/common-helper.js +244 -0
- package/lib/utils/content-type-helper.d.ts +49 -0
- package/lib/utils/content-type-helper.js +143 -0
- package/lib/utils/entries-helper.d.ts +4 -0
- package/lib/utils/entries-helper.js +252 -0
- package/lib/utils/extension-helper.d.ts +10 -0
- package/lib/utils/extension-helper.js +72 -0
- package/lib/utils/file-helper.d.ts +14 -0
- package/lib/utils/file-helper.js +140 -0
- package/lib/utils/import-config-handler.d.ts +3 -0
- package/lib/utils/import-config-handler.js +73 -0
- package/lib/utils/index.d.ts +12 -0
- package/lib/utils/index.js +29 -0
- package/lib/utils/interactive.d.ts +2 -0
- package/lib/utils/interactive.js +23 -0
- package/lib/utils/logger.d.ts +8 -0
- package/lib/utils/logger.js +154 -0
- package/lib/utils/login-handler.d.ts +8 -0
- package/lib/utils/login-handler.js +53 -0
- package/lib/utils/marketplace-app-helper.d.ts +4 -0
- package/lib/utils/marketplace-app-helper.js +31 -0
- package/messages/index.json +1 -7
- package/oclif.manifest.json +2 -2
- package/package.json +47 -21
- package/src/app.js +0 -217
- package/src/commands/cm/stacks/import.js +0 -161
- package/src/config/default.js +0 -352
- package/src/lib/import/assets.js +0 -495
- package/src/lib/import/content-types.js +0 -201
- package/src/lib/import/custom-roles.js +0 -169
- package/src/lib/import/entries.js +0 -1495
- package/src/lib/import/environments.js +0 -106
- package/src/lib/import/extensions.js +0 -108
- package/src/lib/import/global-fields.js +0 -135
- package/src/lib/import/labels.js +0 -175
- package/src/lib/import/locales.js +0 -216
- package/src/lib/import/marketplace-apps.js +0 -542
- package/src/lib/import/webhooks.js +0 -113
- package/src/lib/import/workflows.js +0 -166
- package/src/lib/util/extensionsUidReplace.js +0 -67
- package/src/lib/util/fs.js +0 -124
- package/src/lib/util/import-flags.js +0 -187
- package/src/lib/util/index.js +0 -222
- package/src/lib/util/log.js +0 -144
- package/src/lib/util/login.js +0 -58
- package/src/lib/util/lookupReplaceAssets.js +0 -366
- package/src/lib/util/lookupReplaceEntries.js +0 -250
- package/src/lib/util/marketplace-app-helper.js +0 -31
- package/src/lib/util/removeReferenceFields.js +0 -59
- package/src/lib/util/schemaTemplate.js +0 -38
- package/src/lib/util/supress-mandatory-fields.js +0 -34
- package/src/lib/util/upload.js +0 -56
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-prototype-builtins */
|
|
2
|
-
/*!
|
|
3
|
-
* Contentstack Import
|
|
4
|
-
* Copyright (c) 2019 Contentstack LLC
|
|
5
|
-
* MIT Licensed
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
let fs = require('fs');
|
|
9
|
-
let path = require('path');
|
|
10
|
-
let chalk = require('chalk');
|
|
11
|
-
let mkdirp = require('mkdirp');
|
|
12
|
-
let Promise = require('bluebird');
|
|
13
|
-
let { isEmpty, merge, cloneDeep } = require('lodash');
|
|
14
|
-
const { cliux } = require('@contentstack/cli-utilities');
|
|
15
|
-
|
|
16
|
-
let helper = require('../util/fs');
|
|
17
|
-
let { addlogs } = require('../util/log');
|
|
18
|
-
const { formatError } = require('../util');
|
|
19
|
-
let config = require('../../config/default');
|
|
20
|
-
|
|
21
|
-
module.exports = class ImportLanguages {
|
|
22
|
-
fails = [];
|
|
23
|
-
success = [];
|
|
24
|
-
langUidMapper = {};
|
|
25
|
-
masterLanguage = config.master_locale;
|
|
26
|
-
langConfig = config.modules.locales;
|
|
27
|
-
sourceMasterLangConfig = config.modules.masterLocale;
|
|
28
|
-
reqConcurrency = config.concurrency || config.fetchConcurrency || 1;
|
|
29
|
-
|
|
30
|
-
constructor(importConfig, stackAPIClient) {
|
|
31
|
-
this.config = merge(config, importConfig);
|
|
32
|
-
this.stackAPIClient = stackAPIClient;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
start() {
|
|
36
|
-
addlogs(this.config, 'Migrating languages', 'success');
|
|
37
|
-
|
|
38
|
-
const self = this;
|
|
39
|
-
let langMapperPath = path.resolve(this.config.data, 'mapper', 'languages');
|
|
40
|
-
let langFolderPath = path.resolve(this.config.data, this.langConfig.dirName);
|
|
41
|
-
let langFailsPath = path.resolve(this.config.data, 'mapper', 'languages', 'fails.json');
|
|
42
|
-
let langUidMapperPath = path.resolve(this.config.data, 'mapper', 'languages', 'uid-mapper.json');
|
|
43
|
-
self.langSuccessPath = path.resolve(this.config.data, 'mapper', 'languages', 'success.json');
|
|
44
|
-
self.languages = helper.readFileSync(path.resolve(langFolderPath, this.langConfig.fileName));
|
|
45
|
-
self.sourceMasterLanguages = helper.readFileSync(path.resolve(langFolderPath, this.sourceMasterLangConfig.fileName));
|
|
46
|
-
|
|
47
|
-
mkdirp.sync(langMapperPath);
|
|
48
|
-
|
|
49
|
-
if (fs.existsSync(langUidMapperPath)) {
|
|
50
|
-
self.langUidMapper = helper.readFileSync(langUidMapperPath);
|
|
51
|
-
self.langUidMapper = self.langUidMapper || {};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return new Promise(async function (resolve, reject) {
|
|
55
|
-
if (self.languages === undefined || isEmpty(self.languages)) {
|
|
56
|
-
addlogs(self.config, chalk.white('No Languages Found'), 'success');
|
|
57
|
-
return resolve({ empty: true });
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
let sourceMasterLangDetails = self.sourceMasterLanguages && Object.values(self.sourceMasterLanguages);
|
|
61
|
-
if (sourceMasterLangDetails &&
|
|
62
|
-
sourceMasterLangDetails[0] &&
|
|
63
|
-
sourceMasterLangDetails[0]["code"] &&
|
|
64
|
-
self.masterLanguage["code"] === sourceMasterLangDetails[0]["code"]) {
|
|
65
|
-
await self.checkAndUpdateMasterLocaleName(sourceMasterLangDetails).catch((error) => {
|
|
66
|
-
addlogs(self.config, formatError(error), 'warn');
|
|
67
|
-
})
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
let langUids = Object.keys(self.languages);
|
|
71
|
-
return Promise.map(
|
|
72
|
-
langUids,
|
|
73
|
-
(langUid) => {
|
|
74
|
-
let lang = self.languages[langUid];
|
|
75
|
-
if (!self.langUidMapper.hasOwnProperty(langUid) && lang.code !== self.masterLanguage) {
|
|
76
|
-
let requestOption = {
|
|
77
|
-
locale: {
|
|
78
|
-
code: lang.code,
|
|
79
|
-
name: lang.name,
|
|
80
|
-
},
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
return self.stackAPIClient
|
|
84
|
-
.locale()
|
|
85
|
-
.create(requestOption)
|
|
86
|
-
.then((locale) => {
|
|
87
|
-
self.success.push(locale.items);
|
|
88
|
-
self.langUidMapper[langUid] = locale.uid;
|
|
89
|
-
helper.writeFileSync(langUidMapperPath, self.langUidMapper);
|
|
90
|
-
})
|
|
91
|
-
.catch(function (err) {
|
|
92
|
-
let error = JSON.parse(err.message);
|
|
93
|
-
if (error.hasOwnProperty('errorCode') && error.errorCode === 247) {
|
|
94
|
-
if(error.errors.code){
|
|
95
|
-
addlogs(self.config, error.errors.code[0], 'error');
|
|
96
|
-
}else{
|
|
97
|
-
addlogs(self.config, err, 'error');
|
|
98
|
-
}
|
|
99
|
-
return err;
|
|
100
|
-
}
|
|
101
|
-
self.fails.push(lang);
|
|
102
|
-
addlogs(self.config, `Language '${lang.code}' failed to import\n`, 'error');
|
|
103
|
-
addlogs(self.config, formatError(err), 'error');
|
|
104
|
-
});
|
|
105
|
-
} else {
|
|
106
|
-
// the language has already been created
|
|
107
|
-
addlogs(self.config, `The language '${lang.code}' already exists.`, 'error');
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// import 2 languages at a time
|
|
111
|
-
},
|
|
112
|
-
{ concurrency: self.reqConcurrency },
|
|
113
|
-
)
|
|
114
|
-
.then(function () {
|
|
115
|
-
// languages have imported successfully
|
|
116
|
-
self
|
|
117
|
-
.updateLocales(langUids)
|
|
118
|
-
.then(() => {
|
|
119
|
-
helper.writeFileSync(self.langSuccessPath, self.success);
|
|
120
|
-
addlogs(self.config, chalk.green('Languages have been imported successfully!'), 'success');
|
|
121
|
-
resolve();
|
|
122
|
-
})
|
|
123
|
-
.catch(function (error) {
|
|
124
|
-
addlogs(self.config, formatError(error), 'error');
|
|
125
|
-
reject(error);
|
|
126
|
-
});
|
|
127
|
-
})
|
|
128
|
-
.catch(function (error) {
|
|
129
|
-
// error while importing languages
|
|
130
|
-
helper.writeFileSync(langFailsPath, self.fails);
|
|
131
|
-
addlogs(self.config, `Language import failed. ${formatError(error)}`, 'error');
|
|
132
|
-
reject('failed to import Languages');
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
updateLocales(langUids) {
|
|
138
|
-
let self = this;
|
|
139
|
-
return new Promise(function (resolve, reject) {
|
|
140
|
-
Promise.all(
|
|
141
|
-
langUids.map(async (langUid) => {
|
|
142
|
-
let lang = {};
|
|
143
|
-
let requireKeys = self.config.modules.locales.requiredKeys;
|
|
144
|
-
let _lang = self.languages[langUid];
|
|
145
|
-
requireKeys.forEach((e) => {
|
|
146
|
-
lang[e] = _lang[e];
|
|
147
|
-
});
|
|
148
|
-
let langobj = self.stackAPIClient.locale(lang.code);
|
|
149
|
-
Object.assign(langobj, cloneDeep(lang));
|
|
150
|
-
langobj.update().then(() => {
|
|
151
|
-
// empty function
|
|
152
|
-
});
|
|
153
|
-
}),
|
|
154
|
-
)
|
|
155
|
-
.then(resolve)
|
|
156
|
-
.catch((error) => {
|
|
157
|
-
addlogs(self.config, formatError(error), 'error');
|
|
158
|
-
reject(error);
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
checkAndUpdateMasterLocaleName(sourceMasterLangDetails) {
|
|
164
|
-
let self = this;
|
|
165
|
-
return new Promise(async function (resolve, reject) {
|
|
166
|
-
let masterLangDetails = await self.stackAPIClient.locale(self.masterLanguage["code"]).fetch()
|
|
167
|
-
.catch((error) => {
|
|
168
|
-
addlogs(self.config, formatError(error), 'warn');
|
|
169
|
-
})
|
|
170
|
-
if (masterLangDetails &&
|
|
171
|
-
masterLangDetails["name"] &&
|
|
172
|
-
sourceMasterLangDetails[0]["name"] &&
|
|
173
|
-
masterLangDetails["name"].toString().toUpperCase() !== sourceMasterLangDetails[0]["name"].toString().toUpperCase()
|
|
174
|
-
) {
|
|
175
|
-
cliux.print(
|
|
176
|
-
'WARNING!!! The master language name for the source and destination is different.',
|
|
177
|
-
{ color: 'yellow' },
|
|
178
|
-
);
|
|
179
|
-
cliux.print(
|
|
180
|
-
`Old Master language name: ${masterLangDetails["name"]}`,
|
|
181
|
-
{ color: 'red' },
|
|
182
|
-
);
|
|
183
|
-
cliux.print(
|
|
184
|
-
`New Master language name: ${sourceMasterLangDetails[0]["name"]}`,
|
|
185
|
-
{ color: 'green' },
|
|
186
|
-
);
|
|
187
|
-
let confirm = await cliux.inquire({
|
|
188
|
-
type: 'confirm',
|
|
189
|
-
message: 'Are you sure you want to update name of master language?',
|
|
190
|
-
name: 'confirmation',
|
|
191
|
-
})
|
|
192
|
-
|
|
193
|
-
if (confirm) {
|
|
194
|
-
let languid = sourceMasterLangDetails[0] && sourceMasterLangDetails[0]["uid"];
|
|
195
|
-
let lang = self.sourceMasterLanguages[languid];
|
|
196
|
-
if (!lang) return reject('Locale not found.!');
|
|
197
|
-
const langObj = self.stackAPIClient.locale(lang.code);
|
|
198
|
-
Object.assign(langObj, { name: lang.name });
|
|
199
|
-
langObj.update()
|
|
200
|
-
.then(() => {
|
|
201
|
-
helper.writeFileSync(self.langSuccessPath, self.success);
|
|
202
|
-
addlogs(self.config, chalk.green('Master Languages name have been updated successfully!'), 'success');
|
|
203
|
-
resolve();
|
|
204
|
-
})
|
|
205
|
-
.catch(function (error) {
|
|
206
|
-
reject(error);
|
|
207
|
-
});
|
|
208
|
-
} else {
|
|
209
|
-
resolve();
|
|
210
|
-
}
|
|
211
|
-
} else {
|
|
212
|
-
resolve();
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
};
|