summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--package.json2
-rw-r--r--public/v1/apps/___READ_DEPRECATION_NOTICE___3
-rw-r--r--public/v1/apps/__upgrade_caprover__.json24
-rw-r--r--scripts/build_one_click_apps.js159
-rwxr-xr-xscripts/publish-from-actions.sh2
6 files changed, 86 insertions, 106 deletions
diff --git a/.gitignore b/.gitignore
index 618871d..8297107 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-autoGeneratedList.json
+dist/*
node_modules
.DS_Store
diff --git a/package.json b/package.json
index 2b85b5f..631fb09 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"version": "1.0.0",
"description": "One Click App Repository for CapRover",
"scripts": {
- "build": "node ./scripts/build_one_click_apps.js",
+ "build": "rm -rf ./dist/ && mkdir -p dist && node ./scripts/build_one_click_apps.js",
"validate_json": "node ./scripts/validate_json.js",
"publish": "npm run build && ./scripts/publish-from-actions.sh"
},
diff --git a/public/v1/apps/___READ_DEPRECATION_NOTICE___ b/public/v1/apps/___READ_DEPRECATION_NOTICE___
deleted file mode 100644
index f53cf4d..0000000
--- a/public/v1/apps/___READ_DEPRECATION_NOTICE___
+++ /dev/null
@@ -1,3 +0,0 @@
-# V1 is no longer being updated.
-
-We use v2, which has an additional parameter of `$$cap_root_domain` \ No newline at end of file
diff --git a/public/v1/apps/__upgrade_caprover__.json b/public/v1/apps/__upgrade_caprover__.json
deleted file mode 100644
index e1270cf..0000000
--- a/public/v1/apps/__upgrade_caprover__.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "captainVersion": "1",
- "documentation": "Just a placeholder for upgrade message",
- "dockerCompose": {
- "services": {
- "$$cap_appname": {
- "image": "this-is-not-a-real-app:$$cap_adminer_version"
- }
- }
- },
- "instructions": {
- "start": "You CapRover is not supported anymore. Navigate to SETTINGS and update your CapRover.",
- "end": ""
- },
- "variables": [{
- "id": "$$cap_adminer_version",
- "label": "Update CapRover",
- "description": "",
- "defaultValue": "NOT SUPPORTED",
- "validRegex": "/.{100,}/"
- }
- ]
-
-} \ No newline at end of file
diff --git a/scripts/build_one_click_apps.js b/scripts/build_one_click_apps.js
index be96b2b..67260fc 100644
--- a/scripts/build_one_click_apps.js
+++ b/scripts/build_one_click_apps.js
@@ -1,76 +1,83 @@
- /*jshint esversion: 6 */
- const path = require('path');
- const fs = require('fs-extra')
-
- const PUBLIC = `public`
- const pathOfPublic = path.join(__dirname, '..', PUBLIC);
-
-
- function copyVersion(version) {
-
- const pathOfVersion = path.join(pathOfPublic, 'v' + version);
- const pathOfApps = path.join(pathOfVersion, 'apps');
- const pathOfList = path.join(pathOfVersion, 'autoGeneratedList.json'); //kept for backward compat
- const pathOfList2 = path.join(pathOfVersion, 'list');
-
- return fs.readdir(pathOfApps)
- .then(function (items) {
-
- const apps = items.filter(v => v.includes('.json'));
- const appDetails = [];
-
- for (var i = 0; i < apps.length; i++) {
- const contentString = fs.readFileSync(path.join(pathOfApps, apps[i]));
- const content = JSON.parse(contentString)
- const captainVersion = (content.captainVersion + '');
- const versionString = (version + '');
- if (versionString !== captainVersion)
- throw new Error(`unmatched versions ${versionString} ${captainVersion} for ${apps[i]}`)
- if (captainVersion === "1") {
- if (contentString.includes("$$cap_root_domain"))
- throw new Error('V1 should not have root domain')
- }
-
- apps[i] = apps[i].replace('.json', '');
-
- if (captainVersion + '' === '2') {
- if (!content.displayName) {
- content.displayName = apps[i]
- content.displayName = content.displayName.substr(0, 1).toUpperCase() + content.displayName.substring(1, content.displayName.length)
- }
- if (!content.description) content.description = ''
-
- appDetails[i] = {
- name: apps[i],
- displayName: content.displayName,
- description: content.description,
- logoUrl: apps[i] + '.png'
- }
- }
-
- }
-
- fs.outputJsonSync(pathOfList, {
- appList: apps,
- appDetails: appDetails
- });
-
- fs.outputJsonSync(pathOfList2, {
- oneClickApps: appDetails
- });
-
- })
- }
-
-
- Promise.resolve()
- .then(function () {
- return copyVersion(1)
- })
- .then(function () {
- return copyVersion(2)
- })
- .catch(function (err) {
- console.error(err)
- process.exit(127)
- }) \ No newline at end of file
+/*jshint esversion: 6 */
+const path = require('path');
+const fs = require('fs-extra');
+
+const pathOfPublic = path.join(__dirname, '..', `public`);
+
+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 pathOfSourceDirectory = path.join(pathOfPublic, 'v2');
+const pathOfSourceDirectoryApps = path.join(pathOfSourceDirectory, 'apps');
+const pathOfSourceDirectoryLogos = path.join(pathOfSourceDirectory, 'logos');
+
+
+function createAppList(appsList, pathOfApps) {
+ const apps = appsList.filter(v => v.includes('.json'));
+ const appDetails = [];
+
+ for (var i = 0; i < apps.length; i++) {
+ const contentString = fs.readFileSync(path.join(pathOfApps, apps[i]));
+ const content = JSON.parse(contentString);
+ const captainVersion = (content.captainVersion + '');
+
+ apps[i] = apps[i].replace('.json', '');
+
+ if (captainVersion + '' === '2') {
+ if (!content.displayName) {
+ content.displayName = apps[i];
+ content.displayName = content.displayName.substr(0, 1).toUpperCase() + content.displayName.substring(1, content.displayName.length);
+ }
+ if (!content.description) content.description = '';
+
+ appDetails[i] = {
+ name: apps[i],
+ displayName: content.displayName,
+ description: content.description,
+ logoUrl: apps[i] + '.png'
+ };
+ } else {
+ throw new Error('Unknown captain-version: ' + captainVersion);
+ }
+
+ }
+
+ return {
+ appList: apps,
+ appDetails: appDetails
+ };
+}
+
+
+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]));
+ });
+
+ fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV2, `logos`));
+ fs.copySync(pathOfSourceDirectoryLogos, path.join(pathOfDistV3, `logos`));
+
+ fs.outputJsonSync(path.join(pathOfDistV2, 'autoGeneratedList.json'), createAppList(appsFileNames, pathOfSourceDirectoryApps));
+ fs.outputJsonSync(path.join(pathOfDistV2, 'list'), createAppList(appsFileNames, pathOfSourceDirectoryApps)); // TODO delete
+ fs.outputJsonSync(path.join(pathOfDistV3, 'list'), createAppList(appsFileNames, pathOfSourceDirectoryApps));
+ })
+ .then(function () {
+ return fs.copySync(path.join(pathOfPublic, 'CNAME'), path.join(pathOfDist, 'CNAME'))
+ });
+}
+
+
+Promise.resolve()
+ .then(function () {
+ return buildDist();
+ })
+ .catch(function (err) {
+ console.error(err);
+ process.exit(127);
+ }); \ No newline at end of file
diff --git a/scripts/publish-from-actions.sh b/scripts/publish-from-actions.sh
index 05466dd..404086b 100755
--- a/scripts/publish-from-actions.sh
+++ b/scripts/publish-from-actions.sh
@@ -26,7 +26,7 @@
set -e
-BUILD_DIR=public
+BUILD_DIR=dist
SOURCE_DIRECTORY_DEPLOY_GH=~/temp-gh-deploy-src
CLONED_DIRECTORY_DEPLOY_GH=~/temp-gh-deploy-cloned