summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--package-lock.json5
-rw-r--r--package.json3
-rw-r--r--scripts/build_one_click_apps.js62
3 files changed, 67 insertions, 3 deletions
diff --git a/package-lock.json b/package-lock.json
index 0777717..ad24415 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -411,6 +411,11 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "yaml": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
+ "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg=="
}
}
}
diff --git a/package.json b/package.json
index 1fa23e6..e049e7c 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
"dependencies": {
"fs-extra": "^9.0.1",
"gh-pages": "^3.1.0",
- "prettier": "^2.0.5"
+ "prettier": "^2.0.5",
+ "yaml": "^1.10.0"
}
}
diff --git a/scripts/build_one_click_apps.js b/scripts/build_one_click_apps.js
index e9b0a66..f2f5f3d 100644
--- a/scripts/build_one_click_apps.js
+++ b/scripts/build_one_click_apps.js
@@ -1,5 +1,6 @@
/*jshint esversion: 6 */
const path = require('path');
+const yaml = require('yaml');
const fs = require('fs-extra');
const pathOfPublic = path.join(__dirname, '..', `public`);
@@ -8,6 +9,7 @@ const pathOfDist = path.join(__dirname, '..', `dist`);
// const pathOfDistV1 = path.join(pathOfDist, 'v1');
const pathOfDistV2 = path.join(pathOfDist, 'v2');
const pathOfDistV3 = path.join(pathOfDist, 'v3');
+const pathOfDistV4 = path.join(pathOfDist, 'v4');
const pathOfSourceDirectory = path.join(pathOfPublic, 'v2');
const pathOfSourceDirectoryApps = path.join(pathOfSourceDirectory, 'apps');
@@ -50,18 +52,73 @@ function createAppList(appsList, pathOfApps) {
};
}
+function convertV2toV4(v2String) {
+ const parsed = JSON.parse(v2String);
+ if (`${parsed.captainVersion}` !== '2') {
+ throw new Error('CaptainVersion must be 2 for this conversion');
+ }
+
+ function moveProperty(propertyName) {
+ parsed.caproverOneClickApp[propertyName] = parsed[propertyName];
+ parsed[propertyName] = undefined;
+ }
+
+ parsed.captainVersion = 4;
+ parsed.caproverOneClickApp = {};
+
+ parsed.services = parsed.dockerCompose.services;
+ parsed.dockerCompose = undefined;
+
+ moveProperty('variables');
+ moveProperty('instructions');
+ moveProperty('displayName');
+ moveProperty('description');
+ moveProperty('documentation');
+
+ Object.keys(parsed.services).forEach(serviceName => {
+ const service = parsed.services[serviceName];
+ if (service.containerHttpPort) {
+ service.caproverExtra = service.caproverExtra || {};
+ service.caproverExtra.containerHttpPort = service.containerHttpPort;
+ }
+ if (service.dockerfileLines) {
+ service.caproverExtra = service.caproverExtra || {};
+ service.caproverExtra.dockerfileLines = service.dockerfileLines;
+ }
+ if (service.notExposeAsWebApp) {
+ service.caproverExtra = service.caproverExtra || {};
+ service.caproverExtra.notExposeAsWebApp = service.notExposeAsWebApp;
+ }
+ service.containerHttpPort = undefined;
+ service.dockerfileLines = undefined;
+ service.notExposeAsWebApp = undefined;
+ });
+
+ return parsed;
+}
+
function buildDist() {
return fs.readdir(pathOfSourceDirectoryApps)
.then(function (appsFileNames) { // [ app1.json app2.json .... ]
appsFileNames.forEach(appFileName => {
- fs.copySync(path.join(pathOfSourceDirectoryApps, appFileName), path.join(pathOfDistV2, `apps`, appFileName));
- fs.copySync(path.join(pathOfSourceDirectoryApps, appFileName), path.join(pathOfDistV3, `apps`, appFileName.split('.')[0]));
+ const pathOfAppFileInSource = path.join(pathOfSourceDirectoryApps, appFileName);
+
+ //v2
+ fs.copySync(pathOfAppFileInSource, path.join(pathOfDistV2, `apps`, appFileName));
+
+ //v3
+ fs.copySync(pathOfAppFileInSource, path.join(pathOfDistV3, `apps`, appFileName.split('.')[0]));
+
+ //v4
+ const contentString = fs.readFileSync(pathOfAppFileInSource);
+ fs.outputJsonSync(path.join(pathOfDistV4, `apps`, appFileName.split('.')[0]), convertV2toV4(contentString));
});
fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV2, `logos`));
fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV3, `logos`));
+ fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV4, `logos`));
const allAppsList = createAppList(appsFileNames, pathOfSourceDirectoryApps);
const v3List = {
@@ -70,6 +127,7 @@ function buildDist() {
fs.outputJsonSync(path.join(pathOfDistV2, 'autoGeneratedList.json'), allAppsList);
fs.outputJsonSync(path.join(pathOfDistV2, 'list'), v3List); // TODO delete oneClickApps:
fs.outputJsonSync(path.join(pathOfDistV3, 'list'), v3List);
+ fs.outputJsonSync(path.join(pathOfDistV4, 'list'), v3List);
})
.then(function () {
return fs.copySync(path.join(pathOfPublic, 'CNAME'), path.join(pathOfDist, 'CNAME'));