cob-cli 2.25.0 → 2.27.1
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/bin/cob-cli.js +6 -7
- package/bin/handleAutoComplete.js +3 -4
- package/lib/commands/customize.js +216 -63
- package/package.json +3 -2
- package/.gitmodules +0 -27
- package/.vscode/launch.json +0 -106
- package/README.Development.md +0 -294
- package/README.publish.md +0 -10
- package/customizations/backend.email.js +0 -10
- package/customizations/backend.js +0 -14
- package/customizations/backend.updateField.js +0 -11
- package/customizations/backend.vuepress.js +0 -35
- package/customizations/dashboard.dash.js +0 -14
- package/customizations/dashboard.js +0 -14
- package/customizations/dashboard.simple.js +0 -12
- package/customizations/dashboard.vue.empty.js +0 -12
- package/customizations/dashboard.vue.grid.js +0 -10
- package/customizations/dashboard.vue.js +0 -14
- package/customizations/dashboard.vue.menuAndGrid.js +0 -10
- package/customizations/frontend.common.js +0 -16
- package/customizations/frontend.easy.js +0 -16
- package/customizations/frontend.formatList.currency.js +0 -17
- package/customizations/frontend.formatList.js +0 -13
- package/customizations/frontend.js +0 -14
- package/customizations/importer.js +0 -10
- package/customizations/keywords.audit.js +0 -18
- package/customizations/keywords.calc.js +0 -18
- package/customizations/keywords.image.js +0 -16
- package/customizations/keywords.js +0 -17
- package/customizations/keywords.kibana.js +0 -16
- package/customizations/keywords.log.js +0 -18
- package/customizations/keywords.styleResults.js +0 -18
- package/lib/task_lists/customize_copy.js +0 -51
- package/lib/task_lists/customize_mergeFiles.js +0 -42
- package/lib/task_lists/customize_questions.js +0 -40
- package/templates/backend/vuepress/integrationm/actions/getVuePressDoc.groovy +0 -74
- package/templates/backend/vuepress/integrationm/actions/getVuePressSidebarConfig.groovy +0 -42
- package/templates/backend/vuepress/integrationm/actions/getVuePressSidebarRootElements.groovy +0 -17
- package/templates/backend/vuepress/others/vuepress/definition_contents_v234.json +0 -619
- package/templates/backend/vuepress/others/vuepress/nginx/README.md +0 -28
- package/templates/backend/vuepress/others/vuepress/package-lock.json +0 -29656
- package/templates/backend/vuepress/others/vuepress/package.json +0 -24
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/components/DescriptVideo.vue +0 -22
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/components/Graph.vue +0 -124
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/components/ReadingTime.vue +0 -26
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/components/References.vue +0 -228
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/components/RestrictedContent.vue +0 -77
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/config.js +0 -101
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/config.json +0 -31
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/enhanceApp.js +0 -14
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/nav/getNavTranslated.js +0 -52
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/plugins/References.js +0 -96
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/public/Logo-Cult-of-Bits-400x400-1.png +0 -0
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/public/favicon-cob.png +0 -0
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/public/logo.png +0 -0
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/styles/index.styl +0 -39
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/styles/palette.styl +0 -17
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/LICENSE +0 -21
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/README.md +0 -11
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/AlgoliaSearchBox.vue +0 -172
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/DropdownLink.vue +0 -252
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/DropdownTransition.vue +0 -33
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/Home.vue +0 -134
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/NavLink.vue +0 -98
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/NavLinks.vue +0 -165
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/Navbar.vue +0 -140
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/Page.vue +0 -31
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/PageEdit.vue +0 -119
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/PageNav.vue +0 -163
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/Sidebar.vue +0 -64
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/SidebarButton.vue +0 -40
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/SidebarGroup.vue +0 -144
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/SidebarLink.vue +0 -140
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/components/SidebarLinks.vue +0 -114
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/global-components/Badge.vue +0 -44
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/global-components/CodeBlock.vue +0 -41
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/global-components/CodeGroup.vue +0 -120
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/index.js +0 -59
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/layouts/404.vue +0 -30
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/layouts/Layout.vue +0 -151
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/noopModule.js +0 -1
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/package.json +0 -44
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/arrow.styl +0 -22
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/code.styl +0 -137
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/config.styl +0 -1
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/custom-blocks.styl +0 -44
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/index.styl +0 -202
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/mobile.styl +0 -37
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/toc.styl +0 -3
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/styles/wrapper.styl +0 -10
- package/templates/backend/vuepress/others/vuepress/src/.vuepress/theme/util/index.js +0 -244
- package/templates/dashboards/cob-dashboard-html/demoDashboard.html +0 -18
- package/templates/dashboards/cob-dashboard-vue/package-lock.json +0 -25020
- package/templates/dashboards/cob-dashboard-vue/package.json +0 -21
- package/templates/dashboards/cob-dashboard-vue/src/App.vue +0 -26
- package/templates/dashboards/cob-dashboard-vue/src/dashboard.html +0 -31
- package/templates/dashboards/cob-dashboard-vue/src/main.js +0 -12
- package/templates/dashboards/cob-dashboard-vue/src/plugins/cobUiVueComponents.js +0 -6
- package/templates/dashboards/cob-dashboard-vue/src/plugins/vuetify.js +0 -9
- package/templates/dashboards/cob-dashboard-vue/vue.config.js +0 -104
- package/templates/dashboards/dash/dist/css/app.7b16c01a.css +0 -11
- package/templates/dashboards/dash/dist/dashboard.html +0 -25
- package/templates/dashboards/dash/dist/fonts/fa-brands-400.a78ffbbe.ttf +0 -0
- package/templates/dashboards/dash/dist/fonts/fa-brands-400.cd2b4095.woff2 +0 -0
- package/templates/dashboards/dash/dist/fonts/fa-regular-400.b1a1bebb.ttf +0 -0
- package/templates/dashboards/dash/dist/fonts/fa-regular-400.e8a1ba41.woff2 +0 -0
- package/templates/dashboards/dash/dist/fonts/fa-solid-900.55b416a8.woff2 +0 -0
- package/templates/dashboards/dash/dist/fonts/fa-solid-900.73820155.ttf +0 -0
- package/templates/dashboards/dash/dist/fonts/fa-v4compatibility.0d6f5f18.ttf +0 -0
- package/templates/dashboards/dash/dist/fonts/fa-v4compatibility.786e6b33.woff2 +0 -0
- package/templates/dashboards/dash/dist/js/app.13b950c8.js +0 -199
- package/templates/dashboards/dash/dist/js/app.13b950c8.js.map +0 -1
- package/templates/dashboards/dash/package-lock.json +0 -22646
- package/templates/dashboards/dash/package.json +0 -27
- package/templates/dashboards/dash/src/App.vue +0 -124
- package/templates/dashboards/dash/src/assets/css/all.min.css +0 -6
- package/templates/dashboards/dash/src/assets/webfonts/fa-brands-400.ttf +0 -0
- package/templates/dashboards/dash/src/assets/webfonts/fa-brands-400.woff2 +0 -0
- package/templates/dashboards/dash/src/assets/webfonts/fa-regular-400.ttf +0 -0
- package/templates/dashboards/dash/src/assets/webfonts/fa-regular-400.woff2 +0 -0
- package/templates/dashboards/dash/src/assets/webfonts/fa-solid-900.ttf +0 -0
- package/templates/dashboards/dash/src/assets/webfonts/fa-solid-900.woff2 +0 -0
- package/templates/dashboards/dash/src/assets/webfonts/fa-v4compatibility.ttf +0 -0
- package/templates/dashboards/dash/src/assets/webfonts/fa-v4compatibility.woff2 +0 -0
- package/templates/dashboards/dash/src/collector.js +0 -222
- package/templates/dashboards/dash/src/components/Attention.vue +0 -30
- package/templates/dashboards/dash/src/components/Board.vue +0 -35
- package/templates/dashboards/dash/src/components/Calendar.vue +0 -422
- package/templates/dashboards/dash/src/components/Dashboard.vue +0 -27
- package/templates/dashboards/dash/src/components/Filter.vue +0 -68
- package/templates/dashboards/dash/src/components/Kibana.vue +0 -138
- package/templates/dashboards/dash/src/components/Label.vue +0 -15
- package/templates/dashboards/dash/src/components/Menu.vue +0 -44
- package/templates/dashboards/dash/src/components/Totals.vue +0 -49
- package/templates/dashboards/dash/src/components/TotalsValue.vue +0 -59
- package/templates/dashboards/dash/src/components/shared/Instance.vue +0 -64
- package/templates/dashboards/dash/src/components/shared/Waiting.vue +0 -25
- package/templates/dashboards/dash/src/dashboard.html +0 -39
- package/templates/dashboards/dash/src/definition_dashboard_v0.json +0 -924
- package/templates/dashboards/dash/src/definition_dashboard_v1.json +0 -1
- package/templates/dashboards/dash/src/input.css +0 -9
- package/templates/dashboards/dash/src/main.js +0 -11
- package/templates/dashboards/dash/src/model/ComponentStatePersistence.js +0 -66
- package/templates/dashboards/dash/src/output.css +0 -314245
- package/templates/dashboards/dash/src/test_collector.js +0 -3719
- package/templates/dashboards/dash/src/utils/EsInstanceUtils.js +0 -8
- package/templates/dashboards/dash/tailwind.config.js +0 -12
- package/templates/dashboards/dash/vue.config.js +0 -104
- package/templates/frontend/common/templates/frontend/common/css/_dualColumn.css +0 -46
- package/templates/frontend/common/templates/frontend/common/css/_global.css +0 -19
- package/templates/frontend/common/templates/frontend/common/css/_hidden.css +0 -13
- package/templates/frontend/common/templates/frontend/common/css/_history.css +0 -13
- package/templates/frontend/common/templates/frontend/common/css/_mobile.css +0 -125
- package/templates/frontend/common/templates/frontend/common/css/customizations.__MERGE__.css +0 -5
- package/templates/frontend/common/templates/frontend/common/js/cob/_disable_save_onSubdetail.js +0 -11
- package/templates/frontend/common/templates/frontend/common/js/cob/_group_references.js +0 -22
- package/templates/frontend/common/templates/frontend/common/js/cob/_show_hidden.js +0 -35
- package/templates/frontend/common/templates/frontend/common/js/customizations2.__MERGE__.js +0 -3
- package/templates/frontend/common/templates/frontend/common/package.json +0 -3
- package/templates/frontend/easy/css/_easy/googlefonts.css +0 -360
- package/templates/frontend/easy/css/_easy/vuetify.cob-scoped.css +0 -10488
- package/templates/frontend/easy/js/_easy/lib/axios.min.js +0 -9
- package/templates/frontend/easy/js/_easy/lib/marked.min.js +0 -6
- package/templates/frontend/easy/js/_easy/lib/vue.js +0 -11912
- package/templates/frontend/easy/js/_easy/lib/vue.min.js +0 -6
- package/templates/frontend/easy/js/_easy/lib/vuetify.min.js +0 -6
- package/templates/frontend/easy/js/customizations2.__MERGE__.js +0 -22
- package/templates/frontend/easy/webapp/.browserslistrc +0 -2
- package/templates/frontend/easy/webapp/.eslintrc.js +0 -17
- package/templates/frontend/easy/webapp/README.md +0 -60
- package/templates/frontend/easy/webapp/babel.config.js +0 -5
- package/templates/frontend/easy/webapp/dist/css/app.a4fb91f8.css +0 -1
- package/templates/frontend/easy/webapp/dist/dashboard.html +0 -13
- package/templates/frontend/easy/webapp/dist/js/app.63a57dcd.js +0 -2
- package/templates/frontend/easy/webapp/dist/js/app.63a57dcd.js.map +0 -1
- package/templates/frontend/easy/webapp/package-lock.json +0 -32986
- package/templates/frontend/easy/webapp/package.json +0 -32
- package/templates/frontend/easy/webapp/postcss.config.js +0 -5
- package/templates/frontend/easy/webapp/public/dashboard.html +0 -13
- package/templates/frontend/easy/webapp/src/App.vue +0 -181
- package/templates/frontend/easy/webapp/src/assets/logo.png +0 -0
- package/templates/frontend/easy/webapp/src/components/HelloWorld.vue +0 -59
- package/templates/frontend/easy/webapp/src/components/PermBuilder.vue +0 -163
- package/templates/frontend/easy/webapp/src/components/PlanExecutor.vue +0 -225
- package/templates/frontend/easy/webapp/src/components/ProductPermBuilder.vue +0 -95
- package/templates/frontend/easy/webapp/src/components/RmDefinitionChooser.vue +0 -59
- package/templates/frontend/easy/webapp/src/components/RmDomainChooser.vue +0 -60
- package/templates/frontend/easy/webapp/src/components/RoleBuilder.vue +0 -73
- package/templates/frontend/easy/webapp/src/main.js +0 -19
- package/templates/frontend/easy/webapp/src/perm-templates.js +0 -189
- package/templates/frontend/easy/webapp/src/perms.js +0 -197
- package/templates/frontend/easy/webapp/vue.config.js +0 -66
- package/templates/frontend/formatList/currency/css/_format_currency.css +0 -11
- package/templates/frontend/formatList/currency/css/customizations.__MERGE__.css +0 -1
- package/templates/frontend/formatList/currency/js/cob/_format_currency.js +0 -11
- package/templates/frontend/formatList/currency/js/customizations2.__MERGE__.js +0 -1
- package/templates/frontend/formatList/currency/package.json +0 -3
- package/templates/gitignore +0 -14
- package/templates/keywords/audit/backend/scripts/_audit.groovy +0 -78
- package/templates/keywords/audit/frontend/js/cob/_audit.js +0 -24
- package/templates/keywords/audit/frontend/js/customizations2.__MERGE__.js +0 -1
- package/templates/keywords/audit/package.json +0 -3
- package/templates/keywords/calc/backend/scripts/_calc.groovy +0 -151
- package/templates/keywords/calc/frontend/js/cob/_calc.js +0 -193
- package/templates/keywords/calc/frontend/js/customizations2.__MERGE__.js +0 -1
- package/templates/keywords/calc/package.json +0 -3
- package/templates/keywords/image/frontend/js/cob/_image.js +0 -30
- package/templates/keywords/image/frontend/js/customizations2.__MERGE__.js +0 -1
- package/templates/keywords/image/package.json +0 -3
- package/templates/keywords/kibana/frontend/js/cob/_kibana.js +0 -58
- package/templates/keywords/kibana/frontend/js/customizations2.__MERGE__.js +0 -1
- package/templates/keywords/kibana/package.json +0 -3
- package/templates/keywords/log/backend/scripts/_log.groovy +0 -95
- package/templates/keywords/log/frontend/css/_log.css +0 -5
- package/templates/keywords/log/frontend/css/customizations.__MERGE__.css +0 -1
- package/templates/keywords/log/package.json +0 -3
- package/templates/keywords/styleResults/frontend/css/_styleResults.css +0 -86
- package/templates/keywords/styleResults/frontend/css/customizations.__MERGE__.css +0 -1
- package/templates/keywords/styleResults/frontend/js/cob/_styleResults.js +0 -38
- package/templates/keywords/styleResults/frontend/js/customizations2.__MERGE__.js +0 -1
- package/templates/keywords/styleResults/package.json +0 -3
package/bin/cob-cli.js
CHANGED
|
@@ -16,12 +16,9 @@ const { upgradeRepo } = require("../lib/commands/upgradeRepo");
|
|
|
16
16
|
program
|
|
17
17
|
.description('CoB Command line to simplify server customizations')
|
|
18
18
|
.usage("command")
|
|
19
|
-
.version(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
.description('CoB Command line to simplify server customizations')
|
|
23
|
-
.usage("command")
|
|
24
|
-
.version( require('../package.json').version,'-v, --version', 'output the current version');
|
|
19
|
+
.version(require('../package.json').version, '-v, --version', 'output the current version')
|
|
20
|
+
.option('--setup','add autocomplete to system profiles')
|
|
21
|
+
.option('--cleanup', 'remove autocomplete from system profiles')
|
|
25
22
|
|
|
26
23
|
program
|
|
27
24
|
.command('init')
|
|
@@ -35,8 +32,10 @@ program
|
|
|
35
32
|
|
|
36
33
|
program
|
|
37
34
|
.command('customize')
|
|
38
|
-
.arguments('[name]', "Name
|
|
35
|
+
.arguments('[name]', "Name to filter the list of customizations", "interactive menu")
|
|
39
36
|
.option('-f --force', 'skips comparisons')
|
|
37
|
+
.option('-c --cache', 'cache all customizations')
|
|
38
|
+
.option('-l --local', 'use local files')
|
|
40
39
|
.description('Interactive prompt to customize an aspect of the server')
|
|
41
40
|
.action( customize );
|
|
42
41
|
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
|
-
const directoryPath = path.join(__dirname,"../customizations/");
|
|
3
|
-
|
|
4
|
-
const files = () => require('fs').readdirSync(directoryPath).map(f => f.substr(0,f.lastIndexOf(".")))
|
|
5
2
|
|
|
6
3
|
/* Autocomplete Component*/
|
|
7
4
|
var omelette = require('omelette');
|
|
8
5
|
const commandStructure = {
|
|
9
6
|
'init' : [],
|
|
10
|
-
'customize' :
|
|
7
|
+
'customize' : [],
|
|
11
8
|
'test' : [],
|
|
12
9
|
'deploy' : [],
|
|
13
10
|
'updateFromServer' : [],
|
|
@@ -18,9 +15,11 @@ completion.init()
|
|
|
18
15
|
|
|
19
16
|
// add to system profiles
|
|
20
17
|
if (~process.argv.indexOf('--setup')) {
|
|
18
|
+
console.log("Setting up...")
|
|
21
19
|
completion.setupShellInitFile()
|
|
22
20
|
}
|
|
23
21
|
// remove from system profiles
|
|
24
22
|
if (~process.argv.indexOf('--cleanup')) {
|
|
23
|
+
console.log("Cleaning...")
|
|
25
24
|
completion.cleanupShellInitFile()
|
|
26
25
|
}
|
|
@@ -1,90 +1,243 @@
|
|
|
1
1
|
const inquirer = require('inquirer');
|
|
2
|
-
const colors = require(
|
|
3
|
-
const
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const { checkWorkingCopyCleanliness } = require("../task_lists/common_helpers");
|
|
2
|
+
const colors = require("colors");
|
|
3
|
+
const path = require("path");
|
|
6
4
|
const { checkVersion } = require("./upgradeRepo");
|
|
5
|
+
const { checkWorkingCopyCleanliness } = require("../task_lists/common_helpers");
|
|
6
|
+
const axios = require("axios");
|
|
7
|
+
const git = require("simple-git/promise");
|
|
8
|
+
const ncp = require("ncp");
|
|
9
|
+
const { Transform } = require("stream");
|
|
10
|
+
const fg = require("fast-glob");
|
|
11
|
+
const fs = require("fs-extra");
|
|
7
12
|
|
|
8
13
|
/* ************************************************************************ */
|
|
9
|
-
async function customize(
|
|
14
|
+
async function customize(filter, args) {
|
|
10
15
|
try {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if(!args.force) await checkWorkingCopyCleanliness()
|
|
16
|
+
console.log("Customize...");
|
|
17
|
+
checkVersion();
|
|
18
|
+
if (!args.force) await checkWorkingCopyCleanliness();
|
|
19
|
+
|
|
20
|
+
let repo = await getCustomizationRepo(filter,args);
|
|
21
|
+
if (!args.local) await getCustomizationFiles(repo);
|
|
22
|
+
await applyCustomization(repo);
|
|
23
|
+
|
|
24
|
+
console.log( colors.green("\nDone"), "\nCheck changes to your git working tree and try:" );
|
|
25
|
+
console.log( "\tcob-cli test\n" );
|
|
26
|
+
} catch (err) {
|
|
27
|
+
console.error("\n", err.message);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
module.exports = customize;
|
|
31
|
+
|
|
32
|
+
/* ************************************************************************ */
|
|
33
|
+
async function getCustomizationRepo(filter, args) {
|
|
34
|
+
const { xdgData } = await import("xdg-basedir");
|
|
35
|
+
const cacheCustomizations = path.resolve(xdgData,"cob-cli","customizations.json")
|
|
14
36
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
require("../../customizations/dashboard").option,
|
|
22
|
-
require("../../customizations/frontend").option,
|
|
23
|
-
require("../../customizations/backend").option,
|
|
24
|
-
require("../../customizations/keywords").option,
|
|
25
|
-
require("../../customizations/importer").option,
|
|
26
|
-
]
|
|
27
|
-
}]
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
let initialOption
|
|
31
|
-
if(customization) {
|
|
32
|
-
try {
|
|
33
|
-
initialOption = require("../../customizations/"+customization.toLowerCase()).option
|
|
34
|
-
}
|
|
35
|
-
catch{
|
|
36
|
-
console.log("\nWarn".yellow, "unexisting customization file, defaulting to interactive menu...\n")
|
|
37
|
-
}
|
|
37
|
+
let customizationRepos;
|
|
38
|
+
let customizationNameQuery = "customize. " + (filter ? filter : "");
|
|
39
|
+
if (args.local) {
|
|
40
|
+
customizationRepos = JSON.parse(fs.readFileSync(cacheCustomizations))
|
|
41
|
+
if (filter) {
|
|
42
|
+
customizationRepos = customizationRepos.filter(repo => repo.name.indexOf(filter) != -1)
|
|
38
43
|
}
|
|
39
|
-
|
|
44
|
+
} else {
|
|
45
|
+
// Get list of relevant customizations from github
|
|
46
|
+
let response = await axios.get(
|
|
47
|
+
"https://api.github.com/search/repositories?q=" +
|
|
48
|
+
customizationNameQuery + "+in:name+org:cob",
|
|
49
|
+
{ headers: { Accept: "application/json", "Accept-Encoding": "identity" } }
|
|
50
|
+
)
|
|
51
|
+
customizationRepos = response.data.items
|
|
52
|
+
}
|
|
40
53
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if(result) throw new Error("Aborded:".red + result )
|
|
54
|
+
// Check if there's at least one customization
|
|
55
|
+
if (customizationRepos.length == 0) throw new Error("\nError: ".red + " no customization found\n");
|
|
44
56
|
|
|
45
|
-
|
|
46
|
-
|
|
57
|
+
// Asks for customization to apply
|
|
58
|
+
if (args.cache && args.local) {
|
|
59
|
+
throw new Error("\nError: ".red + " incompatible options, --local AND --cache\n");
|
|
60
|
+
} else if(args.cache) {
|
|
61
|
+
console.log("Caching all customizations...");
|
|
62
|
+
for( let repo of customizationRepos) {
|
|
63
|
+
await getCustomizationFiles(repo);
|
|
64
|
+
}
|
|
65
|
+
fs.writeFileSync( cacheCustomizations,
|
|
66
|
+
JSON.stringify(customizationRepos, null, 2),
|
|
67
|
+
(err) => {
|
|
68
|
+
if (err) console.log( "Error writing " + cacheCustomizations + ":", err.message);
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
let answer = await inquirer.prompt([
|
|
74
|
+
{
|
|
75
|
+
type: "list",
|
|
76
|
+
name: "customization",
|
|
77
|
+
message: "What customization do you want to apply?",
|
|
78
|
+
choices: customizationRepos.map((repo) => repo.name).sort(),
|
|
79
|
+
},
|
|
80
|
+
]);
|
|
81
|
+
|
|
82
|
+
//Return the full repo info
|
|
83
|
+
return customizationRepos.find((repo) => repo.name == answer.customization);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* ************************************************************************ */
|
|
87
|
+
async function getCustomizationFiles(repo) {
|
|
88
|
+
const { xdgData } = await import("xdg-basedir");
|
|
89
|
+
const baseDir = process.cwd();
|
|
90
|
+
const cacheDir = path.resolve(xdgData,"cob-cli")
|
|
91
|
+
if (!fs.existsSync(cacheDir)) fs.mkdirSync(cacheDir, { recursive: true });
|
|
47
92
|
|
|
48
|
-
|
|
49
|
-
|
|
93
|
+
process.chdir(cacheDir);
|
|
94
|
+
if (!fs.existsSync(path.resolve(cacheDir,repo.name))) {
|
|
95
|
+
console.log(" git " + repo.ssh_url);
|
|
96
|
+
await git().clone(repo.ssh_url);
|
|
97
|
+
} else {
|
|
98
|
+
console.log(" git pull " + repo.ssh_url);
|
|
99
|
+
process.chdir(repo.name);
|
|
100
|
+
await git().pull();
|
|
50
101
|
}
|
|
102
|
+
process.chdir(baseDir);
|
|
51
103
|
}
|
|
52
|
-
module.exports = customize;
|
|
53
104
|
|
|
54
105
|
/* ************************************************************************ */
|
|
106
|
+
async function applyCustomization(repo) {
|
|
107
|
+
console.log("\nApplying " + repo.name + " customization ...");
|
|
108
|
+
|
|
109
|
+
// Get customization info from convention defined file (customize.js)
|
|
110
|
+
const { xdgData } = await import("xdg-basedir");
|
|
111
|
+
const customizationPath = path.resolve( xdgData, "cob-cli", repo.name);
|
|
112
|
+
const customizationFile = path.resolve( customizationPath, "customize.js");
|
|
113
|
+
if (!fs.existsSync(customizationFile))
|
|
114
|
+
throw new Error("\nError: ".red + " no customize.js file found\n");
|
|
115
|
+
|
|
116
|
+
let customization = (await import(customizationFile)).default;
|
|
117
|
+
|
|
118
|
+
// Asks options, if configuration exists
|
|
119
|
+
let answers = {};
|
|
120
|
+
if (customization.questions) {
|
|
121
|
+
answers = await inquirer.prompt(customization.questions);
|
|
122
|
+
}
|
|
55
123
|
|
|
56
|
-
|
|
57
|
-
if(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
} else if(option.customization) {
|
|
64
|
-
// Final customization options HAVE a 'customization' function, that process the answers, and HAVE one or more questions
|
|
65
|
-
return inquirer.prompt(option.questions).then( async (answers) => {
|
|
66
|
-
let version = await option.customization(answers) || require('../../package.json').version
|
|
67
|
-
updateCustomizationsVersions(option.short, version)
|
|
68
|
-
})
|
|
124
|
+
// Apply specific customization, if it exists, otherwise use default actions
|
|
125
|
+
if (customization.actions) {
|
|
126
|
+
customization.actions(repo.name, options, copy, mergeFiles);
|
|
127
|
+
} else {
|
|
128
|
+
// Default actions
|
|
129
|
+
await copy(customizationPath, process.cwd(), answers);
|
|
130
|
+
await mergeFiles(repo.name);
|
|
69
131
|
}
|
|
70
132
|
|
|
71
|
-
|
|
133
|
+
// Update customizations.json file
|
|
134
|
+
updateCustomizationsVersions(repo.name, customization.version);
|
|
72
135
|
}
|
|
73
136
|
|
|
74
137
|
/* ************************************************************************ */
|
|
138
|
+
async function copy(source, target, substitutions = {}) {
|
|
139
|
+
// https://www.npmtrends.com/copyfiles-vs-cpx-vs-ncp-vs-npm-build-tools
|
|
140
|
+
// https://www.npmjs.com/package/ncp
|
|
141
|
+
// https://www.npmjs.com/package/copyfiles
|
|
142
|
+
|
|
143
|
+
console.log(" Copying template files ...");
|
|
144
|
+
|
|
145
|
+
let excludedFiles = RegExp(
|
|
146
|
+
"(" +
|
|
147
|
+
source + "/\\.git.*" +
|
|
148
|
+
"|" +
|
|
149
|
+
source + "/README.*" +
|
|
150
|
+
"|" +
|
|
151
|
+
source + "/customize.js" +
|
|
152
|
+
"|" +
|
|
153
|
+
source + ".*/node_modules/" +
|
|
154
|
+
")"
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
// Source is on cob-cli repo and Destination on the server repo
|
|
158
|
+
await ncp(
|
|
159
|
+
source,
|
|
160
|
+
target,
|
|
161
|
+
{
|
|
162
|
+
clobber: true,
|
|
163
|
+
filter: (src) => src.match(excludedFiles) == null,
|
|
164
|
+
// TODO: comentado porque não funciona a copiar os ficheiros binários (em concreto as font no template/dashboards/dash)
|
|
165
|
+
// transform(read, write) {
|
|
166
|
+
// const replaceVars = new Transform({
|
|
167
|
+
// transform: (chunk, encoding, done) => done(null,chunk.toString().replace(/__.+__/g, m => substitutions[m]))
|
|
168
|
+
// })
|
|
169
|
+
// read.pipe(replaceVars).pipe(write)
|
|
170
|
+
// }
|
|
171
|
+
},
|
|
172
|
+
(error) => error && error.map((e) => e.message).join("\n")
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
const dryrun = await fg(["**/*__*__*"], { onlyFiles: false, dot: true }); //Just to give time for OS to stabilize
|
|
176
|
+
const files = await fg(["**/*__*__*"], { onlyFiles: false, dot: true });
|
|
177
|
+
for(let file of files.filter(name => name.indexOf("node_modules") == -1)) {
|
|
178
|
+
if (file.match(/__MERGE__/)) return;
|
|
179
|
+
fs.renameSync( file, file.replace(/__(.+)__/g, (match,g1) => substitutions[g1]) );
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* ************************************************************************ */
|
|
184
|
+
async function mergeFiles(block) {
|
|
185
|
+
const mergeFiles = await fg(["**/*.__MERGE__.*"], {
|
|
186
|
+
onlyFiles: false,
|
|
187
|
+
dot: true,
|
|
188
|
+
});
|
|
189
|
+
for (let mergeFile of mergeFiles) {
|
|
190
|
+
let prodFile = mergeFile.replace(/\.__MERGE__/, "");
|
|
191
|
+
let blockMark = block == undefined ? "" : block;
|
|
192
|
+
if (!fs.existsSync(prodFile)) {
|
|
193
|
+
// If prod file does not exist creates it
|
|
194
|
+
console.log(" Creating " + prodFile);
|
|
195
|
+
fs.closeSync(fs.openSync(prodFile, "w"));
|
|
196
|
+
} else {
|
|
197
|
+
console.log(" Merging " + prodFile + " " + block);
|
|
198
|
+
}
|
|
199
|
+
let prodFileContent = fs.readFileSync(prodFile).toString();
|
|
200
|
+
let mergeFileContent = fs.readFileSync(mergeFile).toString();
|
|
201
|
+
let startStr = "/* COB-CLI START " + blockMark + " */\n";
|
|
202
|
+
let endStr = "\n/* COB-CLI END " + blockMark + " */\n";
|
|
75
203
|
|
|
204
|
+
if (prodFileContent.indexOf(startStr) < 0) {
|
|
205
|
+
// If previous customization does not exist
|
|
206
|
+
prodFileContent = startStr + mergeFileContent + endStr + prodFileContent;
|
|
207
|
+
} else {
|
|
208
|
+
// If previous customization exists
|
|
209
|
+
let beforeMerge = prodFileContent.indexOf(startStr);
|
|
210
|
+
let afterMerge = prodFileContent.indexOf(endStr) + endStr.length;
|
|
211
|
+
prodFileContent =
|
|
212
|
+
prodFileContent.substring(0, beforeMerge) +
|
|
213
|
+
startStr +
|
|
214
|
+
mergeFileContent +
|
|
215
|
+
endStr +
|
|
216
|
+
prodFileContent.substring(afterMerge);
|
|
217
|
+
}
|
|
218
|
+
fs.writeFileSync(prodFile, prodFileContent);
|
|
219
|
+
|
|
220
|
+
fs.unlinkSync(mergeFile);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* ************************************************************************ */
|
|
76
225
|
function updateCustomizationsVersions(customizationKey, version) {
|
|
77
226
|
const customizationsVersionsFile = "customizations.json";
|
|
78
|
-
let customizationsVersions
|
|
79
|
-
try {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
catch (err) {
|
|
83
|
-
|
|
227
|
+
let customizationsVersions;
|
|
228
|
+
try {
|
|
229
|
+
const customizationsVersionsRawData = fs.readFileSync(customizationsVersionsFile);
|
|
230
|
+
customizationsVersions = JSON.parse(customizationsVersionsRawData);
|
|
231
|
+
} catch (err) {
|
|
232
|
+
customizationsVersions = {};
|
|
84
233
|
}
|
|
85
234
|
customizationsVersions[customizationKey] = version;
|
|
86
235
|
|
|
87
|
-
fs.
|
|
88
|
-
|
|
89
|
-
|
|
236
|
+
fs.writeFileSync(
|
|
237
|
+
customizationsVersionsFile,
|
|
238
|
+
JSON.stringify(customizationsVersions, null, 2),
|
|
239
|
+
(err) => {
|
|
240
|
+
if (err) console.log( "Error writing " + customizationsVersionsFile + ":", err.message );
|
|
241
|
+
}
|
|
242
|
+
);
|
|
90
243
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cob-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.27.1",
|
|
4
4
|
"description": "A command line utility to help Cult of Bits partners develop with higher speed and reusing common code and best practices.",
|
|
5
5
|
"preferGlobal": true,
|
|
6
6
|
"repository": {
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"webpack": "^5.49.0",
|
|
32
32
|
"webpack-cli": "^3.3.12",
|
|
33
33
|
"webpack-dev-server": "^3.11.2",
|
|
34
|
-
"whoami": "0.0.3"
|
|
34
|
+
"whoami": "0.0.3",
|
|
35
|
+
"xdg-basedir": "^5.1.0"
|
|
35
36
|
},
|
|
36
37
|
"keywords": [],
|
|
37
38
|
"author": "mimes70",
|
package/.gitmodules
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
[submodule "templates/keywords/image"]
|
|
2
|
-
path = templates/keywords/image
|
|
3
|
-
url = https://github.com/cob/customize.keywords.image.git
|
|
4
|
-
[submodule "templates/keywords/styleResults"]
|
|
5
|
-
path = templates/keywords/styleResults
|
|
6
|
-
url = git@github.com:cob/customize.keywords.styleResults.git
|
|
7
|
-
[submodule "templates/keywords/log"]
|
|
8
|
-
path = templates/keywords/log
|
|
9
|
-
url = git@github.com:cob/customize.keywords.log.git
|
|
10
|
-
[submodule "templates/keywords/calc"]
|
|
11
|
-
path = templates/keywords/calc
|
|
12
|
-
url = git@github.com:cob/customize.keywords.calc.git
|
|
13
|
-
[submodule "templates/keywords/audit"]
|
|
14
|
-
path = templates/keywords/audit
|
|
15
|
-
url = git@github.com:cob/customize.keywords.audit.git
|
|
16
|
-
[submodule "templates/frontend/common"]
|
|
17
|
-
path = templates/frontend/common
|
|
18
|
-
url = git@github.com:cob/customize.frontend.common.git
|
|
19
|
-
[submodule "templates/frontend/formatList/currency"]
|
|
20
|
-
path = templates/frontend/formatList/currency
|
|
21
|
-
url = git@github.com:cob/customize.frontend.formatList.currency.git
|
|
22
|
-
[submodule "templates/dashboards/dash"]
|
|
23
|
-
path = templates/dashboards/dash
|
|
24
|
-
url = git@github.com:cob/customize.dashboard.dash.git
|
|
25
|
-
[submodule "templates/keywords/kibana"]
|
|
26
|
-
path = templates/keywords/kibana
|
|
27
|
-
url = git@github.com:cob/customize.keywords.kibana.git
|
package/.vscode/launch.json
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
// Use IntelliSense to learn about possible attributes.
|
|
3
|
-
// Hover to view descriptions of existing attributes.
|
|
4
|
-
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
-
"version": "0.2.0",
|
|
6
|
-
"configurations": [
|
|
7
|
-
{
|
|
8
|
-
"type": "node",
|
|
9
|
-
"request": "launch",
|
|
10
|
-
"name": "semantic test",
|
|
11
|
-
"skipFiles": [
|
|
12
|
-
"<node_internals>/**"
|
|
13
|
-
],
|
|
14
|
-
//cwd é necessário para correr o debuger na directoria ../server_mimes8
|
|
15
|
-
//AVISO: isto significa que o resultado do comando vai ser na directoria pai de onde este código estiver
|
|
16
|
-
"cwd": "${workspaceFolder}/../server_icad2",
|
|
17
|
-
"program": "${workspaceFolder}/../xpto/app.js",
|
|
18
|
-
"console": "integratedTerminal",
|
|
19
|
-
"args": [
|
|
20
|
-
"test"
|
|
21
|
-
],
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"type": "node",
|
|
25
|
-
"request": "launch",
|
|
26
|
-
"name": "cd server_mimes8; cob-cli test",
|
|
27
|
-
"skipFiles": [
|
|
28
|
-
"<node_internals>/**"
|
|
29
|
-
],
|
|
30
|
-
//cwd é necessário para correr o debuger na directoria ../server_mimes8
|
|
31
|
-
//AVISO: isto significa que o resultado do comando vai ser na directoria pai de onde este código estiver
|
|
32
|
-
"cwd": "${workspaceRoot}/../server_mimes8",
|
|
33
|
-
"program": "${workspaceFolder}/bin/cob-cli.js",
|
|
34
|
-
"console": "integratedTerminal",
|
|
35
|
-
"args": ["test"],
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"type": "node",
|
|
39
|
-
"request": "launch",
|
|
40
|
-
"name": "cd server_mdados; cob-cli test -d escolher_empresa",
|
|
41
|
-
"console": "integratedTerminal",
|
|
42
|
-
"skipFiles": [
|
|
43
|
-
"<node_internals>/**"
|
|
44
|
-
],
|
|
45
|
-
//cwd é necessário para correr o debuger na directoria ../server_mimes8
|
|
46
|
-
//AVISO: isto significa que o resultado do comando vai ser na directoria pai de onde este código estiver
|
|
47
|
-
"cwd": "${workspaceRoot}/../server_mdados",
|
|
48
|
-
"program": "${workspaceFolder}/bin/cob-cli.js",
|
|
49
|
-
"args": ["test", "-d", "escolher_empresa"],
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"type": "node",
|
|
53
|
-
"request": "launch",
|
|
54
|
-
"name": "cd server_mdados; cob-cli deploy",
|
|
55
|
-
"console": "integratedTerminal",
|
|
56
|
-
"skipFiles": [
|
|
57
|
-
"<node_internals>/**"
|
|
58
|
-
],
|
|
59
|
-
//cwd é necessário para correr o debuger na directoria ../server_mimes8
|
|
60
|
-
//AVISO: isto significa que o resultado do comando vai ser na directoria pai de onde este código estiver
|
|
61
|
-
"cwd": "${workspaceRoot}/../server_mdados",
|
|
62
|
-
"program": "${workspaceFolder}/bin/cob-cli.js",
|
|
63
|
-
"args": ["deploy"],
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"type": "node",
|
|
67
|
-
"request": "launch",
|
|
68
|
-
"name": "cd server_icad; cob-cli deploy -s icad",
|
|
69
|
-
"console": "integratedTerminal",
|
|
70
|
-
"skipFiles": [
|
|
71
|
-
"<node_internals>/**"
|
|
72
|
-
],
|
|
73
|
-
"cwd": "${workspaceRoot}/../server_icad",
|
|
74
|
-
"program": "${workspaceFolder}/bin/cob-cli.js",
|
|
75
|
-
"args": ["deploy","-s","icad"],
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"type": "node",
|
|
79
|
-
"request": "launch",
|
|
80
|
-
"name": "cob-cli init mdados",
|
|
81
|
-
"console": "integratedTerminal",
|
|
82
|
-
"skipFiles": [
|
|
83
|
-
"<node_internals>/**"
|
|
84
|
-
],
|
|
85
|
-
//cwd é necessário para correr o debuger na directoria ../
|
|
86
|
-
//AVISO: isto significa que o resultado do comando vai ser na directoria pai de onde este código estiver
|
|
87
|
-
"cwd": "${workspaceRoot}/..",
|
|
88
|
-
"program": "${workspaceFolder}/bin/cob-cli.js",
|
|
89
|
-
"args": ["init","mdados"],
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"type": "node",
|
|
93
|
-
"request": "launch",
|
|
94
|
-
"name": "cob-cli init dogfooding -l CoB/dogfooding",
|
|
95
|
-
"console": "integratedTerminal",
|
|
96
|
-
"skipFiles": [
|
|
97
|
-
"<node_internals>/**"
|
|
98
|
-
],
|
|
99
|
-
//cwd é necessário para correr o debuger na directoria ../
|
|
100
|
-
//AVISO: isto significa que o resultado do comando vai ser na directoria pai de onde este código estiver
|
|
101
|
-
"cwd": "${workspaceRoot}/..",
|
|
102
|
-
"program": "${workspaceFolder}/bin/cob-cli.js",
|
|
103
|
-
"args": ["init","dogfooding","-l","CoB/dogfooding"],
|
|
104
|
-
}
|
|
105
|
-
]
|
|
106
|
-
}
|