-
Notifications
You must be signed in to change notification settings - Fork 0
/
repository-modernizer.js
70 lines (63 loc) · 3.07 KB
/
repository-modernizer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
Copyright 2020 Adobe. All rights reserved.
This file is licensed to you under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. You may obtain a copy
of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
OF ANY KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License.
*/
const { Command } = require("@oclif/command");
const Commons = require("@adobe/aem-cs-source-migration-commons");
const RepositoryModernizer = require("@adobe/aem-cs-source-migration-repository-modernizer");
const helper = require("../../helper");
class RepositoryModernizerCommand extends Command {
async run() {
this.log("\n********** Executing Repository Modernizer **********");
this.log("Restructuring Repository..");
try {
helper.clearOutputFolder(Commons.constants.TARGET_PROJECT_FOLDER);
let config = helper.readConfigFile(this.config.configDir);
if (
await RepositoryModernizer.checkConfig(
config.repositoryModernizer
)
) {
await RepositoryModernizer.performModernization(
config.repositoryModernizer,
helper.baseRepoResourcePath
);
this.log("Restructuring Completed!");
this.log(
`Please check ${Commons.constants.TARGET_PROJECT_SRC_FOLDER} folder for restructured project packages.`
);
this.log(
`Please check ${Commons.constants.TARGET_PROJECT_FOLDER} for summary report.`
);
this.log(
`Please check ${Commons.constants.LOG_FILE} for logs.\n`
);
} else {
this.log(
`Missing configuration! Please check ${Commons.constants.LOG_FILE} for more information.\n`
);
}
} catch (e) {
this.error(e);
}
}
}
RepositoryModernizerCommand.description = `restructure existing projects packages into AEMasCS compatible packages.
AEM requires a separation of content and code, which means a single content package cannot deploy to both /apps and
runtime-writable areas (for example, /content , /conf , /home , or anything not /apps ) of the repository.
Instead, the application must separate code and content into discrete packages for deployment into AEM.
Repository Modernizer automates the separation of such packages into :
* ui.apps package, or Code Package
* ui.config package, or OSGi Configurations Package
* ui.content package, or Content Package
* all (container) package that includes the above packages as embeds.`;
RepositoryModernizerCommand.examples = [
"$ aio aem-migration:repository-modernizer",
];
module.exports = RepositoryModernizerCommand;