Skip to content

Commit

Permalink
Plugin loader (reactioncommerce#1162)
Browse files Browse the repository at this point in the history
* convert register.js to json for plugins

* build base of plugin/registry loader

* add tag and navbar ui register.json

* fix missing import for theme registerTheme

* write imports to plugins.js on client and server

* stop saving imports to database

* clarify variable naming

* update gitignore

* automatically import any plugins that exist

* add warning message to plugin imports files

* switch registry files back to js

* add bash version of plugin loader for Docker build

* refactor development plugin loader to use JS registry files

* remove manual plugin imports

* only use JS plugin loader in development

* setup plugin imports in CircleCI

* make Docker scripts executable

* less specific NODE_ENV for plugin loader

* remove unnecessary plugin loader script from CI

* put plugin loader script back in CI
  • Loading branch information
jshimko authored and mikemurray committed Jul 19, 2016
1 parent 2b3df21 commit 6ab0e6b
Show file tree
Hide file tree
Showing 27 changed files with 236 additions and 84 deletions.
25 changes: 13 additions & 12 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
node_modules
lib-cov
*.seed
*.log
.DS_Store
.fileStorage/
.idea
*.csv
*.dat
*.gz
*.log
*.out
*.pid
*.gz
*.seed
*.sublime-project
*.sublime-workspace
.idea
.DS_Store

pids
jsdoc.json
lib-cov
logs
results
node_modules
npm-debug.log
.fileStorage/
packages/reaction-core/lib/bower
pids
results

jsdoc.json
client/plugins.js
server/plugins.js
3 changes: 2 additions & 1 deletion circle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ dependencies:
override:
- cd $HOME/reaction
- chmod +x bin/clone-packages.sh
- ./bin/clone-packages.sh
- bin/clone-packages.sh
- docker/scripts/plugin-loader.sh
- if [[ -e ~/docker/image.tar ]]; then docker load -i ~/docker/image.tar; fi
- docker build -f docker/reaction.ci.dockerfile -t reactioncommerce/prequel .
- mkdir -p ~/docker; docker save reactioncommerce/prequel > ~/docker/image.tar
Expand Down
23 changes: 0 additions & 23 deletions client/main.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,4 @@

/**
* Plugins
*/
import "/imports/plugins/core/checkout/client";
import "/imports/plugins/core/dashboard/client";
import "/imports/plugins/core/layout/client";
import "/imports/plugins/core/orders/client";
import "/imports/plugins/core/ui/client";
import "/imports/plugins/core/ui-navbar/client";
import "/imports/plugins/core/ui-tagnav/client";

import "/imports/plugins/included/analytics/client";
import "/imports/plugins/included/inventory/client";
import "/imports/plugins/included/paypal/client";
import "/imports/plugins/included/product-variant/client";
import "/imports/plugins/included/shipping/client";
import "/imports/plugins/included/social/client";
// Payment Methods
import "/imports/plugins/included/stripe/client";
import "/imports/plugins/included/example-paymentmethod/client";
import "/imports/plugins/included/authnet/client";
import "/imports/plugins/included/braintree/client";

/**
* Themes
*/
Expand Down
2 changes: 2 additions & 0 deletions docker/scripts/build-meteor.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ cd $APP_SOURCE_DIR
# Customize packages
bash $BUILD_SCRIPTS_DIR/build-packages.sh

# Generate plugin import files
bash $BUILD_SCRIPTS_DIR/plugin-loader.sh

# Install app deps
meteor npm install --production
Expand Down
Empty file modified docker/scripts/build-packages.sh
100644 → 100755
Empty file.
Empty file modified docker/scripts/entrypoint.sh
100644 → 100755
Empty file.
Empty file modified docker/scripts/install-deps.sh
100644 → 100755
Empty file.
Empty file modified docker/scripts/install-meteor.sh
100644 → 100755
Empty file.
Empty file modified docker/scripts/install-node.sh
100644 → 100755
Empty file.
Empty file modified docker/scripts/install-phantom.sh
100644 → 100755
Empty file.
32 changes: 32 additions & 0 deletions docker/scripts/plugin-loader.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash

set -e

# set the plugin import file paths
CLIENT_PLUGINS_FILE=./client/plugins.js
SERVER_PLUGINS_FILE=./server/plugins.js

# clear any contents in the import files
> ./client/plugins.js
> ./server/plugins.js

# define plugin subdirectories
PLUGIN_SUB_DIRS=("core" "custom" "included")

# generate plugin import files on client and server
for plugins in "${PLUGIN_SUB_DIRS[@]}"; do
for dir in $(find ./imports/plugins/$plugins -mindepth 1 -maxdepth 1 -type d); do
if [[ -f "$dir/client/index.js" ]]; then
IMPORT_PATH=$(echo "$dir/client/index.js" | cut -c2-)
echo "import \"$IMPORT_PATH\"" >> $CLIENT_PLUGINS_FILE
fi
if [[ -f "$dir/server/index.js" ]]; then
IMPORT_PATH=$(echo "$dir/server/index.js" | cut -c2-)
echo "import \"$IMPORT_PATH\"" >> $SERVER_PLUGINS_FILE
fi
if [[ -f "$dir/register.js" ]]; then
IMPORT_PATH=$(echo "$dir/register.js" | cut -c2-)
echo "import \"$IMPORT_PATH\"" >> $SERVER_PLUGINS_FILE
fi
done
done
Empty file modified docker/scripts/post-build-cleanup.sh
100644 → 100755
Empty file.
Empty file modified docker/scripts/post-install-cleanup.sh
100644 → 100755
Empty file.
4 changes: 0 additions & 4 deletions imports/plugins/core/layout/register.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { Reaction } from "/server/api";


// Register Themes
Reaction.registerTheme(Assets.getText("themes/notFound.css"));

Reaction.registerPackage({
label: "Layout",
name: "reaction-layout",
Expand Down
1 change: 1 addition & 0 deletions imports/plugins/core/layout/server/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import "./theme";
4 changes: 4 additions & 0 deletions imports/plugins/core/layout/server/theme.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { Reaction } from "/server/api";

// Register Themes
Reaction.registerTheme(Assets.getText("themes/notFound.css"));
6 changes: 5 additions & 1 deletion imports/plugins/core/ui-navbar/register.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import { Reaction } from "/server/api";

Reaction.registerTheme(Assets.getText("themes/navbar.css"));
Reaction.registerPackage({
label: "UI Navbar",
name: "reaction-ui-navbar",
autoEnable: true
});
Empty file.
3 changes: 3 additions & 0 deletions imports/plugins/core/ui-navbar/server/theme.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { Reaction } from "/server/api";

Reaction.registerTheme(Assets.getText("themes/navbar.css"));
7 changes: 7 additions & 0 deletions imports/plugins/core/ui-tagnav/register.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { Reaction } from "/server/api";

Reaction.registerPackage({
label: "UI TagNav",
name: "reaction-ui-tagnav",
autoEnable: true
});
2 changes: 0 additions & 2 deletions imports/plugins/core/ui/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,3 @@ Reaction.registerPackage({
}
}]
});

Reaction.registerTheme(Assets.getText("themes/button.css"));
3 changes: 3 additions & 0 deletions imports/plugins/core/ui/server/theme.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { Reaction } from "/server/api";

Reaction.registerTheme(Assets.getText("themes/button.css"));
4 changes: 2 additions & 2 deletions imports/plugins/included/social/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ Reaction.registerPackage({
autoInit: true,
apps: {
facebook: _.extend({
appId: void 0,
appId: "",
version: "v2.1"
}, DefaultSocialApp),
twitter: _.extend({
username: void 0
username: ""
}, DefaultSocialApp),
googleplus: _.extend({}, DefaultSocialApp),
pinterest: _.extend({}, DefaultSocialApp)
Expand Down
1 change: 1 addition & 0 deletions lib/collections/schemas/registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ export const Registry = new SimpleSchema({
}
});


/**
* PackageConfig Schema
*/
Expand Down
39 changes: 0 additions & 39 deletions server/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,42 +6,3 @@ Meteor.startup(() => {
Startup();
Security();
});


/**
* Plugin imports
*/
import "/imports/plugins/core/checkout/server";
import "/imports/plugins/core/orders/server";

import "/imports/plugins/included/analytics/server";
import "/imports/plugins/included/inventory/server";
import "/imports/plugins/included/paypal/server";
import "/imports/plugins/included/shipping/server";
import "/imports/plugins/included/social/server";
// Payment Methods
import "/imports/plugins/included/stripe/server";
import "/imports/plugins/included/example-paymentmethod/server";
import "/imports/plugins/included/authnet/server";
import "/imports/plugins/included/braintree/server";

/**
* Plugin Registry
*/
import "/imports/plugins/core/checkout/register";
import "/imports/plugins/core/dashboard/register";
import "/imports/plugins/core/layout/register";
import "/imports/plugins/core/orders/register";
import "/imports/plugins/core/ui/register";

import "/imports/plugins/included/analytics/register";
import "/imports/plugins/included/inventory/register";
import "/imports/plugins/included/paypal/register";
import "/imports/plugins/included/product-variant/register";
import "/imports/plugins/included/shipping/register";
import "/imports/plugins/included/social/register";
// Payment Methods
import "/imports/plugins/included/stripe/register";
import "/imports/plugins/included/example-paymentmethod/register";
import "/imports/plugins/included/authnet/register";
import "/imports/plugins/included/braintree/register";
2 changes: 2 additions & 0 deletions server/startup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import i18n from "./i18n";
import Jobs from "./jobs";
import Load from "./load-data";
import Packages from "./packages";
import Plugins from "./plugins";
import Registry from "./registry";
import Init from "./init";

Expand All @@ -12,6 +13,7 @@ export default function () {
Jobs();
Load();
Packages();
Plugins();
Registry();
Init();
}
Loading

0 comments on commit 6ab0e6b

Please sign in to comment.