destinationFiles.map( function( filePath ) {

				var fileType = filePath.split( "." ).pop().toLowerCase();
				var output, generator;


				// search for the correct generator by filetype
				if ( fileType === 'scss' && options.useSassMaps) {

					generator = generateSassMaps;

				} else if ( mout.array.contains( fileExtensions.css, fileType ) ) {

					generator = generateStyle;

				} else if ( mout.array.contains( fileExtensions.js, fileType ) ) {

					generator = options.amd ? generateAMD : generateJS;

				} else {
					grunt.log.warn( "Unknown filetype (" + fileType + ")." );
					return false;
				}

				// generate and save output
				output = generator.apply( null, [ srcConfig, fileType ] );
				grunt.file.write( filePath, output );

				grunt.log.ok( "File: " + filePath + " created." );
			} );
示例#2
0
Manager.prototype.configure = function (setup) {
  var targetsHash = {};
  this._conflicted = {};

  // Targets - ignore those specified in ignoredDependencies
  this._targets = mout.array.reject(setup.targets || [], function (target) {
    return mout.array.contains(this._config.ignoredDependencies, target.name);
  }, this);

  this._targets.forEach(function (decEndpoint) {
    decEndpoint.initialName = decEndpoint.name;
    decEndpoint.dependants = mout.object.values(decEndpoint.dependants);
    targetsHash[decEndpoint.name] = true;

    // If the endpoint is marked as newly, make it unresolvable
    decEndpoint.unresolvable = !!decEndpoint.newly;
  });

  // Resolved & installed
  this._resolved = {};
  this._installed = {};
  mout.object.forOwn(setup.resolved, function (decEndpoint, name) {
    decEndpoint.dependants = mout.object.values(decEndpoint.dependants);
    this._resolved[name] = [decEndpoint];
    this._installed[name] = decEndpoint.pkgMeta;
  }, this);

  // Installed
  mout.object.mixIn(this._installed, setup.installed);

  // Incompatibles
  this._incompatibles = {};
  setup.incompatibles = this._uniquify(setup.incompatibles || []);
  setup.incompatibles.forEach(function (decEndpoint) {
    var name = decEndpoint.name;

    this._incompatibles[name] = this._incompatibles[name] || [];
    this._incompatibles[name].push(decEndpoint);
    decEndpoint.dependants = mout.object.values(decEndpoint.dependants);

    // Mark as conflicted so that the resolution is not removed
    this._conflicted[name] = true;

    // If not a target/resolved, add as target
    if (!targetsHash[name] && !this._resolved[name]) {
      this._targets.push(decEndpoint);
    }
  }, this);

  // Resolutions
  this._resolutions = setup.resolutions || {};

  // Uniquify targets
  this._targets = this._uniquify(this._targets);

  // Force-latest
  this._forceLatest = !!setup.forceLatest;

  return this;
};
示例#3
0
var run = function (cmdString, action, logger, config) {
    logger.action(action, cmdString);

    //pass env + BOWER_PID so callees can identify a preinstall+postinstall from the same bower instance
    var env = mout.object.mixIn({ 'BOWER_PID': process.pid }, process.env);
    var args = shellquote.parse(cmdString, env);
    var cmdName = args[0];
    mout.array.remove(args, cmdName); //no rest() in mout

    var options = {
        cwd: config.cwd,
        env: env
    };

    var promise = cmd(cmdName, args, options);

    promise.progress(function (progress) {
        progress.split('\n').forEach(function (line) {
            if (line) {
                logger.action(action, line);
            }
        });
    });

    return promise;
};
示例#4
0
            entries = entries.filter(function (entry) {
                return !!mout.array.find(decEndpoints, function (decEndpoint) {
                    var entryPkgMeta = entry.pkgMeta;

                    // Check if name or source match the entry
                    if  (decEndpoint.name !== entryPkgMeta.name &&
                        decEndpoint.source !== entryPkgMeta.name &&
                        decEndpoint.source !== entryPkgMeta._source
                    ) {
                        return false;
                    }

                    // If target is a wildcard, simply return true
                    if (decEndpoint.target === '*') {
                        return true;
                    }

                    // If it's a semver target, compare using semver spec
                    if (semver.validRange(decEndpoint.target)) {
                        return semver.satisfies(entryPkgMeta.version, decEndpoint.target);
                    }

                    // Otherwise, compare against target/release
                    return decEndpoint.target === entryPkgMeta._target ||
                           decEndpoint.target === entryPkgMeta._release;
                });
            });
示例#5
0
			.spread(function(ConcreteResolver, versions){

				// No versioned endpoints
				if(ConcreteResolver === resolvers.Fs)
					return noVersioned;

				// Versioned endpoints
				if(
					ConcreteResolver === resolvers.GitRemote||
					ConcreteResolver === resolvers.GitHub
				) {

					var lookup = { versions : {} };

					mout.array.forEach(versions, function(version){

						lookup.versions[version] = { hash: version};

					});

					return lookup;

				}

				return fail;
			})
var filterStyleFiles = function(main){
    return mout.array.filter(
        mout.lang.toArray(main),
        function(item){
            return /\.css$/.test( item );
        }
    );
};
示例#7
0
var orderByDependencies = function (packages, installed, json) {
    var ordered = [];
    installed = mout.object.keys(installed);

    var depsSatisfied = function (packageName) {
        return mout.array.difference(mout.object.keys(packages[packageName].dependencies), installed, ordered).length === 0;
    };

    var depsFromBowerJson = json && json.dependencies ? mout.object.keys(json.dependencies) : [];
    var packageNames = mout.object.keys(packages);

    //get the list of the packages that are specified in bower.json in that order
    //its nice to maintain that order for users
    var desiredOrder = mout.array.intersection(depsFromBowerJson, packageNames);
    //then add to the end any remaining packages that werent in bower.json
    desiredOrder = desiredOrder.concat(mout.array.difference(packageNames, desiredOrder));

    //the desired order isn't necessarily a correct dependency specific order
    //so we ensure that below
    var resolvedOne = true;
    while (resolvedOne) {

        resolvedOne = false;

        for (var i = 0; i < desiredOrder.length; i++) {
            var packageName = desiredOrder[i];
            if (depsSatisfied(packageName)) {
                ordered.push(packageName);
                mout.array.remove(desiredOrder, packageName);
                //as soon as we resolve a package start the loop again
                resolvedOne = true;
                break;
            }
        }

        if (!resolvedOne && desiredOrder.length > 0) {
            //if we're here then some package(s) doesn't have all its deps satisified
            //so lets just jam those names on the end
            ordered = ordered.concat(desiredOrder);
        }

    }

    return ordered;
};
示例#8
0
 .then(function (confirmed) {
     // If the user decided to skip it, remove from the array so that it won't
     // influence subsequent dependants
     if (!confirmed) {
         mout.array.remove(names, name);
     } else {
         packages[name] = decEndpoint.canonicalDir;
     }
 });
PackageAdapter.parseContributorsProperty = function(authors){

    authors= mout.lang.toArray(authors);

    if(authors.length > 1)
        return mout.array.map(authors, resolvePeopleFields);

    return;
};
示例#10
0
    names.forEach(function (name) {

      // Prevent from infinite recursion when installing cyclic
      // dependencies
      if (!mout.array.contains(upperDeps, name)) {
        data.dependencies[name] = this.toData(decEndpoint.dependencies[name],
          extraKeys,
          upperDeps.concat(decEndpoint.name));
      }
    }, this);