Ejemplo n.º 1
0
        run: function (deferred, v, namedArgs, target) {
            var depends = namedArgs.depends,
                exports = namedArgs.exports || '',
                noConflict = namedArgs.noConflict,
                completeMessage = '',
                jsFiles;

            if (depends) {
                depends = depends.split(',').map(function (value) {
                    return "'" + value + "'";
                });
            } else {
                depends = [];
            }

            //Convert the depends to a string.
            depends = depends.join(',');

            if (fs.statSync(target).isDirectory()) {
                //Find all the .js files in the directory and convert them.
                jsFiles = file.getFilteredFileList(target, /\.js$/);
                jsFiles.forEach(function (file) {
                    var msg = main.util.convert(file, depends, exports, noConflict);
                    if (msg) {
                        completeMessage += (completeMessage ? '\n' : '') +  msg;
                    }
                });
                return deferred.resolve(completeMessage);
            } else {
                return deferred.resolve(main.util.convert(target, depends, exports, noConflict));
            }
        },
Ejemplo n.º 2
0
            deferred.resolve(q.call(function () {
                var parsed = parseDepends(depends),
                    promise = q.call(function () {});

                depends = parsed.depends;
                varNames = parsed.varNames;

                if (fs.statSync(target).isDirectory()) {
                    //Find all the .js files in the directory and convert them.
                    jsFiles = file.getFilteredFileList(target, /\.js$/);
                    jsFiles.forEach(function (file) {
                        promise = promise.then(function (msg) {
                            if (msg) {
                                completeMessage += (completeMessage ? '\n' : '') +  msg;
                            }
                            return main.api.convert(file, depends, varNames, exports, {
                                v: v,
                                noConflict: noConflict,
                                noprompt: namedArgs.noprompt
                            });
                        });
                    });

                    //Catch the final conversion message
                    return promise.then(function (msg) {
                        if (msg) {
                            completeMessage += (completeMessage ? '\n' : '') +  msg;
                        }
                        return completeMessage;
                    });
                } else {
                    return main.api.convert(target, depends, varNames, exports, {
                        v: v,
                        noConflict: noConflict,
                        noprompt: namedArgs.noprompt
                    });
                }
            }));
Ejemplo n.º 3
0
Archivo: v.js Proyecto: randylien/volo
 getFilteredFileList: function (startDir, regExpInclude, regExpExclude, dirRegExpExclude) {
     return file.getFilteredFileList(resolve(startDir), regExpInclude, regExpExclude, dirRegExpExclude);
 },
Ejemplo n.º 4
0
        run: function (d, v, namedArgs, targetDir) {
            targetDir = path.resolve(targetDir).replace(/\\/g, '/');

            var registry = {},
                promise = q.call(function () {}),
                pkg, prop, pkgPath, targetId, lastSegment;

            //Include the targetDir in the registry.
            targetId = targetDir.split('/');
            targetId = targetId[targetId.length - 1];
            registry[targetId] = targetDir;

            //Find all the the packages in the node_modules
            getNodePackages(targetDir, registry);

            //For each package, make sure there is a top level adapter module
            //that bridges to the main module.
            for (prop in registry) {
                if (registry.hasOwnProperty(prop)) {
                    //Clean directories/files not needed. Do this before
                    //converting modules to reduce the amount of directories
                    //and unnecessary work.
                    add.api.discard(registry[prop]);
                }
            }

            //Now find all JS files to scan for dependencies and convert.
            file.getFilteredFileList(targetDir, /\.js$/).forEach(function (file) {
                var contents = v.read(file);

                //Convert dependencies to be relative ones.
                contents = contents.replace(requireRegExp, function (match, id) {
                    //Remove any trailing ".js" on the ID because that does
                    //not work for AMD.
                    id = id.replace(/\.js$/, '');

                    var parts = id.split('/'),
                        prefix = parts[0];

                    if (registry[prefix]) {
                        parts[0] = relativize(registry[prefix], file);
                        return "require('" +
                                parts.join('/') +
                                "')";
                    } else {
                        return "require('" + id + "')";
                    }
                });

                v.write(file, contents);

                //Convert the module to AMD, but do not freak if it fails,
                //probably malformed JS anyway.

                promise = promise.then(function (msg) {
                    var dconvert = q.defer();
                    try {
                        amdConvert(file).then(function () {
                            dconvert.resolve();
                        }, function (err) {
                            //Do not care if it errors out, probably
                            //malformed to start.
                            dconvert.resolve();
                        });
                    } catch (e) {
                        dconvert.resolve();
                    }
                    return dconvert.promise;
                });
            });

            //For each package, make sure there is a top level adapter module
            //that bridges to the main module.
            for (prop in registry) {
                if (registry.hasOwnProperty(prop)) {
                    pkgPath = registry[prop];
                    pkg = packageJson(pkgPath);
                    lastSegment = pkgPath.split('/');
                    lastSegment = lastSegment[lastSegment.length - 1];
                    if (pkg && pkg.data && pkg.data.main) {
                        makeMainAmdAdapter(pkg.data.main, './' + lastSegment, pkgPath + '.js');
                    }
                }
            }

            d.resolve(promise);
        }