API Docs for:
Show:

File: lib/bundled-commands/Sync.js

                        // Generated by CoffeeScript 1.7.1
                        "use strict";
                        var Helpers, LineUp, Promise, Sync, fs, lineup, path, register, tree, util, _;
                        
                        tree = require("read-package-tree");
                        
                        _ = require("lodash");
                        
                        path = require("path");
                        
                        fs = require("fs");
                        
                        util = require("util");
                        
                        Promise = require("bluebird");
                        
                        Helpers = require("../util/Helpers");
                        
                        register = new Helpers();
                        
                        LineUp = require("lineup");
                        
                        lineup = new LineUp();
                        
                        
                        /**
                         * Class to sync bundled / local hooks , helps in registering hooks in short
                         * @class Sync
                         * @constructor
                         */
                        
                        Sync = (function() {
                          function Sync() {
                        
                            /**
                               * @property content_path
                               * @type {String} path to content directory to save bundled and app specific hooks
                             */
                            this.content_path = path.join(__dirname, "../../content");
                        
                            /**
                               * @property project_path
                               * @type {String} path to ngCli root
                             */
                            this.project_path = path.join(__dirname, "../../");
                          }
                        
                        
                          /**
                             * @method init
                             * @param type {String} bundled or nothing
                             * @return {promise} Returns promise object with config(if not bundled) and project root
                           */
                        
                          Sync.prototype.init = function(type) {
                            var config, defer;
                            defer = Promise.defer();
                            if (type) {
                              this.modules = path.join(this.content_path, "bundled.js");
                              config = {};
                              config.project_root = this.project_path;
                              defer.resolve(config);
                            } else {
                              this.modules = path.join(this.content_path, "modules.js");
                              register.getConfig(function(err, config) {
                                if (err) {
                                  defer.reject(err);
                                } else {
                                  defer.resolve(config);
                                }
                              });
                            }
                            return defer.promise;
                          };
                        
                        
                          /**
                             * @method fetchModules
                             * @param config {Object} config object to obtain project root and scan npm modules for ng hooks
                             * @return {promise} Returns promise with list of ng hooks
                           */
                        
                          Sync.prototype.fetchModules = function(config) {
                            var defer, project_root;
                            defer = Promise.defer();
                            project_root = config.project_root;
                            tree(project_root, function(err, modules) {
                              var hooks;
                              if (err) {
                                return defer.reject(err);
                              } else {
                                hooks = {};
                                _.each(modules.children, function(values) {
                                  if (values["package"]["ng-hook"]) {
                                    hooks[values.realpath] = values["package"]["ng-hook"];
                                  }
                                });
                                return defer.resolve(hooks);
                              }
                            });
                            return defer.promise;
                          };
                        
                        
                          /**
                             * @method registerModules
                             * @param modules {Object} Hooks object to register standalone and dependent hooks as local js modules
                             * @return {String} Returns promise with success or error on saving hooks
                           */
                        
                          Sync.prototype.registerModules = function(modules) {
                            var defer, depends, module_string, self, standalone;
                            defer = Promise.defer();
                            self = this;
                            standalone = [];
                            depends = [];
                            _.each(modules, function(v, k) {
                              v.weight = v.weight || 0;
                              if (v["hook-for"] && v.name) {
                                if (v.after) {
                                  _.each(v.after, function(after) {
                                    return depends.push({
                                      after: after,
                                      name: v.name,
                                      path: k,
                                      weight: v.weight,
                                      attached: v["hook-for"]
                                    });
                                  });
                                } else {
                                  standalone.push({
                                    name: v.name,
                                    path: k,
                                    weight: v.weight,
                                    attached: v["hook-for"]
                                  });
                                }
                              }
                            });
                            modules = {
                              standalone: standalone,
                              depends: depends
                            };
                            modules = JSON.stringify(modules);
                            module_string = "module.exports = " + util.inspect(modules);
                            fs.writeFileSync(self.modules, module_string);
                            defer.resolve("Registered modules successfully");
                            return defer.promise;
                          };
                        
                          return Sync;
                        
                        })();
                        
                        module.exports = Sync;