embeditor-rails 1.1.1 → 2.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +25 -17
- data/app/assets/javascripts/embeditor/adapter.js.coffee +21 -2
- data/app/assets/javascripts/embeditor/adapters/embedly.js.coffee +4 -40
- data/app/assets/javascripts/embeditor/adapters/oembed.js.coffee +37 -2
- data/app/assets/javascripts/embeditor/embeditor.js.coffee +16 -4
- data/lib/embeditor-rails/version.rb +1 -1
- data/lib/node_modules/npm/AUTHORS +158 -0
- data/lib/node_modules/npm/CONTRIBUTING.md +9 -0
- data/lib/node_modules/npm/LICENSE +235 -0
- data/lib/node_modules/npm/Makefile +216 -0
- data/lib/node_modules/npm/README.md +241 -0
- data/lib/node_modules/npm/bin/node-gyp-bin/node-gyp +2 -0
- data/lib/node_modules/npm/bin/node-gyp-bin/node-gyp.cmd +1 -0
- data/lib/node_modules/npm/bin/npm +13 -0
- data/lib/node_modules/npm/bin/npm-cli.js +87 -0
- data/lib/node_modules/npm/bin/npm.cmd +6 -0
- data/lib/node_modules/npm/bin/read-package-json.js +22 -0
- data/lib/node_modules/npm/cli.js +2 -0
- data/lib/node_modules/npm/configure +33 -0
- data/lib/node_modules/npm/doc/api/npm-bin.md +13 -0
- data/lib/node_modules/npm/doc/api/npm-bugs.md +19 -0
- data/lib/node_modules/npm/doc/api/npm-commands.md +22 -0
- data/lib/node_modules/npm/doc/api/npm-config.md +45 -0
- data/lib/node_modules/npm/doc/api/npm-deprecate.md +34 -0
- data/lib/node_modules/npm/doc/api/npm-docs.md +19 -0
- data/lib/node_modules/npm/doc/api/npm-edit.md +24 -0
- data/lib/node_modules/npm/doc/api/npm-explore.md +18 -0
- data/lib/node_modules/npm/doc/api/npm-help-search.md +30 -0
- data/lib/node_modules/npm/doc/api/npm-init.md +29 -0
- data/lib/node_modules/npm/doc/api/npm-install.md +19 -0
- data/lib/node_modules/npm/doc/api/npm-link.md +33 -0
- data/lib/node_modules/npm/doc/api/npm-load.md +26 -0
- data/lib/node_modules/npm/doc/api/npm-ls.md +56 -0
- data/lib/node_modules/npm/doc/api/npm-outdated.md +13 -0
- data/lib/node_modules/npm/doc/api/npm-owner.md +31 -0
- data/lib/node_modules/npm/doc/api/npm-pack.md +19 -0
- data/lib/node_modules/npm/doc/api/npm-prefix.md +15 -0
- data/lib/node_modules/npm/doc/api/npm-prune.md +17 -0
- data/lib/node_modules/npm/doc/api/npm-publish.md +30 -0
- data/lib/node_modules/npm/doc/api/npm-rebuild.md +16 -0
- data/lib/node_modules/npm/doc/api/npm-repo.md +19 -0
- data/lib/node_modules/npm/doc/api/npm-restart.md +22 -0
- data/lib/node_modules/npm/doc/api/npm-root.md +15 -0
- data/lib/node_modules/npm/doc/api/npm-run-script.md +27 -0
- data/lib/node_modules/npm/doc/api/npm-search.md +35 -0
- data/lib/node_modules/npm/doc/api/npm-shrinkwrap.md +20 -0
- data/lib/node_modules/npm/doc/api/npm-start.md +13 -0
- data/lib/node_modules/npm/doc/api/npm-stop.md +13 -0
- data/lib/node_modules/npm/doc/api/npm-submodule.md +28 -0
- data/lib/node_modules/npm/doc/api/npm-tag.md +23 -0
- data/lib/node_modules/npm/doc/api/npm-test.md +16 -0
- data/lib/node_modules/npm/doc/api/npm-uninstall.md +16 -0
- data/lib/node_modules/npm/doc/api/npm-unpublish.md +20 -0
- data/lib/node_modules/npm/doc/api/npm-update.md +11 -0
- data/lib/node_modules/npm/doc/api/npm-version.md +18 -0
- data/lib/node_modules/npm/doc/api/npm-view.md +93 -0
- data/lib/node_modules/npm/doc/api/npm-whoami.md +15 -0
- data/lib/node_modules/npm/doc/api/npm.md +116 -0
- data/lib/node_modules/npm/doc/cli/npm-adduser.md +38 -0
- data/lib/node_modules/npm/doc/cli/npm-bin.md +19 -0
- data/lib/node_modules/npm/doc/cli/npm-bugs.md +42 -0
- data/lib/node_modules/npm/doc/cli/npm-build.md +22 -0
- data/lib/node_modules/npm/doc/cli/npm-bundle.md +14 -0
- data/lib/node_modules/npm/doc/cli/npm-cache.md +72 -0
- data/lib/node_modules/npm/doc/cli/npm-completion.md +29 -0
- data/lib/node_modules/npm/doc/cli/npm-config.md +71 -0
- data/lib/node_modules/npm/doc/cli/npm-dedupe.md +58 -0
- data/lib/node_modules/npm/doc/cli/npm-deprecate.md +26 -0
- data/lib/node_modules/npm/doc/cli/npm-docs.md +44 -0
- data/lib/node_modules/npm/doc/cli/npm-edit.md +37 -0
- data/lib/node_modules/npm/doc/cli/npm-explore.md +40 -0
- data/lib/node_modules/npm/doc/cli/npm-help-search.md +35 -0
- data/lib/node_modules/npm/doc/cli/npm-help.md +40 -0
- data/lib/node_modules/npm/doc/cli/npm-init.md +25 -0
- data/lib/node_modules/npm/doc/cli/npm-install.md +252 -0
- data/lib/node_modules/npm/doc/cli/npm-link.md +63 -0
- data/lib/node_modules/npm/doc/cli/npm-ls.md +80 -0
- data/lib/node_modules/npm/doc/cli/npm-outdated.md +58 -0
- data/lib/node_modules/npm/doc/cli/npm-owner.md +33 -0
- data/lib/node_modules/npm/doc/cli/npm-pack.md +27 -0
- data/lib/node_modules/npm/doc/cli/npm-prefix.md +19 -0
- data/lib/node_modules/npm/doc/cli/npm-prune.md +25 -0
- data/lib/node_modules/npm/doc/cli/npm-publish.md +30 -0
- data/lib/node_modules/npm/doc/cli/npm-rebuild.md +21 -0
- data/lib/node_modules/npm/doc/cli/npm-repo.md +28 -0
- data/lib/node_modules/npm/doc/cli/npm-restart.md +22 -0
- data/lib/node_modules/npm/doc/cli/npm-rm.md +23 -0
- data/lib/node_modules/npm/doc/cli/npm-root.md +19 -0
- data/lib/node_modules/npm/doc/cli/npm-run-script.md +21 -0
- data/lib/node_modules/npm/doc/cli/npm-search.md +36 -0
- data/lib/node_modules/npm/doc/cli/npm-shrinkwrap.md +185 -0
- data/lib/node_modules/npm/doc/cli/npm-star.md +22 -0
- data/lib/node_modules/npm/doc/cli/npm-stars.md +22 -0
- data/lib/node_modules/npm/doc/cli/npm-start.md +18 -0
- data/lib/node_modules/npm/doc/cli/npm-stop.md +18 -0
- data/lib/node_modules/npm/doc/cli/npm-submodule.md +28 -0
- data/lib/node_modules/npm/doc/cli/npm-tag.md +34 -0
- data/lib/node_modules/npm/doc/cli/npm-test.md +22 -0
- data/lib/node_modules/npm/doc/cli/npm-uninstall.md +21 -0
- data/lib/node_modules/npm/doc/cli/npm-unpublish.md +32 -0
- data/lib/node_modules/npm/doc/cli/npm-update.md +24 -0
- data/lib/node_modules/npm/doc/cli/npm-version.md +45 -0
- data/lib/node_modules/npm/doc/cli/npm-view.md +90 -0
- data/lib/node_modules/npm/doc/cli/npm-whoami.md +17 -0
- data/lib/node_modules/npm/doc/cli/npm.md +153 -0
- data/lib/node_modules/npm/doc/files/npm-folders.md +211 -0
- data/lib/node_modules/npm/doc/files/npmrc.md +59 -0
- data/lib/node_modules/npm/doc/files/package.json.md +576 -0
- data/lib/node_modules/npm/doc/misc/npm-coding-style.md +181 -0
- data/lib/node_modules/npm/doc/misc/npm-config.md +820 -0
- data/lib/node_modules/npm/doc/misc/npm-developers.md +207 -0
- data/lib/node_modules/npm/doc/misc/npm-disputes.md +99 -0
- data/lib/node_modules/npm/doc/misc/npm-faq.md +364 -0
- data/lib/node_modules/npm/doc/misc/npm-index.md +411 -0
- data/lib/node_modules/npm/doc/misc/npm-registry.md +69 -0
- data/lib/node_modules/npm/doc/misc/npm-scripts.md +245 -0
- data/lib/node_modules/npm/doc/misc/removing-npm.md +54 -0
- data/lib/node_modules/npm/doc/misc/semver.md +111 -0
- data/lib/node_modules/npm/html/doc/README.html +276 -0
- data/lib/node_modules/npm/html/doc/api/npm-bin.html +53 -0
- data/lib/node_modules/npm/html/doc/api/npm-bugs.html +59 -0
- data/lib/node_modules/npm/html/doc/api/npm-commands.html +62 -0
- data/lib/node_modules/npm/html/doc/api/npm-config.html +67 -0
- data/lib/node_modules/npm/html/doc/api/npm-deprecate.html +66 -0
- data/lib/node_modules/npm/html/doc/api/npm-docs.html +59 -0
- data/lib/node_modules/npm/html/doc/api/npm-edit.html +64 -0
- data/lib/node_modules/npm/html/doc/api/npm-explore.html +58 -0
- data/lib/node_modules/npm/html/doc/api/npm-help-search.html +66 -0
- data/lib/node_modules/npm/html/doc/api/npm-init.html +69 -0
- data/lib/node_modules/npm/html/doc/api/npm-install.html +59 -0
- data/lib/node_modules/npm/html/doc/api/npm-link.html +73 -0
- data/lib/node_modules/npm/html/doc/api/npm-load.html +66 -0
- data/lib/node_modules/npm/html/doc/api/npm-ls.html +93 -0
- data/lib/node_modules/npm/html/doc/api/npm-outdated.html +53 -0
- data/lib/node_modules/npm/html/doc/api/npm-owner.html +68 -0
- data/lib/node_modules/npm/html/doc/api/npm-pack.html +59 -0
- data/lib/node_modules/npm/html/doc/api/npm-prefix.html +55 -0
- data/lib/node_modules/npm/html/doc/api/npm-prune.html +57 -0
- data/lib/node_modules/npm/html/doc/api/npm-publish.html +66 -0
- data/lib/node_modules/npm/html/doc/api/npm-rebuild.html +56 -0
- data/lib/node_modules/npm/html/doc/api/npm-repo.html +59 -0
- data/lib/node_modules/npm/html/doc/api/npm-restart.html +61 -0
- data/lib/node_modules/npm/html/doc/api/npm-root.html +55 -0
- data/lib/node_modules/npm/html/doc/api/npm-run-script.html +63 -0
- data/lib/node_modules/npm/html/doc/api/npm-search.html +66 -0
- data/lib/node_modules/npm/html/doc/api/npm-shrinkwrap.html +60 -0
- data/lib/node_modules/npm/html/doc/api/npm-start.html +53 -0
- data/lib/node_modules/npm/html/doc/api/npm-stop.html +53 -0
- data/lib/node_modules/npm/html/doc/api/npm-submodule.html +67 -0
- data/lib/node_modules/npm/html/doc/api/npm-tag.html +63 -0
- data/lib/node_modules/npm/html/doc/api/npm-test.html +56 -0
- data/lib/node_modules/npm/html/doc/api/npm-uninstall.html +56 -0
- data/lib/node_modules/npm/html/doc/api/npm-unpublish.html +60 -0
- data/lib/node_modules/npm/html/doc/api/npm-update.html +52 -0
- data/lib/node_modules/npm/html/doc/api/npm-version.html +58 -0
- data/lib/node_modules/npm/html/doc/api/npm-view.html +133 -0
- data/lib/node_modules/npm/html/doc/api/npm-whoami.html +55 -0
- data/lib/node_modules/npm/html/doc/api/npm.html +126 -0
- data/lib/node_modules/npm/html/doc/cli/npm-adduser.html +73 -0
- data/lib/node_modules/npm/html/doc/cli/npm-bin.html +54 -0
- data/lib/node_modules/npm/html/doc/cli/npm-bugs.html +72 -0
- data/lib/node_modules/npm/html/doc/cli/npm-build.html +59 -0
- data/lib/node_modules/npm/html/doc/cli/npm-bundle.html +54 -0
- data/lib/node_modules/npm/html/doc/cli/npm-cache.html +100 -0
- data/lib/node_modules/npm/html/doc/cli/npm-completion.html +67 -0
- data/lib/node_modules/npm/html/doc/cli/npm-config.html +107 -0
- data/lib/node_modules/npm/html/doc/cli/npm-dedupe.html +96 -0
- data/lib/node_modules/npm/html/doc/cli/npm-deprecate.html +65 -0
- data/lib/node_modules/npm/html/doc/cli/npm-docs.html +75 -0
- data/lib/node_modules/npm/html/doc/cli/npm-edit.html +71 -0
- data/lib/node_modules/npm/html/doc/cli/npm-explore.html +74 -0
- data/lib/node_modules/npm/html/doc/cli/npm-help-search.html +72 -0
- data/lib/node_modules/npm/html/doc/cli/npm-help.html +70 -0
- data/lib/node_modules/npm/html/doc/cli/npm-init.html +63 -0
- data/lib/node_modules/npm/html/doc/cli/npm-install.html +183 -0
- data/lib/node_modules/npm/html/doc/cli/npm-link.html +96 -0
- data/lib/node_modules/npm/html/doc/cli/npm-ls.html +108 -0
- data/lib/node_modules/npm/html/doc/cli/npm-outdated.html +92 -0
- data/lib/node_modules/npm/html/doc/cli/npm-owner.html +68 -0
- data/lib/node_modules/npm/html/doc/cli/npm-pack.html +63 -0
- data/lib/node_modules/npm/html/doc/cli/npm-prefix.html +54 -0
- data/lib/node_modules/npm/html/doc/cli/npm-prune.html +63 -0
- data/lib/node_modules/npm/html/doc/cli/npm-publish.html +63 -0
- data/lib/node_modules/npm/html/doc/cli/npm-rebuild.html +60 -0
- data/lib/node_modules/npm/html/doc/cli/npm-repo.html +66 -0
- data/lib/node_modules/npm/html/doc/cli/npm-restart.html +58 -0
- data/lib/node_modules/npm/html/doc/cli/npm-rm.html +58 -0
- data/lib/node_modules/npm/html/doc/cli/npm-root.html +54 -0
- data/lib/node_modules/npm/html/doc/cli/npm-run-script.html +57 -0
- data/lib/node_modules/npm/html/doc/cli/npm-search.html +71 -0
- data/lib/node_modules/npm/html/doc/cli/npm-shrinkwrap.html +217 -0
- data/lib/node_modules/npm/html/doc/cli/npm-star.html +60 -0
- data/lib/node_modules/npm/html/doc/cli/npm-stars.html +59 -0
- data/lib/node_modules/npm/html/doc/cli/npm-start.html +54 -0
- data/lib/node_modules/npm/html/doc/cli/npm-stop.html +54 -0
- data/lib/node_modules/npm/html/doc/cli/npm-submodule.html +67 -0
- data/lib/node_modules/npm/html/doc/cli/npm-tag.html +68 -0
- data/lib/node_modules/npm/html/doc/cli/npm-test.html +58 -0
- data/lib/node_modules/npm/html/doc/cli/npm-uninstall.html +56 -0
- data/lib/node_modules/npm/html/doc/cli/npm-unpublish.html +68 -0
- data/lib/node_modules/npm/html/doc/cli/npm-update.html +60 -0
- data/lib/node_modules/npm/html/doc/cli/npm-version.html +83 -0
- data/lib/node_modules/npm/html/doc/cli/npm-view.html +125 -0
- data/lib/node_modules/npm/html/doc/cli/npm-whoami.html +54 -0
- data/lib/node_modules/npm/html/doc/cli/npm.html +165 -0
- data/lib/node_modules/npm/html/doc/files/npm-folders.html +239 -0
- data/lib/node_modules/npm/html/doc/files/npm-global.html +239 -0
- data/lib/node_modules/npm/html/doc/files/npm-json.html +580 -0
- data/lib/node_modules/npm/html/doc/files/npmrc.html +93 -0
- data/lib/node_modules/npm/html/doc/files/package.json.html +580 -0
- data/lib/node_modules/npm/html/doc/index.html +450 -0
- data/lib/node_modules/npm/html/doc/misc/npm-coding-style.html +216 -0
- data/lib/node_modules/npm/html/doc/misc/npm-config.html +744 -0
- data/lib/node_modules/npm/html/doc/misc/npm-developers.html +208 -0
- data/lib/node_modules/npm/html/doc/misc/npm-disputes.html +126 -0
- data/lib/node_modules/npm/html/doc/misc/npm-faq.html +382 -0
- data/lib/node_modules/npm/html/doc/misc/npm-index.html +450 -0
- data/lib/node_modules/npm/html/doc/misc/npm-registry.html +105 -0
- data/lib/node_modules/npm/html/doc/misc/npm-scripts.html +257 -0
- data/lib/node_modules/npm/html/doc/misc/removing-npm.html +92 -0
- data/lib/node_modules/npm/html/doc/misc/semver.html +128 -0
- data/lib/node_modules/npm/html/docfoot-script.html +31 -0
- data/lib/node_modules/npm/html/docfoot.html +2 -0
- data/lib/node_modules/npm/html/dochead.html +8 -0
- data/lib/node_modules/npm/html/favicon.ico +0 -0
- data/lib/node_modules/npm/html/index.html +95 -0
- data/lib/node_modules/npm/html/static/style.css +329 -0
- data/lib/node_modules/npm/lib/adduser.js +138 -0
- data/lib/node_modules/npm/lib/bin.js +18 -0
- data/lib/node_modules/npm/lib/bugs.js +61 -0
- data/lib/node_modules/npm/lib/build.js +228 -0
- data/lib/node_modules/npm/lib/cache.js +1318 -0
- data/lib/node_modules/npm/lib/completion.js +253 -0
- data/lib/node_modules/npm/lib/config.js +285 -0
- data/lib/node_modules/npm/lib/dedupe.js +357 -0
- data/lib/node_modules/npm/lib/deprecate.js +47 -0
- data/lib/node_modules/npm/lib/docs.js +62 -0
- data/lib/node_modules/npm/lib/edit.js +32 -0
- data/lib/node_modules/npm/lib/explore.js +36 -0
- data/lib/node_modules/npm/lib/faq.js +8 -0
- data/lib/node_modules/npm/lib/get.js +12 -0
- data/lib/node_modules/npm/lib/help-search.js +218 -0
- data/lib/node_modules/npm/lib/help.js +231 -0
- data/lib/node_modules/npm/lib/init.js +36 -0
- data/lib/node_modules/npm/lib/install.js +979 -0
- data/lib/node_modules/npm/lib/link.js +173 -0
- data/lib/node_modules/npm/lib/ls.js +357 -0
- data/lib/node_modules/npm/lib/npm.js +528 -0
- data/lib/node_modules/npm/lib/outdated.js +303 -0
- data/lib/node_modules/npm/lib/owner.js +205 -0
- data/lib/node_modules/npm/lib/pack.js +65 -0
- data/lib/node_modules/npm/lib/prefix.js +11 -0
- data/lib/node_modules/npm/lib/prune.js +53 -0
- data/lib/node_modules/npm/lib/publish.js +118 -0
- data/lib/node_modules/npm/lib/rebuild.js +75 -0
- data/lib/node_modules/npm/lib/repo.js +54 -0
- data/lib/node_modules/npm/lib/restart.js +1 -0
- data/lib/node_modules/npm/lib/root.js +11 -0
- data/lib/node_modules/npm/lib/run-script.js +102 -0
- data/lib/node_modules/npm/lib/search.js +265 -0
- data/lib/node_modules/npm/lib/set.js +13 -0
- data/lib/node_modules/npm/lib/shrinkwrap.js +86 -0
- data/lib/node_modules/npm/lib/star.js +33 -0
- data/lib/node_modules/npm/lib/stars.js +27 -0
- data/lib/node_modules/npm/lib/start.js +1 -0
- data/lib/node_modules/npm/lib/stop.js +1 -0
- data/lib/node_modules/npm/lib/submodule.js +119 -0
- data/lib/node_modules/npm/lib/substack.js +20 -0
- data/lib/node_modules/npm/lib/tag.js +18 -0
- data/lib/node_modules/npm/lib/test.js +14 -0
- data/lib/node_modules/npm/lib/unbuild.js +112 -0
- data/lib/node_modules/npm/lib/uninstall.js +127 -0
- data/lib/node_modules/npm/lib/unpublish.js +83 -0
- data/lib/node_modules/npm/lib/update.js +43 -0
- data/lib/node_modules/npm/lib/utils/completion.sh +54 -0
- data/lib/node_modules/npm/lib/utils/completion/file-completion.js +26 -0
- data/lib/node_modules/npm/lib/utils/completion/installed-deep.js +50 -0
- data/lib/node_modules/npm/lib/utils/completion/installed-shallow.js +79 -0
- data/lib/node_modules/npm/lib/utils/error-handler.js +343 -0
- data/lib/node_modules/npm/lib/utils/fetch.js +93 -0
- data/lib/node_modules/npm/lib/utils/find-prefix.js +57 -0
- data/lib/node_modules/npm/lib/utils/gently-rm.js +61 -0
- data/lib/node_modules/npm/lib/utils/is-git-url.js +13 -0
- data/lib/node_modules/npm/lib/utils/lifecycle.js +360 -0
- data/lib/node_modules/npm/lib/utils/link.js +39 -0
- data/lib/node_modules/npm/lib/utils/tar.js +323 -0
- data/lib/node_modules/npm/lib/version.js +120 -0
- data/lib/node_modules/npm/lib/view.js +246 -0
- data/lib/node_modules/npm/lib/visnup.js +42 -0
- data/lib/node_modules/npm/lib/whoami.js +13 -0
- data/lib/node_modules/npm/lib/xmas.js +56 -0
- data/lib/node_modules/npm/make.bat +3 -0
- data/lib/node_modules/npm/man/man1/npm-README.1 +328 -0
- data/lib/node_modules/npm/man/man1/npm-adduser.1 +63 -0
- data/lib/node_modules/npm/man/man1/npm-bin.1 +40 -0
- data/lib/node_modules/npm/man/man1/npm-bugs.1 +78 -0
- data/lib/node_modules/npm/man/man1/npm-build.1 +43 -0
- data/lib/node_modules/npm/man/man1/npm-bundle.1 +23 -0
- data/lib/node_modules/npm/man/man1/npm-cache.1 +104 -0
- data/lib/node_modules/npm/man/man1/npm-completion.1 +47 -0
- data/lib/node_modules/npm/man/man1/npm-config.1 +113 -0
- data/lib/node_modules/npm/man/man1/npm-dedupe.1 +96 -0
- data/lib/node_modules/npm/man/man1/npm-deprecate.1 +48 -0
- data/lib/node_modules/npm/man/man1/npm-docs.1 +78 -0
- data/lib/node_modules/npm/man/man1/npm-edit.1 +66 -0
- data/lib/node_modules/npm/man/man1/npm-explore.1 +76 -0
- data/lib/node_modules/npm/man/man1/npm-help-search.1 +59 -0
- data/lib/node_modules/npm/man/man1/npm-help.1 +77 -0
- data/lib/node_modules/npm/man/man1/npm-init.1 +43 -0
- data/lib/node_modules/npm/man/man1/npm-install.1 +434 -0
- data/lib/node_modules/npm/man/man1/npm-link.1 +119 -0
- data/lib/node_modules/npm/man/man1/npm-ls.1 +146 -0
- data/lib/node_modules/npm/man/man1/npm-outdated.1 +102 -0
- data/lib/node_modules/npm/man/man1/npm-owner.1 +58 -0
- data/lib/node_modules/npm/man/man1/npm-pack.1 +48 -0
- data/lib/node_modules/npm/man/man1/npm-prefix.1 +40 -0
- data/lib/node_modules/npm/man/man1/npm-prune.1 +42 -0
- data/lib/node_modules/npm/man/man1/npm-publish.1 +53 -0
- data/lib/node_modules/npm/man/man1/npm-rebuild.1 +37 -0
- data/lib/node_modules/npm/man/man1/npm-repo.1 +47 -0
- data/lib/node_modules/npm/man/man1/npm-restart.1 +42 -0
- data/lib/node_modules/npm/man/man1/npm-rm.1 +44 -0
- data/lib/node_modules/npm/man/man1/npm-root.1 +40 -0
- data/lib/node_modules/npm/man/man1/npm-run-script.1 +41 -0
- data/lib/node_modules/npm/man/man1/npm-search.1 +62 -0
- data/lib/node_modules/npm/man/man1/npm-shrinkwrap.1 +275 -0
- data/lib/node_modules/npm/man/man1/npm-star.1 +39 -0
- data/lib/node_modules/npm/man/man1/npm-stars.1 +40 -0
- data/lib/node_modules/npm/man/man1/npm-start.1 +37 -0
- data/lib/node_modules/npm/man/man1/npm-stop.1 +37 -0
- data/lib/node_modules/npm/man/man1/npm-submodule.1 +42 -0
- data/lib/node_modules/npm/man/man1/npm-tag.1 +74 -0
- data/lib/node_modules/npm/man/man1/npm-test.1 +42 -0
- data/lib/node_modules/npm/man/man1/npm-uninstall.1 +42 -0
- data/lib/node_modules/npm/man/man1/npm-unpublish.1 +53 -0
- data/lib/node_modules/npm/man/man1/npm-update.1 +45 -0
- data/lib/node_modules/npm/man/man1/npm-version.1 +75 -0
- data/lib/node_modules/npm/man/man1/npm-view.1 +186 -0
- data/lib/node_modules/npm/man/man1/npm-whoami.1 +34 -0
- data/lib/node_modules/npm/man/man1/npm.1 +230 -0
- data/lib/node_modules/npm/man/man3/npm-bin.3 +21 -0
- data/lib/node_modules/npm/man/man3/npm-bugs.3 +28 -0
- data/lib/node_modules/npm/man/man3/npm-commands.3 +35 -0
- data/lib/node_modules/npm/man/man3/npm-config.3 +69 -0
- data/lib/node_modules/npm/man/man3/npm-deprecate.3 +57 -0
- data/lib/node_modules/npm/man/man3/npm-docs.3 +28 -0
- data/lib/node_modules/npm/man/man3/npm-edit.3 +35 -0
- data/lib/node_modules/npm/man/man3/npm-explore.3 +28 -0
- data/lib/node_modules/npm/man/man3/npm-help-search.3 +51 -0
- data/lib/node_modules/npm/man/man3/npm-init.3 +39 -0
- data/lib/node_modules/npm/man/man3/npm-install.3 +29 -0
- data/lib/node_modules/npm/man/man3/npm-link.3 +53 -0
- data/lib/node_modules/npm/man/man3/npm-load.3 +44 -0
- data/lib/node_modules/npm/man/man3/npm-ls.3 +86 -0
- data/lib/node_modules/npm/man/man3/npm-outdated.3 +21 -0
- data/lib/node_modules/npm/man/man3/npm-owner.3 +52 -0
- data/lib/node_modules/npm/man/man3/npm-pack.3 +28 -0
- data/lib/node_modules/npm/man/man3/npm-prefix.3 +24 -0
- data/lib/node_modules/npm/man/man3/npm-prune.3 +27 -0
- data/lib/node_modules/npm/man/man3/npm-publish.3 +51 -0
- data/lib/node_modules/npm/man/man3/npm-rebuild.3 +22 -0
- data/lib/node_modules/npm/man/man3/npm-repo.3 +28 -0
- data/lib/node_modules/npm/man/man3/npm-restart.3 +37 -0
- data/lib/node_modules/npm/man/man3/npm-root.3 +24 -0
- data/lib/node_modules/npm/man/man3/npm-run-script.3 +48 -0
- data/lib/node_modules/npm/man/man3/npm-search.3 +64 -0
- data/lib/node_modules/npm/man/man3/npm-shrinkwrap.3 +30 -0
- data/lib/node_modules/npm/man/man3/npm-start.3 +21 -0
- data/lib/node_modules/npm/man/man3/npm-stop.3 +21 -0
- data/lib/node_modules/npm/man/man3/npm-submodule.3 +42 -0
- data/lib/node_modules/npm/man/man3/npm-tag.3 +31 -0
- data/lib/node_modules/npm/man/man3/npm-test.3 +25 -0
- data/lib/node_modules/npm/man/man3/npm-uninstall.3 +25 -0
- data/lib/node_modules/npm/man/man3/npm-unpublish.3 +30 -0
- data/lib/node_modules/npm/man/man3/npm-update.3 +18 -0
- data/lib/node_modules/npm/man/man3/npm-version.3 +27 -0
- data/lib/node_modules/npm/man/man3/npm-view.3 +176 -0
- data/lib/node_modules/npm/man/man3/npm-whoami.3 +24 -0
- data/lib/node_modules/npm/man/man3/npm.3 +162 -0
- data/lib/node_modules/npm/man/man5/npm-folders.5 +264 -0
- data/lib/node_modules/npm/man/man5/npm-global.5 +264 -0
- data/lib/node_modules/npm/man/man5/npm-json.5 +807 -0
- data/lib/node_modules/npm/man/man5/npmrc.5 +89 -0
- data/lib/node_modules/npm/man/man5/package.json.5 +807 -0
- data/lib/node_modules/npm/man/man7/npm-coding-style.7 +254 -0
- data/lib/node_modules/npm/man/man7/npm-config.7 +1445 -0
- data/lib/node_modules/npm/man/man7/npm-developers.7 +335 -0
- data/lib/node_modules/npm/man/man7/npm-disputes.7 +146 -0
- data/lib/node_modules/npm/man/man7/npm-faq.7 +479 -0
- data/lib/node_modules/npm/man/man7/npm-index.7 +307 -0
- data/lib/node_modules/npm/man/man7/npm-registry.7 +82 -0
- data/lib/node_modules/npm/man/man7/npm-scripts.7 +354 -0
- data/lib/node_modules/npm/man/man7/removing-npm.7 +107 -0
- data/lib/node_modules/npm/man/man7/semver.7 +172 -0
- data/lib/node_modules/npm/node_modules/abbrev/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/abbrev/README.md +23 -0
- data/lib/node_modules/npm/node_modules/abbrev/lib/abbrev.js +111 -0
- data/lib/node_modules/npm/node_modules/abbrev/package.json +25 -0
- data/lib/node_modules/npm/node_modules/ansi/README.md +91 -0
- data/lib/node_modules/npm/node_modules/ansi/color-spaces.pl +67 -0
- data/lib/node_modules/npm/node_modules/ansi/examples/beep/index.js +16 -0
- data/lib/node_modules/npm/node_modules/ansi/examples/clear/index.js +15 -0
- data/lib/node_modules/npm/node_modules/ansi/examples/cursorPosition.js +32 -0
- data/lib/node_modules/npm/node_modules/ansi/examples/progress/index.js +87 -0
- data/lib/node_modules/npm/node_modules/ansi/examples/starwars.js +46 -0
- data/lib/node_modules/npm/node_modules/ansi/lib/ansi.js +405 -0
- data/lib/node_modules/npm/node_modules/ansi/lib/newlines.js +71 -0
- data/lib/node_modules/npm/node_modules/ansi/package.json +50 -0
- data/lib/node_modules/npm/node_modules/ansicolors/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/ansicolors/README.md +62 -0
- data/lib/node_modules/npm/node_modules/ansicolors/ansicolors.js +65 -0
- data/lib/node_modules/npm/node_modules/ansicolors/package.json +34 -0
- data/lib/node_modules/npm/node_modules/ansistyles/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/ansistyles/README.md +71 -0
- data/lib/node_modules/npm/node_modules/ansistyles/ansistyles.js +38 -0
- data/lib/node_modules/npm/node_modules/ansistyles/package.json +38 -0
- data/lib/node_modules/npm/node_modules/archy/README.markdown +92 -0
- data/lib/node_modules/npm/node_modules/archy/index.js +35 -0
- data/lib/node_modules/npm/node_modules/archy/package.json +52 -0
- data/lib/node_modules/npm/node_modules/block-stream/LICENCE +25 -0
- data/lib/node_modules/npm/node_modules/block-stream/README.md +14 -0
- data/lib/node_modules/npm/node_modules/block-stream/bench/block-stream-pause.js +70 -0
- data/lib/node_modules/npm/node_modules/block-stream/bench/block-stream.js +68 -0
- data/lib/node_modules/npm/node_modules/block-stream/bench/dropper-pause.js +70 -0
- data/lib/node_modules/npm/node_modules/block-stream/bench/dropper.js +68 -0
- data/lib/node_modules/npm/node_modules/block-stream/block-stream.js +209 -0
- data/lib/node_modules/npm/node_modules/block-stream/package.json +35 -0
- data/lib/node_modules/npm/node_modules/child-process-close/README.md +45 -0
- data/lib/node_modules/npm/node_modules/child-process-close/index.js +48 -0
- data/lib/node_modules/npm/node_modules/child-process-close/package.json +37 -0
- data/lib/node_modules/npm/node_modules/chmodr/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/chmodr/README.md +3 -0
- data/lib/node_modules/npm/node_modules/chmodr/chmodr.js +54 -0
- data/lib/node_modules/npm/node_modules/chmodr/package.json +28 -0
- data/lib/node_modules/npm/node_modules/chownr/LICENCE +25 -0
- data/lib/node_modules/npm/node_modules/chownr/README.md +3 -0
- data/lib/node_modules/npm/node_modules/chownr/chownr.js +41 -0
- data/lib/node_modules/npm/node_modules/chownr/package.json +42 -0
- data/lib/node_modules/npm/node_modules/cmd-shim/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/cmd-shim/README.md +42 -0
- data/lib/node_modules/npm/node_modules/cmd-shim/index.js +180 -0
- data/lib/node_modules/npm/node_modules/cmd-shim/package.json +35 -0
- data/lib/node_modules/npm/node_modules/columnify/Readme.md +189 -0
- data/lib/node_modules/npm/node_modules/columnify/index.js +210 -0
- data/lib/node_modules/npm/node_modules/columnify/package.json +42 -0
- data/lib/node_modules/npm/node_modules/columnify/utils.js +76 -0
- data/lib/node_modules/npm/node_modules/editor/LICENSE +18 -0
- data/lib/node_modules/npm/node_modules/editor/README.markdown +54 -0
- data/lib/node_modules/npm/node_modules/editor/example/beep.json +5 -0
- data/lib/node_modules/npm/node_modules/editor/example/edit.js +4 -0
- data/lib/node_modules/npm/node_modules/editor/index.js +26 -0
- data/lib/node_modules/npm/node_modules/editor/package.json +43 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/LICENCE +25 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/README.md +18 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/example/bundle.js +13 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/example/dir-tar.js +19 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/example/dir.js +25 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/example/example.js +12 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/example/ig-tar.js +19 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/example/tar.js +25 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/fstream-npm.js +323 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/README.md +22 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/example/basic.js +13 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js +275 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json +40 -0
- data/lib/node_modules/npm/node_modules/fstream-npm/package.json +27 -0
- data/lib/node_modules/npm/node_modules/fstream/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/fstream/README.md +76 -0
- data/lib/node_modules/npm/node_modules/fstream/examples/filter-pipe.js +131 -0
- data/lib/node_modules/npm/node_modules/fstream/examples/pipe.js +115 -0
- data/lib/node_modules/npm/node_modules/fstream/examples/reader.js +54 -0
- data/lib/node_modules/npm/node_modules/fstream/examples/symlink-write.js +24 -0
- data/lib/node_modules/npm/node_modules/fstream/fstream.js +31 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/abstract.js +85 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/collect.js +67 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/dir-reader.js +251 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js +171 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/file-reader.js +147 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/file-writer.js +100 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/get-type.js +32 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/link-reader.js +54 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/link-writer.js +95 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/proxy-reader.js +93 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/proxy-writer.js +109 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/reader.js +260 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/socket-reader.js +38 -0
- data/lib/node_modules/npm/node_modules/fstream/lib/writer.js +389 -0
- data/lib/node_modules/npm/node_modules/fstream/package.json +43 -0
- data/lib/node_modules/npm/node_modules/github-url-from-git/History.md +10 -0
- data/lib/node_modules/npm/node_modules/github-url-from-git/Makefile +5 -0
- data/lib/node_modules/npm/node_modules/github-url-from-git/Readme.md +41 -0
- data/lib/node_modules/npm/node_modules/github-url-from-git/index.js +12 -0
- data/lib/node_modules/npm/node_modules/github-url-from-git/package.json +31 -0
- data/lib/node_modules/npm/node_modules/github-url-from-git/test.js +40 -0
- data/lib/node_modules/npm/node_modules/github-url-from-username-repo/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/github-url-from-username-repo/README.md +14 -0
- data/lib/node_modules/npm/node_modules/github-url-from-username-repo/index.js +9 -0
- data/lib/node_modules/npm/node_modules/github-url-from-username-repo/package.json +33 -0
- data/lib/node_modules/npm/node_modules/glob/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/glob/README.md +250 -0
- data/lib/node_modules/npm/node_modules/glob/examples/g.js +9 -0
- data/lib/node_modules/npm/node_modules/glob/examples/usr-local.js +9 -0
- data/lib/node_modules/npm/node_modules/glob/glob.js +680 -0
- data/lib/node_modules/npm/node_modules/glob/package.json +39 -0
- data/lib/node_modules/npm/node_modules/graceful-fs/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/graceful-fs/README.md +26 -0
- data/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js +161 -0
- data/lib/node_modules/npm/node_modules/graceful-fs/package.json +48 -0
- data/lib/node_modules/npm/node_modules/graceful-fs/polyfills.js +228 -0
- data/lib/node_modules/npm/node_modules/inherits/LICENSE +16 -0
- data/lib/node_modules/npm/node_modules/inherits/README.md +42 -0
- data/lib/node_modules/npm/node_modules/inherits/inherits.js +1 -0
- data/lib/node_modules/npm/node_modules/inherits/inherits_browser.js +23 -0
- data/lib/node_modules/npm/node_modules/inherits/package.json +32 -0
- data/lib/node_modules/npm/node_modules/inherits/test.js +25 -0
- data/lib/node_modules/npm/node_modules/ini/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/ini/README.md +79 -0
- data/lib/node_modules/npm/node_modules/ini/ini.js +166 -0
- data/lib/node_modules/npm/node_modules/ini/package.json +29 -0
- data/lib/node_modules/npm/node_modules/init-package-json/README.md +43 -0
- data/lib/node_modules/npm/node_modules/init-package-json/default-input.js +181 -0
- data/lib/node_modules/npm/node_modules/init-package-json/example/example-basic.js +8 -0
- data/lib/node_modules/npm/node_modules/init-package-json/example/example-default.js +7 -0
- data/lib/node_modules/npm/node_modules/init-package-json/example/example-npm.js +13 -0
- data/lib/node_modules/npm/node_modules/init-package-json/example/init/basic-init.js +1 -0
- data/lib/node_modules/npm/node_modules/init-package-json/init-package-json.js +129 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/LICENSE +15 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/README.md +133 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/example/index.js +11 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/example/npm-init/README.md +8 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/example/npm-init/init-input.js +191 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/example/npm-init/init.js +37 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/example/npm-init/package.json +10 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/example/substack-input.js +61 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/package.json +32 -0
- data/lib/node_modules/npm/node_modules/init-package-json/node_modules/promzard/promzard.js +216 -0
- data/lib/node_modules/npm/node_modules/init-package-json/package.json +48 -0
- data/lib/node_modules/npm/node_modules/lockfile/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/lockfile/README.md +81 -0
- data/lib/node_modules/npm/node_modules/lockfile/lockfile.js +272 -0
- data/lib/node_modules/npm/node_modules/lockfile/package.json +45 -0
- data/lib/node_modules/npm/node_modules/lru-cache/CONTRIBUTORS +14 -0
- data/lib/node_modules/npm/node_modules/lru-cache/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/lru-cache/README.md +97 -0
- data/lib/node_modules/npm/node_modules/lru-cache/lib/lru-cache.js +252 -0
- data/lib/node_modules/npm/node_modules/lru-cache/package.json +33 -0
- data/lib/node_modules/npm/node_modules/minimatch/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/minimatch/README.md +218 -0
- data/lib/node_modules/npm/node_modules/minimatch/minimatch.js +1055 -0
- data/lib/node_modules/npm/node_modules/minimatch/node_modules/sigmund/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/minimatch/node_modules/sigmund/README.md +53 -0
- data/lib/node_modules/npm/node_modules/minimatch/node_modules/sigmund/bench.js +283 -0
- data/lib/node_modules/npm/node_modules/minimatch/node_modules/sigmund/package.json +42 -0
- data/lib/node_modules/npm/node_modules/minimatch/node_modules/sigmund/sigmund.js +39 -0
- data/lib/node_modules/npm/node_modules/minimatch/package.json +40 -0
- data/lib/node_modules/npm/node_modules/mkdirp/LICENSE +21 -0
- data/lib/node_modules/npm/node_modules/mkdirp/README.markdown +63 -0
- data/lib/node_modules/npm/node_modules/mkdirp/examples/pow.js +6 -0
- data/lib/node_modules/npm/node_modules/mkdirp/index.js +82 -0
- data/lib/node_modules/npm/node_modules/mkdirp/package.json +33 -0
- data/lib/node_modules/npm/node_modules/node-gyp/LICENSE +24 -0
- data/lib/node_modules/npm/node_modules/node-gyp/README.md +163 -0
- data/lib/node_modules/npm/node_modules/node-gyp/addon.gypi +59 -0
- data/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js +133 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/AUTHORS +10 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/DEPS +24 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/OWNERS +1 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/PRESUBMIT.py +115 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/buildbot/buildbot_run.py +148 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/codereview.settings +10 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp +7 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp.bat +5 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_dummy.c +7 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py +18 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/gyptest.py +274 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +340 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +208 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1051 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1482 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +58 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +147 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +267 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +407 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +537 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/common.py +513 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +72 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +157 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +103 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +49 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1069 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +81 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +308 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +87 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +56 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2172 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3270 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +37 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2150 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +44 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1224 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +23 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py +2809 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +90 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +264 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +870 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +160 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +176 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1324 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +2888 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +69 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/pylintrc +307 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples +81 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples.bat +5 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/setup.py +19 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/README +15 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/Xcode/README +5 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.pbfilespec +27 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec +226 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/emacs/README +12 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/emacs/gyp-tests.el +63 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/emacs/gyp.el +252 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/emacs/run-unit-tests.sh +7 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp +1105 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified +1107 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/graphviz.py +100 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/pretty_gyp.py +155 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/pretty_sln.py +168 -0
- data/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +329 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/build.js +275 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/clean.js +22 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js +344 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/install.js +362 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/list.js +33 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/node-gyp.js +225 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/rebuild.js +16 -0
- data/lib/node_modules/npm/node_modules/node-gyp/lib/remove.js +56 -0
- data/lib/node_modules/npm/node_modules/node-gyp/package.json +55 -0
- data/lib/node_modules/npm/node_modules/nopt/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/nopt/README.md +210 -0
- data/lib/node_modules/npm/node_modules/nopt/bin/nopt.js +51 -0
- data/lib/node_modules/npm/node_modules/nopt/examples/my-program.js +30 -0
- data/lib/node_modules/npm/node_modules/nopt/lib/nopt.js +407 -0
- data/lib/node_modules/npm/node_modules/nopt/package.json +39 -0
- data/lib/node_modules/npm/node_modules/npm-install-checks/LICENSE +234 -0
- data/lib/node_modules/npm/node_modules/npm-install-checks/README.md +25 -0
- data/lib/node_modules/npm/node_modules/npm-install-checks/index.js +146 -0
- data/lib/node_modules/npm/node_modules/npm-install-checks/package.json +43 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/README.md +176 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/index.js +55 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/adduser.js +138 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/bugs.js +9 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/deprecate.js +28 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/get.js +184 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/publish.js +156 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js +270 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/star.js +29 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/stars.js +9 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/tag.js +6 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/unpublish.js +104 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/lib/upload.js +22 -0
- data/lib/node_modules/npm/node_modules/npm-registry-client/package.json +43 -0
- data/lib/node_modules/npm/node_modules/npm-user-validate/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/npm-user-validate/README.md +6 -0
- data/lib/node_modules/npm/node_modules/npm-user-validate/npm-user-validate.js +49 -0
- data/lib/node_modules/npm/node_modules/npm-user-validate/package.json +37 -0
- data/lib/node_modules/npm/node_modules/npmconf/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/npmconf/README.md +33 -0
- data/lib/node_modules/npm/node_modules/npmconf/config-defs.js +353 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/LICENCE +22 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/index.js +282 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/README.md +3 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json +33 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/proto-list.js +81 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/package.json +32 -0
- data/lib/node_modules/npm/node_modules/npmconf/node_modules/config-chain/readme.markdown +228 -0
- data/lib/node_modules/npm/node_modules/npmconf/npmconf.js +338 -0
- data/lib/node_modules/npm/node_modules/npmconf/package.json +50 -0
- data/lib/node_modules/npm/node_modules/npmlog/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/npmlog/README.md +153 -0
- data/lib/node_modules/npm/node_modules/npmlog/example.js +39 -0
- data/lib/node_modules/npm/node_modules/npmlog/log.js +154 -0
- data/lib/node_modules/npm/node_modules/npmlog/package.json +32 -0
- data/lib/node_modules/npm/node_modules/once/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/once/README.md +51 -0
- data/lib/node_modules/npm/node_modules/once/once.js +20 -0
- data/lib/node_modules/npm/node_modules/once/package.json +39 -0
- data/lib/node_modules/npm/node_modules/opener/LICENSE.txt +14 -0
- data/lib/node_modules/npm/node_modules/opener/README.md +44 -0
- data/lib/node_modules/npm/node_modules/opener/opener.js +55 -0
- data/lib/node_modules/npm/node_modules/opener/package.json +34 -0
- data/lib/node_modules/npm/node_modules/osenv/LICENSE +25 -0
- data/lib/node_modules/npm/node_modules/osenv/README.md +63 -0
- data/lib/node_modules/npm/node_modules/osenv/osenv.js +80 -0
- data/lib/node_modules/npm/node_modules/osenv/package.json +38 -0
- data/lib/node_modules/npm/node_modules/path-is-inside/LICENSE.txt +14 -0
- data/lib/node_modules/npm/node_modules/path-is-inside/README.md +35 -0
- data/lib/node_modules/npm/node_modules/path-is-inside/lib/path-is-inside.js +24 -0
- data/lib/node_modules/npm/node_modules/path-is-inside/package.json +39 -0
- data/lib/node_modules/npm/node_modules/read-installed/LICENSE +16 -0
- data/lib/node_modules/npm/node_modules/read-installed/README.md +25 -0
- data/lib/node_modules/npm/node_modules/read-installed/package.json +39 -0
- data/lib/node_modules/npm/node_modules/read-installed/read-installed.js +338 -0
- data/lib/node_modules/npm/node_modules/read-package-json/LICENSE +15 -0
- data/lib/node_modules/npm/node_modules/read-package-json/README.md +166 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/AUTHORS +4 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/LICENSE +30 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/README.md +101 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/core_module_names.json +29 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/extract_description.js +14 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js +392 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/normalize.js +36 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/safe_format.js +9 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/typos.json +25 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/warning_messages.json +28 -0
- data/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json +53 -0
- data/lib/node_modules/npm/node_modules/read-package-json/package.json +39 -0
- data/lib/node_modules/npm/node_modules/read-package-json/read-json.js +368 -0
- data/lib/node_modules/npm/node_modules/read/LICENCE +25 -0
- data/lib/node_modules/npm/node_modules/read/README.md +53 -0
- data/lib/node_modules/npm/node_modules/read/example/example.js +13 -0
- data/lib/node_modules/npm/node_modules/read/lib/read.js +113 -0
- data/lib/node_modules/npm/node_modules/read/node_modules/mute-stream/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/read/node_modules/mute-stream/README.md +68 -0
- data/lib/node_modules/npm/node_modules/read/node_modules/mute-stream/mute.js +140 -0
- data/lib/node_modules/npm/node_modules/read/node_modules/mute-stream/package.json +37 -0
- data/lib/node_modules/npm/node_modules/read/package.json +35 -0
- data/lib/node_modules/npm/node_modules/read/rs.js +4 -0
- data/lib/node_modules/npm/node_modules/request/LICENSE +55 -0
- data/lib/node_modules/npm/node_modules/request/README.md +364 -0
- data/lib/node_modules/npm/node_modules/request/index.js +157 -0
- data/lib/node_modules/npm/node_modules/request/lib/copy.js +8 -0
- data/lib/node_modules/npm/node_modules/request/lib/debug.js +7 -0
- data/lib/node_modules/npm/node_modules/request/lib/getSafe.js +34 -0
- data/lib/node_modules/npm/node_modules/request/lib/optional.js +5 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/aws-sign2/LICENSE +55 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/aws-sign2/README.md +4 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/aws-sign2/index.js +202 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/aws-sign2/package.json +28 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/LICENSE +55 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/README.md +4 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/index.js +119 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/package.json +28 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/License +19 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/Readme.md +163 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/lib/form_data.js +325 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/async/LICENSE +19 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/async/README.md +1414 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/async/component.json +11 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js +955 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/async/package.json +43 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/License +19 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile +7 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md +132 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js +185 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License +19 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile +7 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md +154 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js +99 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json +31 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json +32 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/form-data/package.json +46 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/LICENSE +24 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/Makefile +10 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/README.md +627 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/example/usage.js +78 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/images/hawk.png +0 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/images/logo.png +0 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/index.js +1 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/lib/browser.js +485 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/lib/client.js +367 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/lib/crypto.js +111 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/lib/index.js +15 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/lib/server.js +524 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/lib/utils.js +183 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE +24 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom/Makefile +11 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom/README.md +6 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png +0 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom/index.js +1 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js +207 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/boom/package.json +47 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE +24 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile +11 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md +6 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js +1 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js +68 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json +48 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE +33 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile +10 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/README.md +436 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png +0 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/index.js +1 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js +132 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js +585 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/hoek/package.json +49 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE +24 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile +11 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/README.md +68 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js +16 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js +25 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/index.js +1 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js +409 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/node_modules/sntp/package.json +48 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/hawk/package.json +53 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/LICENSE +18 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/README.md +75 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/http_signing.md +296 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/lib/index.js +25 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/lib/parser.js +304 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/lib/signer.js +179 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/lib/util.js +249 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/lib/verify.js +42 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE +19 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md +50 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js +13 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js +27 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js +267 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js +36 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js +317 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js +20 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json +43 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js +172 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js +296 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md +126 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js +196 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json +20 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG +71 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE +24 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/README +82 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old +298 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js +245 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js +1485 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js +944 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype +241 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json +18 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf +129 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle +839 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json +13 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json +13 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json +104 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json +19 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js +39 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js +14 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js +14 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js +17 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js +18 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js +15 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json +14 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js +767 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js +753 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js +638 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js +101 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js +53 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js +92 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js +451 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js +81 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js +95 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js +156 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js +50 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js +44 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js +42 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js +45 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js +28 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js +128 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js +28 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js +31 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/http-signature/package.json +36 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/json-stringify-safe/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/json-stringify-safe/README.md +49 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/json-stringify-safe/package.json +33 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/json-stringify-safe/stringify.js +39 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/json-stringify-safe/test.js +128 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/mime/LICENSE +19 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/mime/README.md +66 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/mime/mime.js +114 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/mime/package.json +36 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/mime/test.js +84 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/mime/types/mime.types +1588 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/mime/types/node.types +77 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/LICENSE.md +2 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/README.md +207 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/benchmark/README.md +53 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu +174 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/benchmark/bench.sh +34 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c +34 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js +84 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/component.json +18 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/package.json +35 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/node-uuid/uuid.js +245 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/oauth-sign/LICENSE +55 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/oauth-sign/README.md +4 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/oauth-sign/index.js +43 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/oauth-sign/package.json +31 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/oauth-sign/test.js +49 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/qs/Readme.md +58 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/qs/index.js +366 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/qs/package.json +38 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/LICENSE +78 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/README.md +380 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js +230 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/lib/cookie.js +947 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/lib/memstore.js +102 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js +69 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt +278 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt +20 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json +73 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js +508 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js +2 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/LICENSE.txt +20 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/README.md +35 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/doc/README.md +69 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/doc/parse.php +35 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/docdown.php +38 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/src/DocDown/Alias.php +226 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/src/DocDown/Entry.php +442 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/node_modules/punycode/vendor/docdown/src/DocDown/Generator.php +563 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/package.json +46 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/public-suffix.txt +5229 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tough-cookie/test.js +1340 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tunnel-agent/LICENSE +55 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tunnel-agent/README.md +4 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tunnel-agent/index.js +227 -0
- data/lib/node_modules/npm/node_modules/request/node_modules/tunnel-agent/package.json +28 -0
- data/lib/node_modules/npm/node_modules/request/package.json +57 -0
- data/lib/node_modules/npm/node_modules/request/request.js +1260 -0
- data/lib/node_modules/npm/node_modules/retry/License +21 -0
- data/lib/node_modules/npm/node_modules/retry/Makefile +7 -0
- data/lib/node_modules/npm/node_modules/retry/Readme.md +167 -0
- data/lib/node_modules/npm/node_modules/retry/equation.gif +0 -0
- data/lib/node_modules/npm/node_modules/retry/example/dns.js +31 -0
- data/lib/node_modules/npm/node_modules/retry/index.js +1 -0
- data/lib/node_modules/npm/node_modules/retry/lib/retry.js +50 -0
- data/lib/node_modules/npm/node_modules/retry/lib/retry_operation.js +109 -0
- data/lib/node_modules/npm/node_modules/retry/package.json +29 -0
- data/lib/node_modules/npm/node_modules/rimraf/AUTHORS +6 -0
- data/lib/node_modules/npm/node_modules/rimraf/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/rimraf/README.md +30 -0
- data/lib/node_modules/npm/node_modules/rimraf/bin.js +33 -0
- data/lib/node_modules/npm/node_modules/rimraf/package.json +56 -0
- data/lib/node_modules/npm/node_modules/rimraf/rimraf.js +178 -0
- data/lib/node_modules/npm/node_modules/semver/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/semver/Makefile +24 -0
- data/lib/node_modules/npm/node_modules/semver/README.md +142 -0
- data/lib/node_modules/npm/node_modules/semver/bin/semver +124 -0
- data/lib/node_modules/npm/node_modules/semver/foot.js +6 -0
- data/lib/node_modules/npm/node_modules/semver/head.js +2 -0
- data/lib/node_modules/npm/node_modules/semver/package.json +32 -0
- data/lib/node_modules/npm/node_modules/semver/semver.browser.js +1007 -0
- data/lib/node_modules/npm/node_modules/semver/semver.browser.js.gz +0 -0
- data/lib/node_modules/npm/node_modules/semver/semver.js +1011 -0
- data/lib/node_modules/npm/node_modules/semver/semver.min.js +1 -0
- data/lib/node_modules/npm/node_modules/semver/semver.min.js.gz +0 -0
- data/lib/node_modules/npm/node_modules/sha/LICENSE +46 -0
- data/lib/node_modules/npm/node_modules/sha/README.md +49 -0
- data/lib/node_modules/npm/node_modules/sha/index.js +120 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/LICENSE +27 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/README.md +768 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/duplex.js +1 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/float.patch +68 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/lib/_stream_duplex.js +69 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/lib/_stream_passthrough.js +41 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/lib/_stream_readable.js +927 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/lib/_stream_transform.js +205 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/lib/_stream_writable.js +369 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/package.json +36 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/passthrough.js +1 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/readable.js +6 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/transform.js +1 -0
- data/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/writable.js +1 -0
- data/lib/node_modules/npm/node_modules/sha/package.json +32 -0
- data/lib/node_modules/npm/node_modules/slide/LICENSE +15 -0
- data/lib/node_modules/npm/node_modules/slide/README.md +143 -0
- data/lib/node_modules/npm/node_modules/slide/index.js +1 -0
- data/lib/node_modules/npm/node_modules/slide/lib/async-map-ordered.js +65 -0
- data/lib/node_modules/npm/node_modules/slide/lib/async-map.js +56 -0
- data/lib/node_modules/npm/node_modules/slide/lib/bind-actor.js +16 -0
- data/lib/node_modules/npm/node_modules/slide/lib/chain.js +20 -0
- data/lib/node_modules/npm/node_modules/slide/lib/slide.js +3 -0
- data/lib/node_modules/npm/node_modules/slide/package.json +35 -0
- data/lib/node_modules/npm/node_modules/tar/LICENCE +25 -0
- data/lib/node_modules/npm/node_modules/tar/README.md +46 -0
- data/lib/node_modules/npm/node_modules/tar/examples/extracter.js +11 -0
- data/lib/node_modules/npm/node_modules/tar/examples/reader.js +36 -0
- data/lib/node_modules/npm/node_modules/tar/lib/buffer-entry.js +30 -0
- data/lib/node_modules/npm/node_modules/tar/lib/entry-writer.js +169 -0
- data/lib/node_modules/npm/node_modules/tar/lib/entry.js +213 -0
- data/lib/node_modules/npm/node_modules/tar/lib/extended-header-writer.js +191 -0
- data/lib/node_modules/npm/node_modules/tar/lib/extended-header.js +140 -0
- data/lib/node_modules/npm/node_modules/tar/lib/extract.js +78 -0
- data/lib/node_modules/npm/node_modules/tar/lib/global-header-writer.js +14 -0
- data/lib/node_modules/npm/node_modules/tar/lib/header.js +385 -0
- data/lib/node_modules/npm/node_modules/tar/lib/pack.js +231 -0
- data/lib/node_modules/npm/node_modules/tar/lib/parse.js +270 -0
- data/lib/node_modules/npm/node_modules/tar/package.json +40 -0
- data/lib/node_modules/npm/node_modules/tar/tar.js +173 -0
- data/lib/node_modules/npm/node_modules/text-table/LICENSE +18 -0
- data/lib/node_modules/npm/node_modules/text-table/example/align.js +8 -0
- data/lib/node_modules/npm/node_modules/text-table/example/center.js +8 -0
- data/lib/node_modules/npm/node_modules/text-table/example/dotalign.js +9 -0
- data/lib/node_modules/npm/node_modules/text-table/example/doubledot.js +11 -0
- data/lib/node_modules/npm/node_modules/text-table/example/table.js +6 -0
- data/lib/node_modules/npm/node_modules/text-table/index.js +86 -0
- data/lib/node_modules/npm/node_modules/text-table/package.json +52 -0
- data/lib/node_modules/npm/node_modules/text-table/readme.markdown +134 -0
- data/lib/node_modules/npm/node_modules/uid-number/LICENCE +25 -0
- data/lib/node_modules/npm/node_modules/uid-number/README.md +17 -0
- data/lib/node_modules/npm/node_modules/uid-number/get-uid-gid.js +24 -0
- data/lib/node_modules/npm/node_modules/uid-number/package.json +35 -0
- data/lib/node_modules/npm/node_modules/uid-number/uid-number.js +54 -0
- data/lib/node_modules/npm/node_modules/which/LICENSE +23 -0
- data/lib/node_modules/npm/node_modules/which/README.md +5 -0
- data/lib/node_modules/npm/node_modules/which/bin/which +14 -0
- data/lib/node_modules/npm/node_modules/which/package.json +34 -0
- data/lib/node_modules/npm/node_modules/which/which.js +104 -0
- data/lib/node_modules/npm/package.json +155 -0
- data/lib/node_modules/npm/scripts/clean-old.sh +165 -0
- data/lib/node_modules/npm/scripts/doc-build.sh +84 -0
- data/lib/node_modules/npm/scripts/index-build.js +62 -0
- data/lib/node_modules/npm/scripts/install.sh +313 -0
- data/lib/node_modules/npm/scripts/release.sh +36 -0
- data/lib/node_modules/npm/scripts/relocate.sh +26 -0
- metadata +1052 -36
- checksums.yaml +0 -7
@@ -0,0 +1,90 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
|
3
|
+
# Copyright 2013 Google Inc. All rights reserved.
|
4
|
+
# Use of this source code is governed by a BSD-style license that can be
|
5
|
+
# found in the LICENSE file.
|
6
|
+
|
7
|
+
"""Unit tests for the input.py file."""
|
8
|
+
|
9
|
+
import gyp.input
|
10
|
+
import unittest
|
11
|
+
import sys
|
12
|
+
|
13
|
+
|
14
|
+
class TestFindCycles(unittest.TestCase):
|
15
|
+
def setUp(self):
|
16
|
+
self.nodes = {}
|
17
|
+
for x in ('a', 'b', 'c', 'd', 'e'):
|
18
|
+
self.nodes[x] = gyp.input.DependencyGraphNode(x)
|
19
|
+
|
20
|
+
def _create_dependency(self, dependent, dependency):
|
21
|
+
dependent.dependencies.append(dependency)
|
22
|
+
dependency.dependents.append(dependent)
|
23
|
+
|
24
|
+
def test_no_cycle_empty_graph(self):
|
25
|
+
for label, node in self.nodes.iteritems():
|
26
|
+
self.assertEquals([], node.FindCycles())
|
27
|
+
|
28
|
+
def test_no_cycle_line(self):
|
29
|
+
self._create_dependency(self.nodes['a'], self.nodes['b'])
|
30
|
+
self._create_dependency(self.nodes['b'], self.nodes['c'])
|
31
|
+
self._create_dependency(self.nodes['c'], self.nodes['d'])
|
32
|
+
|
33
|
+
for label, node in self.nodes.iteritems():
|
34
|
+
self.assertEquals([], node.FindCycles())
|
35
|
+
|
36
|
+
def test_no_cycle_dag(self):
|
37
|
+
self._create_dependency(self.nodes['a'], self.nodes['b'])
|
38
|
+
self._create_dependency(self.nodes['a'], self.nodes['c'])
|
39
|
+
self._create_dependency(self.nodes['b'], self.nodes['c'])
|
40
|
+
|
41
|
+
for label, node in self.nodes.iteritems():
|
42
|
+
self.assertEquals([], node.FindCycles())
|
43
|
+
|
44
|
+
def test_cycle_self_reference(self):
|
45
|
+
self._create_dependency(self.nodes['a'], self.nodes['a'])
|
46
|
+
|
47
|
+
self.assertEquals([(self.nodes['a'], self.nodes['a'])],
|
48
|
+
self.nodes['a'].FindCycles())
|
49
|
+
|
50
|
+
def test_cycle_two_nodes(self):
|
51
|
+
self._create_dependency(self.nodes['a'], self.nodes['b'])
|
52
|
+
self._create_dependency(self.nodes['b'], self.nodes['a'])
|
53
|
+
|
54
|
+
self.assertEquals([(self.nodes['a'], self.nodes['b'], self.nodes['a'])],
|
55
|
+
self.nodes['a'].FindCycles())
|
56
|
+
self.assertEquals([(self.nodes['b'], self.nodes['a'], self.nodes['b'])],
|
57
|
+
self.nodes['b'].FindCycles())
|
58
|
+
|
59
|
+
def test_two_cycles(self):
|
60
|
+
self._create_dependency(self.nodes['a'], self.nodes['b'])
|
61
|
+
self._create_dependency(self.nodes['b'], self.nodes['a'])
|
62
|
+
|
63
|
+
self._create_dependency(self.nodes['b'], self.nodes['c'])
|
64
|
+
self._create_dependency(self.nodes['c'], self.nodes['b'])
|
65
|
+
|
66
|
+
cycles = self.nodes['a'].FindCycles()
|
67
|
+
self.assertTrue(
|
68
|
+
(self.nodes['a'], self.nodes['b'], self.nodes['a']) in cycles)
|
69
|
+
self.assertTrue(
|
70
|
+
(self.nodes['b'], self.nodes['c'], self.nodes['b']) in cycles)
|
71
|
+
self.assertEquals(2, len(cycles))
|
72
|
+
|
73
|
+
def test_big_cycle(self):
|
74
|
+
self._create_dependency(self.nodes['a'], self.nodes['b'])
|
75
|
+
self._create_dependency(self.nodes['b'], self.nodes['c'])
|
76
|
+
self._create_dependency(self.nodes['c'], self.nodes['d'])
|
77
|
+
self._create_dependency(self.nodes['d'], self.nodes['e'])
|
78
|
+
self._create_dependency(self.nodes['e'], self.nodes['a'])
|
79
|
+
|
80
|
+
self.assertEquals([(self.nodes['a'],
|
81
|
+
self.nodes['b'],
|
82
|
+
self.nodes['c'],
|
83
|
+
self.nodes['d'],
|
84
|
+
self.nodes['e'],
|
85
|
+
self.nodes['a'])],
|
86
|
+
self.nodes['a'].FindCycles())
|
87
|
+
|
88
|
+
|
89
|
+
if __name__ == '__main__':
|
90
|
+
unittest.main()
|
@@ -0,0 +1,264 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# Copyright (c) 2012 Google Inc. All rights reserved.
|
3
|
+
# Use of this source code is governed by a BSD-style license that can be
|
4
|
+
# found in the LICENSE file.
|
5
|
+
|
6
|
+
"""Utility functions to perform Xcode-style build steps.
|
7
|
+
|
8
|
+
These functions are executed via gyp-mac-tool when using the Makefile generator.
|
9
|
+
"""
|
10
|
+
|
11
|
+
import fcntl
|
12
|
+
import json
|
13
|
+
import os
|
14
|
+
import plistlib
|
15
|
+
import re
|
16
|
+
import shutil
|
17
|
+
import string
|
18
|
+
import subprocess
|
19
|
+
import sys
|
20
|
+
|
21
|
+
|
22
|
+
def main(args):
|
23
|
+
executor = MacTool()
|
24
|
+
exit_code = executor.Dispatch(args)
|
25
|
+
if exit_code is not None:
|
26
|
+
sys.exit(exit_code)
|
27
|
+
|
28
|
+
|
29
|
+
class MacTool(object):
|
30
|
+
"""This class performs all the Mac tooling steps. The methods can either be
|
31
|
+
executed directly, or dispatched from an argument list."""
|
32
|
+
|
33
|
+
def Dispatch(self, args):
|
34
|
+
"""Dispatches a string command to a method."""
|
35
|
+
if len(args) < 1:
|
36
|
+
raise Exception("Not enough arguments")
|
37
|
+
|
38
|
+
method = "Exec%s" % self._CommandifyName(args[0])
|
39
|
+
return getattr(self, method)(*args[1:])
|
40
|
+
|
41
|
+
def _CommandifyName(self, name_string):
|
42
|
+
"""Transforms a tool name like copy-info-plist to CopyInfoPlist"""
|
43
|
+
return name_string.title().replace('-', '')
|
44
|
+
|
45
|
+
def ExecCopyBundleResource(self, source, dest):
|
46
|
+
"""Copies a resource file to the bundle/Resources directory, performing any
|
47
|
+
necessary compilation on each resource."""
|
48
|
+
extension = os.path.splitext(source)[1].lower()
|
49
|
+
if os.path.isdir(source):
|
50
|
+
# Copy tree.
|
51
|
+
# TODO(thakis): This copies file attributes like mtime, while the
|
52
|
+
# single-file branch below doesn't. This should probably be changed to
|
53
|
+
# be consistent with the single-file branch.
|
54
|
+
if os.path.exists(dest):
|
55
|
+
shutil.rmtree(dest)
|
56
|
+
shutil.copytree(source, dest)
|
57
|
+
elif extension == '.xib':
|
58
|
+
return self._CopyXIBFile(source, dest)
|
59
|
+
elif extension == '.storyboard':
|
60
|
+
return self._CopyXIBFile(source, dest)
|
61
|
+
elif extension == '.strings':
|
62
|
+
self._CopyStringsFile(source, dest)
|
63
|
+
else:
|
64
|
+
shutil.copy(source, dest)
|
65
|
+
|
66
|
+
def _CopyXIBFile(self, source, dest):
|
67
|
+
"""Compiles a XIB file with ibtool into a binary plist in the bundle."""
|
68
|
+
|
69
|
+
# ibtool sometimes crashes with relative paths. See crbug.com/314728.
|
70
|
+
base = os.path.dirname(os.path.realpath(__file__))
|
71
|
+
if os.path.relpath(source):
|
72
|
+
source = os.path.join(base, source)
|
73
|
+
if os.path.relpath(dest):
|
74
|
+
dest = os.path.join(base, dest)
|
75
|
+
|
76
|
+
args = ['xcrun', 'ibtool', '--errors', '--warnings', '--notices',
|
77
|
+
'--output-format', 'human-readable-text', '--compile', dest, source]
|
78
|
+
ibtool_section_re = re.compile(r'/\*.*\*/')
|
79
|
+
ibtool_re = re.compile(r'.*note:.*is clipping its content')
|
80
|
+
ibtoolout = subprocess.Popen(args, stdout=subprocess.PIPE)
|
81
|
+
current_section_header = None
|
82
|
+
for line in ibtoolout.stdout:
|
83
|
+
if ibtool_section_re.match(line):
|
84
|
+
current_section_header = line
|
85
|
+
elif not ibtool_re.match(line):
|
86
|
+
if current_section_header:
|
87
|
+
sys.stdout.write(current_section_header)
|
88
|
+
current_section_header = None
|
89
|
+
sys.stdout.write(line)
|
90
|
+
return ibtoolout.returncode
|
91
|
+
|
92
|
+
def _CopyStringsFile(self, source, dest):
|
93
|
+
"""Copies a .strings file using iconv to reconvert the input into UTF-16."""
|
94
|
+
input_code = self._DetectInputEncoding(source) or "UTF-8"
|
95
|
+
|
96
|
+
# Xcode's CpyCopyStringsFile / builtin-copyStrings seems to call
|
97
|
+
# CFPropertyListCreateFromXMLData() behind the scenes; at least it prints
|
98
|
+
# CFPropertyListCreateFromXMLData(): Old-style plist parser: missing
|
99
|
+
# semicolon in dictionary.
|
100
|
+
# on invalid files. Do the same kind of validation.
|
101
|
+
import CoreFoundation
|
102
|
+
s = open(source, 'rb').read()
|
103
|
+
d = CoreFoundation.CFDataCreate(None, s, len(s))
|
104
|
+
_, error = CoreFoundation.CFPropertyListCreateFromXMLData(None, d, 0, None)
|
105
|
+
if error:
|
106
|
+
return
|
107
|
+
|
108
|
+
fp = open(dest, 'wb')
|
109
|
+
fp.write(s.decode(input_code).encode('UTF-16'))
|
110
|
+
fp.close()
|
111
|
+
|
112
|
+
def _DetectInputEncoding(self, file_name):
|
113
|
+
"""Reads the first few bytes from file_name and tries to guess the text
|
114
|
+
encoding. Returns None as a guess if it can't detect it."""
|
115
|
+
fp = open(file_name, 'rb')
|
116
|
+
try:
|
117
|
+
header = fp.read(3)
|
118
|
+
except e:
|
119
|
+
fp.close()
|
120
|
+
return None
|
121
|
+
fp.close()
|
122
|
+
if header.startswith("\xFE\xFF"):
|
123
|
+
return "UTF-16"
|
124
|
+
elif header.startswith("\xFF\xFE"):
|
125
|
+
return "UTF-16"
|
126
|
+
elif header.startswith("\xEF\xBB\xBF"):
|
127
|
+
return "UTF-8"
|
128
|
+
else:
|
129
|
+
return None
|
130
|
+
|
131
|
+
def ExecCopyInfoPlist(self, source, dest, *keys):
|
132
|
+
"""Copies the |source| Info.plist to the destination directory |dest|."""
|
133
|
+
# Read the source Info.plist into memory.
|
134
|
+
fd = open(source, 'r')
|
135
|
+
lines = fd.read()
|
136
|
+
fd.close()
|
137
|
+
|
138
|
+
# Insert synthesized key/value pairs (e.g. BuildMachineOSBuild).
|
139
|
+
plist = plistlib.readPlistFromString(lines)
|
140
|
+
if keys:
|
141
|
+
plist = dict(plist.items() + json.loads(keys[0]).items())
|
142
|
+
lines = plistlib.writePlistToString(plist)
|
143
|
+
|
144
|
+
# Go through all the environment variables and replace them as variables in
|
145
|
+
# the file.
|
146
|
+
IDENT_RE = re.compile('[/\s]')
|
147
|
+
for key in os.environ:
|
148
|
+
if key.startswith('_'):
|
149
|
+
continue
|
150
|
+
evar = '${%s}' % key
|
151
|
+
evalue = os.environ[key]
|
152
|
+
lines = string.replace(lines, evar, evalue)
|
153
|
+
|
154
|
+
# Xcode supports various suffices on environment variables, which are
|
155
|
+
# all undocumented. :rfc1034identifier is used in the standard project
|
156
|
+
# template these days, and :identifier was used earlier. They are used to
|
157
|
+
# convert non-url characters into things that look like valid urls --
|
158
|
+
# except that the replacement character for :identifier, '_' isn't valid
|
159
|
+
# in a URL either -- oops, hence :rfc1034identifier was born.
|
160
|
+
evar = '${%s:identifier}' % key
|
161
|
+
evalue = IDENT_RE.sub('_', os.environ[key])
|
162
|
+
lines = string.replace(lines, evar, evalue)
|
163
|
+
|
164
|
+
evar = '${%s:rfc1034identifier}' % key
|
165
|
+
evalue = IDENT_RE.sub('-', os.environ[key])
|
166
|
+
lines = string.replace(lines, evar, evalue)
|
167
|
+
|
168
|
+
# Remove any keys with values that haven't been replaced.
|
169
|
+
lines = lines.split('\n')
|
170
|
+
for i in range(len(lines)):
|
171
|
+
if lines[i].strip().startswith("<string>${"):
|
172
|
+
lines[i] = None
|
173
|
+
lines[i - 1] = None
|
174
|
+
lines = '\n'.join(filter(lambda x: x is not None, lines))
|
175
|
+
|
176
|
+
# Write out the file with variables replaced.
|
177
|
+
fd = open(dest, 'w')
|
178
|
+
fd.write(lines)
|
179
|
+
fd.close()
|
180
|
+
|
181
|
+
# Now write out PkgInfo file now that the Info.plist file has been
|
182
|
+
# "compiled".
|
183
|
+
self._WritePkgInfo(dest)
|
184
|
+
|
185
|
+
def _WritePkgInfo(self, info_plist):
|
186
|
+
"""This writes the PkgInfo file from the data stored in Info.plist."""
|
187
|
+
plist = plistlib.readPlist(info_plist)
|
188
|
+
if not plist:
|
189
|
+
return
|
190
|
+
|
191
|
+
# Only create PkgInfo for executable types.
|
192
|
+
package_type = plist['CFBundlePackageType']
|
193
|
+
if package_type != 'APPL':
|
194
|
+
return
|
195
|
+
|
196
|
+
# The format of PkgInfo is eight characters, representing the bundle type
|
197
|
+
# and bundle signature, each four characters. If that is missing, four
|
198
|
+
# '?' characters are used instead.
|
199
|
+
signature_code = plist.get('CFBundleSignature', '????')
|
200
|
+
if len(signature_code) != 4: # Wrong length resets everything, too.
|
201
|
+
signature_code = '?' * 4
|
202
|
+
|
203
|
+
dest = os.path.join(os.path.dirname(info_plist), 'PkgInfo')
|
204
|
+
fp = open(dest, 'w')
|
205
|
+
fp.write('%s%s' % (package_type, signature_code))
|
206
|
+
fp.close()
|
207
|
+
|
208
|
+
def ExecFlock(self, lockfile, *cmd_list):
|
209
|
+
"""Emulates the most basic behavior of Linux's flock(1)."""
|
210
|
+
# Rely on exception handling to report errors.
|
211
|
+
fd = os.open(lockfile, os.O_RDONLY|os.O_NOCTTY|os.O_CREAT, 0o666)
|
212
|
+
fcntl.flock(fd, fcntl.LOCK_EX)
|
213
|
+
return subprocess.call(cmd_list)
|
214
|
+
|
215
|
+
def ExecFilterLibtool(self, *cmd_list):
|
216
|
+
"""Calls libtool and filters out '/path/to/libtool: file: foo.o has no
|
217
|
+
symbols'."""
|
218
|
+
libtool_re = re.compile(r'^.*libtool: file: .* has no symbols$')
|
219
|
+
libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE)
|
220
|
+
_, err = libtoolout.communicate()
|
221
|
+
for line in err.splitlines():
|
222
|
+
if not libtool_re.match(line):
|
223
|
+
print >>sys.stderr, line
|
224
|
+
return libtoolout.returncode
|
225
|
+
|
226
|
+
def ExecPackageFramework(self, framework, version):
|
227
|
+
"""Takes a path to Something.framework and the Current version of that and
|
228
|
+
sets up all the symlinks."""
|
229
|
+
# Find the name of the binary based on the part before the ".framework".
|
230
|
+
binary = os.path.basename(framework).split('.')[0]
|
231
|
+
|
232
|
+
CURRENT = 'Current'
|
233
|
+
RESOURCES = 'Resources'
|
234
|
+
VERSIONS = 'Versions'
|
235
|
+
|
236
|
+
if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)):
|
237
|
+
# Binary-less frameworks don't seem to contain symlinks (see e.g.
|
238
|
+
# chromium's out/Debug/org.chromium.Chromium.manifest/ bundle).
|
239
|
+
return
|
240
|
+
|
241
|
+
# Move into the framework directory to set the symlinks correctly.
|
242
|
+
pwd = os.getcwd()
|
243
|
+
os.chdir(framework)
|
244
|
+
|
245
|
+
# Set up the Current version.
|
246
|
+
self._Relink(version, os.path.join(VERSIONS, CURRENT))
|
247
|
+
|
248
|
+
# Set up the root symlinks.
|
249
|
+
self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary)
|
250
|
+
self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES)
|
251
|
+
|
252
|
+
# Back to where we were before!
|
253
|
+
os.chdir(pwd)
|
254
|
+
|
255
|
+
def _Relink(self, dest, link):
|
256
|
+
"""Creates a symlink to |dest| named |link|. If |link| already exists,
|
257
|
+
it is overwritten."""
|
258
|
+
if os.path.lexists(link):
|
259
|
+
os.remove(link)
|
260
|
+
os.symlink(dest, link)
|
261
|
+
|
262
|
+
|
263
|
+
if __name__ == '__main__':
|
264
|
+
sys.exit(main(sys.argv[1:]))
|
@@ -0,0 +1,870 @@
|
|
1
|
+
# Copyright (c) 2012 Google Inc. All rights reserved.
|
2
|
+
# Use of this source code is governed by a BSD-style license that can be
|
3
|
+
# found in the LICENSE file.
|
4
|
+
|
5
|
+
"""
|
6
|
+
This module helps emulate Visual Studio 2008 behavior on top of other
|
7
|
+
build systems, primarily ninja.
|
8
|
+
"""
|
9
|
+
|
10
|
+
import os
|
11
|
+
import re
|
12
|
+
import subprocess
|
13
|
+
import sys
|
14
|
+
|
15
|
+
import gyp.MSVSVersion
|
16
|
+
|
17
|
+
windows_quoter_regex = re.compile(r'(\\*)"')
|
18
|
+
|
19
|
+
def QuoteForRspFile(arg):
|
20
|
+
"""Quote a command line argument so that it appears as one argument when
|
21
|
+
processed via cmd.exe and parsed by CommandLineToArgvW (as is typical for
|
22
|
+
Windows programs)."""
|
23
|
+
# See http://goo.gl/cuFbX and http://goo.gl/dhPnp including the comment
|
24
|
+
# threads. This is actually the quoting rules for CommandLineToArgvW, not
|
25
|
+
# for the shell, because the shell doesn't do anything in Windows. This
|
26
|
+
# works more or less because most programs (including the compiler, etc.)
|
27
|
+
# use that function to handle command line arguments.
|
28
|
+
|
29
|
+
# For a literal quote, CommandLineToArgvW requires 2n+1 backslashes
|
30
|
+
# preceding it, and results in n backslashes + the quote. So we substitute
|
31
|
+
# in 2* what we match, +1 more, plus the quote.
|
32
|
+
arg = windows_quoter_regex.sub(lambda mo: 2 * mo.group(1) + '\\"', arg)
|
33
|
+
|
34
|
+
# %'s also need to be doubled otherwise they're interpreted as batch
|
35
|
+
# positional arguments. Also make sure to escape the % so that they're
|
36
|
+
# passed literally through escaping so they can be singled to just the
|
37
|
+
# original %. Otherwise, trying to pass the literal representation that
|
38
|
+
# looks like an environment variable to the shell (e.g. %PATH%) would fail.
|
39
|
+
arg = arg.replace('%', '%%')
|
40
|
+
|
41
|
+
# These commands are used in rsp files, so no escaping for the shell (via ^)
|
42
|
+
# is necessary.
|
43
|
+
|
44
|
+
# Finally, wrap the whole thing in quotes so that the above quote rule
|
45
|
+
# applies and whitespace isn't a word break.
|
46
|
+
return '"' + arg + '"'
|
47
|
+
|
48
|
+
|
49
|
+
def EncodeRspFileList(args):
|
50
|
+
"""Process a list of arguments using QuoteCmdExeArgument."""
|
51
|
+
# Note that the first argument is assumed to be the command. Don't add
|
52
|
+
# quotes around it because then built-ins like 'echo', etc. won't work.
|
53
|
+
# Take care to normpath only the path in the case of 'call ../x.bat' because
|
54
|
+
# otherwise the whole thing is incorrectly interpreted as a path and not
|
55
|
+
# normalized correctly.
|
56
|
+
if not args: return ''
|
57
|
+
if args[0].startswith('call '):
|
58
|
+
call, program = args[0].split(' ', 1)
|
59
|
+
program = call + ' ' + os.path.normpath(program)
|
60
|
+
else:
|
61
|
+
program = os.path.normpath(args[0])
|
62
|
+
return program + ' ' + ' '.join(QuoteForRspFile(arg) for arg in args[1:])
|
63
|
+
|
64
|
+
|
65
|
+
def _GenericRetrieve(root, default, path):
|
66
|
+
"""Given a list of dictionary keys |path| and a tree of dicts |root|, find
|
67
|
+
value at path, or return |default| if any of the path doesn't exist."""
|
68
|
+
if not root:
|
69
|
+
return default
|
70
|
+
if not path:
|
71
|
+
return root
|
72
|
+
return _GenericRetrieve(root.get(path[0]), default, path[1:])
|
73
|
+
|
74
|
+
|
75
|
+
def _AddPrefix(element, prefix):
|
76
|
+
"""Add |prefix| to |element| or each subelement if element is iterable."""
|
77
|
+
if element is None:
|
78
|
+
return element
|
79
|
+
# Note, not Iterable because we don't want to handle strings like that.
|
80
|
+
if isinstance(element, list) or isinstance(element, tuple):
|
81
|
+
return [prefix + e for e in element]
|
82
|
+
else:
|
83
|
+
return prefix + element
|
84
|
+
|
85
|
+
|
86
|
+
def _DoRemapping(element, map):
|
87
|
+
"""If |element| then remap it through |map|. If |element| is iterable then
|
88
|
+
each item will be remapped. Any elements not found will be removed."""
|
89
|
+
if map is not None and element is not None:
|
90
|
+
if not callable(map):
|
91
|
+
map = map.get # Assume it's a dict, otherwise a callable to do the remap.
|
92
|
+
if isinstance(element, list) or isinstance(element, tuple):
|
93
|
+
element = filter(None, [map(elem) for elem in element])
|
94
|
+
else:
|
95
|
+
element = map(element)
|
96
|
+
return element
|
97
|
+
|
98
|
+
|
99
|
+
def _AppendOrReturn(append, element):
|
100
|
+
"""If |append| is None, simply return |element|. If |append| is not None,
|
101
|
+
then add |element| to it, adding each item in |element| if it's a list or
|
102
|
+
tuple."""
|
103
|
+
if append is not None and element is not None:
|
104
|
+
if isinstance(element, list) or isinstance(element, tuple):
|
105
|
+
append.extend(element)
|
106
|
+
else:
|
107
|
+
append.append(element)
|
108
|
+
else:
|
109
|
+
return element
|
110
|
+
|
111
|
+
|
112
|
+
def _FindDirectXInstallation():
|
113
|
+
"""Try to find an installation location for the DirectX SDK. Check for the
|
114
|
+
standard environment variable, and if that doesn't exist, try to find
|
115
|
+
via the registry. May return None if not found in either location."""
|
116
|
+
# Return previously calculated value, if there is one
|
117
|
+
if hasattr(_FindDirectXInstallation, 'dxsdk_dir'):
|
118
|
+
return _FindDirectXInstallation.dxsdk_dir
|
119
|
+
|
120
|
+
dxsdk_dir = os.environ.get('DXSDK_DIR')
|
121
|
+
if not dxsdk_dir:
|
122
|
+
# Setup params to pass to and attempt to launch reg.exe.
|
123
|
+
cmd = ['reg.exe', 'query', r'HKLM\Software\Microsoft\DirectX', '/s']
|
124
|
+
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
125
|
+
for line in p.communicate()[0].splitlines():
|
126
|
+
if 'InstallPath' in line:
|
127
|
+
dxsdk_dir = line.split(' ')[3] + "\\"
|
128
|
+
|
129
|
+
# Cache return value
|
130
|
+
_FindDirectXInstallation.dxsdk_dir = dxsdk_dir
|
131
|
+
return dxsdk_dir
|
132
|
+
|
133
|
+
|
134
|
+
class MsvsSettings(object):
|
135
|
+
"""A class that understands the gyp 'msvs_...' values (especially the
|
136
|
+
msvs_settings field). They largely correpond to the VS2008 IDE DOM. This
|
137
|
+
class helps map those settings to command line options."""
|
138
|
+
|
139
|
+
def __init__(self, spec, generator_flags):
|
140
|
+
self.spec = spec
|
141
|
+
self.vs_version = GetVSVersion(generator_flags)
|
142
|
+
self.dxsdk_dir = _FindDirectXInstallation()
|
143
|
+
|
144
|
+
# Try to find an installation location for the Windows DDK by checking
|
145
|
+
# the WDK_DIR environment variable, may be None.
|
146
|
+
self.wdk_dir = os.environ.get('WDK_DIR')
|
147
|
+
|
148
|
+
supported_fields = [
|
149
|
+
('msvs_configuration_attributes', dict),
|
150
|
+
('msvs_settings', dict),
|
151
|
+
('msvs_system_include_dirs', list),
|
152
|
+
('msvs_disabled_warnings', list),
|
153
|
+
('msvs_precompiled_header', str),
|
154
|
+
('msvs_precompiled_source', str),
|
155
|
+
('msvs_configuration_platform', str),
|
156
|
+
('msvs_target_platform', str),
|
157
|
+
]
|
158
|
+
configs = spec['configurations']
|
159
|
+
for field, default in supported_fields:
|
160
|
+
setattr(self, field, {})
|
161
|
+
for configname, config in configs.iteritems():
|
162
|
+
getattr(self, field)[configname] = config.get(field, default())
|
163
|
+
|
164
|
+
self.msvs_cygwin_dirs = spec.get('msvs_cygwin_dirs', ['.'])
|
165
|
+
|
166
|
+
def GetVSMacroEnv(self, base_to_build=None, config=None):
|
167
|
+
"""Get a dict of variables mapping internal VS macro names to their gyp
|
168
|
+
equivalents."""
|
169
|
+
target_platform = 'Win32' if self.GetArch(config) == 'x86' else 'x64'
|
170
|
+
target_name = self.spec.get('product_prefix', '') + \
|
171
|
+
self.spec.get('product_name', self.spec['target_name'])
|
172
|
+
target_dir = base_to_build + '\\' if base_to_build else ''
|
173
|
+
replacements = {
|
174
|
+
'$(OutDir)\\': target_dir,
|
175
|
+
'$(TargetDir)\\': target_dir,
|
176
|
+
'$(IntDir)': '$!INTERMEDIATE_DIR',
|
177
|
+
'$(InputPath)': '${source}',
|
178
|
+
'$(InputName)': '${root}',
|
179
|
+
'$(ProjectName)': self.spec['target_name'],
|
180
|
+
'$(TargetName)': target_name,
|
181
|
+
'$(PlatformName)': target_platform,
|
182
|
+
'$(ProjectDir)\\': '',
|
183
|
+
}
|
184
|
+
# '$(VSInstallDir)' and '$(VCInstallDir)' are available when and only when
|
185
|
+
# Visual Studio is actually installed.
|
186
|
+
if self.vs_version.Path():
|
187
|
+
replacements['$(VSInstallDir)'] = self.vs_version.Path()
|
188
|
+
replacements['$(VCInstallDir)'] = os.path.join(self.vs_version.Path(),
|
189
|
+
'VC') + '\\'
|
190
|
+
# Chromium uses DXSDK_DIR in include/lib paths, but it may or may not be
|
191
|
+
# set. This happens when the SDK is sync'd via src-internal, rather than
|
192
|
+
# by typical end-user installation of the SDK. If it's not set, we don't
|
193
|
+
# want to leave the unexpanded variable in the path, so simply strip it.
|
194
|
+
replacements['$(DXSDK_DIR)'] = self.dxsdk_dir if self.dxsdk_dir else ''
|
195
|
+
replacements['$(WDK_DIR)'] = self.wdk_dir if self.wdk_dir else ''
|
196
|
+
return replacements
|
197
|
+
|
198
|
+
def ConvertVSMacros(self, s, base_to_build=None, config=None):
|
199
|
+
"""Convert from VS macro names to something equivalent."""
|
200
|
+
env = self.GetVSMacroEnv(base_to_build, config=config)
|
201
|
+
return ExpandMacros(s, env)
|
202
|
+
|
203
|
+
def AdjustLibraries(self, libraries):
|
204
|
+
"""Strip -l from library if it's specified with that."""
|
205
|
+
libs = [lib[2:] if lib.startswith('-l') else lib for lib in libraries]
|
206
|
+
return [lib + '.lib' if not lib.endswith('.lib') else lib for lib in libs]
|
207
|
+
|
208
|
+
def _GetAndMunge(self, field, path, default, prefix, append, map):
|
209
|
+
"""Retrieve a value from |field| at |path| or return |default|. If
|
210
|
+
|append| is specified, and the item is found, it will be appended to that
|
211
|
+
object instead of returned. If |map| is specified, results will be
|
212
|
+
remapped through |map| before being returned or appended."""
|
213
|
+
result = _GenericRetrieve(field, default, path)
|
214
|
+
result = _DoRemapping(result, map)
|
215
|
+
result = _AddPrefix(result, prefix)
|
216
|
+
return _AppendOrReturn(append, result)
|
217
|
+
|
218
|
+
class _GetWrapper(object):
|
219
|
+
def __init__(self, parent, field, base_path, append=None):
|
220
|
+
self.parent = parent
|
221
|
+
self.field = field
|
222
|
+
self.base_path = [base_path]
|
223
|
+
self.append = append
|
224
|
+
def __call__(self, name, map=None, prefix='', default=None):
|
225
|
+
return self.parent._GetAndMunge(self.field, self.base_path + [name],
|
226
|
+
default=default, prefix=prefix, append=self.append, map=map)
|
227
|
+
|
228
|
+
def GetArch(self, config):
|
229
|
+
"""Get architecture based on msvs_configuration_platform and
|
230
|
+
msvs_target_platform. Returns either 'x86' or 'x64'."""
|
231
|
+
configuration_platform = self.msvs_configuration_platform.get(config, '')
|
232
|
+
platform = self.msvs_target_platform.get(config, '')
|
233
|
+
if not platform: # If no specific override, use the configuration's.
|
234
|
+
platform = configuration_platform
|
235
|
+
# Map from platform to architecture.
|
236
|
+
return {'Win32': 'x86', 'x64': 'x64'}.get(platform, 'x86')
|
237
|
+
|
238
|
+
def _TargetConfig(self, config):
|
239
|
+
"""Returns the target-specific configuration."""
|
240
|
+
# There's two levels of architecture/platform specification in VS. The
|
241
|
+
# first level is globally for the configuration (this is what we consider
|
242
|
+
# "the" config at the gyp level, which will be something like 'Debug' or
|
243
|
+
# 'Release_x64'), and a second target-specific configuration, which is an
|
244
|
+
# override for the global one. |config| is remapped here to take into
|
245
|
+
# account the local target-specific overrides to the global configuration.
|
246
|
+
arch = self.GetArch(config)
|
247
|
+
if arch == 'x64' and not config.endswith('_x64'):
|
248
|
+
config += '_x64'
|
249
|
+
if arch == 'x86' and config.endswith('_x64'):
|
250
|
+
config = config.rsplit('_', 1)[0]
|
251
|
+
return config
|
252
|
+
|
253
|
+
def _Setting(self, path, config,
|
254
|
+
default=None, prefix='', append=None, map=None):
|
255
|
+
"""_GetAndMunge for msvs_settings."""
|
256
|
+
return self._GetAndMunge(
|
257
|
+
self.msvs_settings[config], path, default, prefix, append, map)
|
258
|
+
|
259
|
+
def _ConfigAttrib(self, path, config,
|
260
|
+
default=None, prefix='', append=None, map=None):
|
261
|
+
"""_GetAndMunge for msvs_configuration_attributes."""
|
262
|
+
return self._GetAndMunge(
|
263
|
+
self.msvs_configuration_attributes[config],
|
264
|
+
path, default, prefix, append, map)
|
265
|
+
|
266
|
+
def AdjustIncludeDirs(self, include_dirs, config):
|
267
|
+
"""Updates include_dirs to expand VS specific paths, and adds the system
|
268
|
+
include dirs used for platform SDK and similar."""
|
269
|
+
config = self._TargetConfig(config)
|
270
|
+
includes = include_dirs + self.msvs_system_include_dirs[config]
|
271
|
+
includes.extend(self._Setting(
|
272
|
+
('VCCLCompilerTool', 'AdditionalIncludeDirectories'), config, default=[]))
|
273
|
+
return [self.ConvertVSMacros(p, config=config) for p in includes]
|
274
|
+
|
275
|
+
def GetComputedDefines(self, config):
|
276
|
+
"""Returns the set of defines that are injected to the defines list based
|
277
|
+
on other VS settings."""
|
278
|
+
config = self._TargetConfig(config)
|
279
|
+
defines = []
|
280
|
+
if self._ConfigAttrib(['CharacterSet'], config) == '1':
|
281
|
+
defines.extend(('_UNICODE', 'UNICODE'))
|
282
|
+
if self._ConfigAttrib(['CharacterSet'], config) == '2':
|
283
|
+
defines.append('_MBCS')
|
284
|
+
defines.extend(self._Setting(
|
285
|
+
('VCCLCompilerTool', 'PreprocessorDefinitions'), config, default=[]))
|
286
|
+
return defines
|
287
|
+
|
288
|
+
def GetCompilerPdbName(self, config, expand_special):
|
289
|
+
"""Get the pdb file name that should be used for compiler invocations, or
|
290
|
+
None if there's no explicit name specified."""
|
291
|
+
config = self._TargetConfig(config)
|
292
|
+
pdbname = self._Setting(
|
293
|
+
('VCCLCompilerTool', 'ProgramDataBaseFileName'), config)
|
294
|
+
if pdbname:
|
295
|
+
pdbname = expand_special(self.ConvertVSMacros(pdbname))
|
296
|
+
return pdbname
|
297
|
+
|
298
|
+
def GetMapFileName(self, config, expand_special):
|
299
|
+
"""Gets the explicitly overriden map file name for a target or returns None
|
300
|
+
if it's not set."""
|
301
|
+
config = self._TargetConfig(config)
|
302
|
+
map_file = self._Setting(('VCLinkerTool', 'MapFileName'), config)
|
303
|
+
if map_file:
|
304
|
+
map_file = expand_special(self.ConvertVSMacros(map_file, config=config))
|
305
|
+
return map_file
|
306
|
+
|
307
|
+
def GetOutputName(self, config, expand_special):
|
308
|
+
"""Gets the explicitly overridden output name for a target or returns None
|
309
|
+
if it's not overridden."""
|
310
|
+
config = self._TargetConfig(config)
|
311
|
+
type = self.spec['type']
|
312
|
+
root = 'VCLibrarianTool' if type == 'static_library' else 'VCLinkerTool'
|
313
|
+
# TODO(scottmg): Handle OutputDirectory without OutputFile.
|
314
|
+
output_file = self._Setting((root, 'OutputFile'), config)
|
315
|
+
if output_file:
|
316
|
+
output_file = expand_special(self.ConvertVSMacros(
|
317
|
+
output_file, config=config))
|
318
|
+
return output_file
|
319
|
+
|
320
|
+
def GetPDBName(self, config, expand_special):
|
321
|
+
"""Gets the explicitly overridden pdb name for a target or returns None
|
322
|
+
if it's not overridden."""
|
323
|
+
config = self._TargetConfig(config)
|
324
|
+
output_file = self._Setting(('VCLinkerTool', 'ProgramDatabaseFile'), config)
|
325
|
+
if output_file:
|
326
|
+
output_file = expand_special(self.ConvertVSMacros(
|
327
|
+
output_file, config=config))
|
328
|
+
return output_file
|
329
|
+
|
330
|
+
def GetCflags(self, config):
|
331
|
+
"""Returns the flags that need to be added to .c and .cc compilations."""
|
332
|
+
config = self._TargetConfig(config)
|
333
|
+
cflags = []
|
334
|
+
cflags.extend(['/wd' + w for w in self.msvs_disabled_warnings[config]])
|
335
|
+
cl = self._GetWrapper(self, self.msvs_settings[config],
|
336
|
+
'VCCLCompilerTool', append=cflags)
|
337
|
+
cl('Optimization',
|
338
|
+
map={'0': 'd', '1': '1', '2': '2', '3': 'x'}, prefix='/O', default='2')
|
339
|
+
cl('InlineFunctionExpansion', prefix='/Ob')
|
340
|
+
cl('DisableSpecificWarnings', prefix='/wd')
|
341
|
+
cl('StringPooling', map={'true': '/GF'})
|
342
|
+
cl('EnableFiberSafeOptimizations', map={'true': '/GT'})
|
343
|
+
cl('OmitFramePointers', map={'false': '-', 'true': ''}, prefix='/Oy')
|
344
|
+
cl('EnableIntrinsicFunctions', map={'false': '-', 'true': ''}, prefix='/Oi')
|
345
|
+
cl('FavorSizeOrSpeed', map={'1': 't', '2': 's'}, prefix='/O')
|
346
|
+
cl('WholeProgramOptimization', map={'true': '/GL'})
|
347
|
+
cl('WarningLevel', prefix='/W')
|
348
|
+
cl('WarnAsError', map={'true': '/WX'})
|
349
|
+
cl('DebugInformationFormat',
|
350
|
+
map={'1': '7', '3': 'i', '4': 'I'}, prefix='/Z')
|
351
|
+
cl('RuntimeTypeInfo', map={'true': '/GR', 'false': '/GR-'})
|
352
|
+
cl('EnableFunctionLevelLinking', map={'true': '/Gy', 'false': '/Gy-'})
|
353
|
+
cl('MinimalRebuild', map={'true': '/Gm'})
|
354
|
+
cl('BufferSecurityCheck', map={'true': '/GS', 'false': '/GS-'})
|
355
|
+
cl('BasicRuntimeChecks', map={'1': 's', '2': 'u', '3': '1'}, prefix='/RTC')
|
356
|
+
cl('RuntimeLibrary',
|
357
|
+
map={'0': 'T', '1': 'Td', '2': 'D', '3': 'Dd'}, prefix='/M')
|
358
|
+
cl('ExceptionHandling', map={'1': 'sc','2': 'a'}, prefix='/EH')
|
359
|
+
cl('DefaultCharIsUnsigned', map={'true': '/J'})
|
360
|
+
cl('TreatWChar_tAsBuiltInType',
|
361
|
+
map={'false': '-', 'true': ''}, prefix='/Zc:wchar_t')
|
362
|
+
cl('EnablePREfast', map={'true': '/analyze'})
|
363
|
+
cl('AdditionalOptions', prefix='')
|
364
|
+
cflags.extend(['/FI' + f for f in self._Setting(
|
365
|
+
('VCCLCompilerTool', 'ForcedIncludeFiles'), config, default=[])])
|
366
|
+
if self.vs_version.short_name in ('2013', '2013e'):
|
367
|
+
# New flag required in 2013 to maintain previous PDB behavior.
|
368
|
+
cflags.append('/FS')
|
369
|
+
# ninja handles parallelism by itself, don't have the compiler do it too.
|
370
|
+
cflags = filter(lambda x: not x.startswith('/MP'), cflags)
|
371
|
+
return cflags
|
372
|
+
|
373
|
+
def GetPrecompiledHeader(self, config, gyp_to_build_path):
|
374
|
+
"""Returns an object that handles the generation of precompiled header
|
375
|
+
build steps."""
|
376
|
+
config = self._TargetConfig(config)
|
377
|
+
return _PchHelper(self, config, gyp_to_build_path)
|
378
|
+
|
379
|
+
def _GetPchFlags(self, config, extension):
|
380
|
+
"""Get the flags to be added to the cflags for precompiled header support.
|
381
|
+
"""
|
382
|
+
config = self._TargetConfig(config)
|
383
|
+
# The PCH is only built once by a particular source file. Usage of PCH must
|
384
|
+
# only be for the same language (i.e. C vs. C++), so only include the pch
|
385
|
+
# flags when the language matches.
|
386
|
+
if self.msvs_precompiled_header[config]:
|
387
|
+
source_ext = os.path.splitext(self.msvs_precompiled_source[config])[1]
|
388
|
+
if _LanguageMatchesForPch(source_ext, extension):
|
389
|
+
pch = os.path.split(self.msvs_precompiled_header[config])[1]
|
390
|
+
return ['/Yu' + pch, '/FI' + pch, '/Fp${pchprefix}.' + pch + '.pch']
|
391
|
+
return []
|
392
|
+
|
393
|
+
def GetCflagsC(self, config):
|
394
|
+
"""Returns the flags that need to be added to .c compilations."""
|
395
|
+
config = self._TargetConfig(config)
|
396
|
+
return self._GetPchFlags(config, '.c')
|
397
|
+
|
398
|
+
def GetCflagsCC(self, config):
|
399
|
+
"""Returns the flags that need to be added to .cc compilations."""
|
400
|
+
config = self._TargetConfig(config)
|
401
|
+
return ['/TP'] + self._GetPchFlags(config, '.cc')
|
402
|
+
|
403
|
+
def _GetAdditionalLibraryDirectories(self, root, config, gyp_to_build_path):
|
404
|
+
"""Get and normalize the list of paths in AdditionalLibraryDirectories
|
405
|
+
setting."""
|
406
|
+
config = self._TargetConfig(config)
|
407
|
+
libpaths = self._Setting((root, 'AdditionalLibraryDirectories'),
|
408
|
+
config, default=[])
|
409
|
+
libpaths = [os.path.normpath(
|
410
|
+
gyp_to_build_path(self.ConvertVSMacros(p, config=config)))
|
411
|
+
for p in libpaths]
|
412
|
+
return ['/LIBPATH:"' + p + '"' for p in libpaths]
|
413
|
+
|
414
|
+
def GetLibFlags(self, config, gyp_to_build_path):
|
415
|
+
"""Returns the flags that need to be added to lib commands."""
|
416
|
+
config = self._TargetConfig(config)
|
417
|
+
libflags = []
|
418
|
+
lib = self._GetWrapper(self, self.msvs_settings[config],
|
419
|
+
'VCLibrarianTool', append=libflags)
|
420
|
+
libflags.extend(self._GetAdditionalLibraryDirectories(
|
421
|
+
'VCLibrarianTool', config, gyp_to_build_path))
|
422
|
+
lib('LinkTimeCodeGeneration', map={'true': '/LTCG'})
|
423
|
+
lib('AdditionalOptions')
|
424
|
+
return libflags
|
425
|
+
|
426
|
+
def GetDefFile(self, gyp_to_build_path):
|
427
|
+
"""Returns the .def file from sources, if any. Otherwise returns None."""
|
428
|
+
spec = self.spec
|
429
|
+
if spec['type'] in ('shared_library', 'loadable_module', 'executable'):
|
430
|
+
def_files = [s for s in spec.get('sources', []) if s.endswith('.def')]
|
431
|
+
if len(def_files) == 1:
|
432
|
+
return gyp_to_build_path(def_files[0])
|
433
|
+
elif len(def_files) > 1:
|
434
|
+
raise Exception("Multiple .def files")
|
435
|
+
return None
|
436
|
+
|
437
|
+
def _GetDefFileAsLdflags(self, ldflags, gyp_to_build_path):
|
438
|
+
""".def files get implicitly converted to a ModuleDefinitionFile for the
|
439
|
+
linker in the VS generator. Emulate that behaviour here."""
|
440
|
+
def_file = self.GetDefFile(gyp_to_build_path)
|
441
|
+
if def_file:
|
442
|
+
ldflags.append('/DEF:"%s"' % def_file)
|
443
|
+
|
444
|
+
def GetLdflags(self, config, gyp_to_build_path, expand_special,
|
445
|
+
manifest_base_name, is_executable):
|
446
|
+
"""Returns the flags that need to be added to link commands, and the
|
447
|
+
manifest files."""
|
448
|
+
config = self._TargetConfig(config)
|
449
|
+
ldflags = []
|
450
|
+
ld = self._GetWrapper(self, self.msvs_settings[config],
|
451
|
+
'VCLinkerTool', append=ldflags)
|
452
|
+
self._GetDefFileAsLdflags(ldflags, gyp_to_build_path)
|
453
|
+
ld('GenerateDebugInformation', map={'true': '/DEBUG'})
|
454
|
+
ld('TargetMachine', map={'1': 'X86', '17': 'X64'}, prefix='/MACHINE:')
|
455
|
+
ldflags.extend(self._GetAdditionalLibraryDirectories(
|
456
|
+
'VCLinkerTool', config, gyp_to_build_path))
|
457
|
+
ld('DelayLoadDLLs', prefix='/DELAYLOAD:')
|
458
|
+
out = self.GetOutputName(config, expand_special)
|
459
|
+
if out:
|
460
|
+
ldflags.append('/OUT:' + out)
|
461
|
+
pdb = self.GetPDBName(config, expand_special)
|
462
|
+
if pdb:
|
463
|
+
ldflags.append('/PDB:' + pdb)
|
464
|
+
map_file = self.GetMapFileName(config, expand_special)
|
465
|
+
ld('GenerateMapFile', map={'true': '/MAP:' + map_file if map_file
|
466
|
+
else '/MAP'})
|
467
|
+
ld('MapExports', map={'true': '/MAPINFO:EXPORTS'})
|
468
|
+
ld('AdditionalOptions', prefix='')
|
469
|
+
ld('SubSystem', map={'1': 'CONSOLE', '2': 'WINDOWS'}, prefix='/SUBSYSTEM:')
|
470
|
+
ld('TerminalServerAware', map={'1': ':NO', '2': ''}, prefix='/TSAWARE')
|
471
|
+
ld('LinkIncremental', map={'1': ':NO', '2': ''}, prefix='/INCREMENTAL')
|
472
|
+
ld('FixedBaseAddress', map={'1': ':NO', '2': ''}, prefix='/FIXED')
|
473
|
+
ld('RandomizedBaseAddress',
|
474
|
+
map={'1': ':NO', '2': ''}, prefix='/DYNAMICBASE')
|
475
|
+
ld('DataExecutionPrevention',
|
476
|
+
map={'1': ':NO', '2': ''}, prefix='/NXCOMPAT')
|
477
|
+
ld('OptimizeReferences', map={'1': 'NOREF', '2': 'REF'}, prefix='/OPT:')
|
478
|
+
ld('EnableCOMDATFolding', map={'1': 'NOICF', '2': 'ICF'}, prefix='/OPT:')
|
479
|
+
ld('LinkTimeCodeGeneration', map={'1': '/LTCG'})
|
480
|
+
ld('IgnoreDefaultLibraryNames', prefix='/NODEFAULTLIB:')
|
481
|
+
ld('ResourceOnlyDLL', map={'true': '/NOENTRY'})
|
482
|
+
ld('EntryPointSymbol', prefix='/ENTRY:')
|
483
|
+
ld('Profile', map={'true': '/PROFILE'})
|
484
|
+
ld('LargeAddressAware',
|
485
|
+
map={'1': ':NO', '2': ''}, prefix='/LARGEADDRESSAWARE')
|
486
|
+
# TODO(scottmg): This should sort of be somewhere else (not really a flag).
|
487
|
+
ld('AdditionalDependencies', prefix='')
|
488
|
+
|
489
|
+
# If the base address is not specifically controlled, DYNAMICBASE should
|
490
|
+
# be on by default.
|
491
|
+
base_flags = filter(lambda x: 'DYNAMICBASE' in x or x == '/FIXED',
|
492
|
+
ldflags)
|
493
|
+
if not base_flags:
|
494
|
+
ldflags.append('/DYNAMICBASE')
|
495
|
+
|
496
|
+
# If the NXCOMPAT flag has not been specified, default to on. Despite the
|
497
|
+
# documentation that says this only defaults to on when the subsystem is
|
498
|
+
# Vista or greater (which applies to the linker), the IDE defaults it on
|
499
|
+
# unless it's explicitly off.
|
500
|
+
if not filter(lambda x: 'NXCOMPAT' in x, ldflags):
|
501
|
+
ldflags.append('/NXCOMPAT')
|
502
|
+
|
503
|
+
have_def_file = filter(lambda x: x.startswith('/DEF:'), ldflags)
|
504
|
+
manifest_flags, intermediate_manifest_file = self._GetLdManifestFlags(
|
505
|
+
config, manifest_base_name, is_executable and not have_def_file)
|
506
|
+
ldflags.extend(manifest_flags)
|
507
|
+
manifest_files = self._GetAdditionalManifestFiles(config, gyp_to_build_path)
|
508
|
+
manifest_files.append(intermediate_manifest_file)
|
509
|
+
|
510
|
+
return ldflags, manifest_files
|
511
|
+
|
512
|
+
def _GetLdManifestFlags(self, config, name, allow_isolation):
|
513
|
+
"""Returns the set of flags that need to be added to the link to generate
|
514
|
+
a default manifest, as well as the name of the generated file."""
|
515
|
+
# The manifest is generated by default.
|
516
|
+
output_name = name + '.intermediate.manifest'
|
517
|
+
flags = [
|
518
|
+
'/MANIFEST',
|
519
|
+
'/ManifestFile:' + output_name,
|
520
|
+
]
|
521
|
+
|
522
|
+
config = self._TargetConfig(config)
|
523
|
+
enable_uac = self._Setting(('VCLinkerTool', 'EnableUAC'), config,
|
524
|
+
default='true')
|
525
|
+
if enable_uac == 'true':
|
526
|
+
execution_level = self._Setting(('VCLinkerTool', 'UACExecutionLevel'),
|
527
|
+
config, default='0')
|
528
|
+
execution_level_map = {
|
529
|
+
'0': 'asInvoker',
|
530
|
+
'1': 'highestAvailable',
|
531
|
+
'2': 'requireAdministrator'
|
532
|
+
}
|
533
|
+
|
534
|
+
ui_access = self._Setting(('VCLinkerTool', 'UACUIAccess'), config,
|
535
|
+
default='false')
|
536
|
+
flags.append('''/MANIFESTUAC:"level='%s' uiAccess='%s'"''' %
|
537
|
+
(execution_level_map[execution_level], ui_access))
|
538
|
+
else:
|
539
|
+
flags.append('/MANIFESTUAC:NO')
|
540
|
+
|
541
|
+
if allow_isolation:
|
542
|
+
flags.append('/ALLOWISOLATION')
|
543
|
+
return flags, output_name
|
544
|
+
|
545
|
+
def _GetAdditionalManifestFiles(self, config, gyp_to_build_path):
|
546
|
+
"""Gets additional manifest files that are added to the default one
|
547
|
+
generated by the linker."""
|
548
|
+
files = self._Setting(('VCManifestTool', 'AdditionalManifestFiles'), config,
|
549
|
+
default=[])
|
550
|
+
if isinstance(files, str):
|
551
|
+
files = files.split(';')
|
552
|
+
return [os.path.normpath(
|
553
|
+
gyp_to_build_path(self.ConvertVSMacros(f, config=config)))
|
554
|
+
for f in files]
|
555
|
+
|
556
|
+
def IsUseLibraryDependencyInputs(self, config):
|
557
|
+
"""Returns whether the target should be linked via Use Library Dependency
|
558
|
+
Inputs (using component .objs of a given .lib)."""
|
559
|
+
config = self._TargetConfig(config)
|
560
|
+
uldi = self._Setting(('VCLinkerTool', 'UseLibraryDependencyInputs'), config)
|
561
|
+
return uldi == 'true'
|
562
|
+
|
563
|
+
def IsEmbedManifest(self, config):
|
564
|
+
"""Returns whether manifest should be linked into binary."""
|
565
|
+
config = self._TargetConfig(config)
|
566
|
+
embed = self._Setting(('VCManifestTool', 'EmbedManifest'), config)
|
567
|
+
return embed == 'true'
|
568
|
+
|
569
|
+
def IsLinkIncremental(self, config):
|
570
|
+
"""Returns whether the target should be linked incrementally."""
|
571
|
+
config = self._TargetConfig(config)
|
572
|
+
link_inc = self._Setting(('VCLinkerTool', 'LinkIncremental'), config)
|
573
|
+
return link_inc != '1'
|
574
|
+
|
575
|
+
def GetRcflags(self, config, gyp_to_ninja_path):
|
576
|
+
"""Returns the flags that need to be added to invocations of the resource
|
577
|
+
compiler."""
|
578
|
+
config = self._TargetConfig(config)
|
579
|
+
rcflags = []
|
580
|
+
rc = self._GetWrapper(self, self.msvs_settings[config],
|
581
|
+
'VCResourceCompilerTool', append=rcflags)
|
582
|
+
rc('AdditionalIncludeDirectories', map=gyp_to_ninja_path, prefix='/I')
|
583
|
+
rcflags.append('/I' + gyp_to_ninja_path('.'))
|
584
|
+
rc('PreprocessorDefinitions', prefix='/d')
|
585
|
+
# /l arg must be in hex without leading '0x'
|
586
|
+
rc('Culture', prefix='/l', map=lambda x: hex(int(x))[2:])
|
587
|
+
return rcflags
|
588
|
+
|
589
|
+
def BuildCygwinBashCommandLine(self, args, path_to_base):
|
590
|
+
"""Build a command line that runs args via cygwin bash. We assume that all
|
591
|
+
incoming paths are in Windows normpath'd form, so they need to be
|
592
|
+
converted to posix style for the part of the command line that's passed to
|
593
|
+
bash. We also have to do some Visual Studio macro emulation here because
|
594
|
+
various rules use magic VS names for things. Also note that rules that
|
595
|
+
contain ninja variables cannot be fixed here (for example ${source}), so
|
596
|
+
the outer generator needs to make sure that the paths that are written out
|
597
|
+
are in posix style, if the command line will be used here."""
|
598
|
+
cygwin_dir = os.path.normpath(
|
599
|
+
os.path.join(path_to_base, self.msvs_cygwin_dirs[0]))
|
600
|
+
cd = ('cd %s' % path_to_base).replace('\\', '/')
|
601
|
+
args = [a.replace('\\', '/').replace('"', '\\"') for a in args]
|
602
|
+
args = ["'%s'" % a.replace("'", "'\\''") for a in args]
|
603
|
+
bash_cmd = ' '.join(args)
|
604
|
+
cmd = (
|
605
|
+
'call "%s\\setup_env.bat" && set CYGWIN=nontsec && ' % cygwin_dir +
|
606
|
+
'bash -c "%s ; %s"' % (cd, bash_cmd))
|
607
|
+
return cmd
|
608
|
+
|
609
|
+
def IsRuleRunUnderCygwin(self, rule):
|
610
|
+
"""Determine if an action should be run under cygwin. If the variable is
|
611
|
+
unset, or set to 1 we use cygwin."""
|
612
|
+
return int(rule.get('msvs_cygwin_shell',
|
613
|
+
self.spec.get('msvs_cygwin_shell', 1))) != 0
|
614
|
+
|
615
|
+
def _HasExplicitRuleForExtension(self, spec, extension):
|
616
|
+
"""Determine if there's an explicit rule for a particular extension."""
|
617
|
+
for rule in spec.get('rules', []):
|
618
|
+
if rule['extension'] == extension:
|
619
|
+
return True
|
620
|
+
return False
|
621
|
+
|
622
|
+
def HasExplicitIdlRules(self, spec):
|
623
|
+
"""Determine if there's an explicit rule for idl files. When there isn't we
|
624
|
+
need to generate implicit rules to build MIDL .idl files."""
|
625
|
+
return self._HasExplicitRuleForExtension(spec, 'idl')
|
626
|
+
|
627
|
+
def HasExplicitAsmRules(self, spec):
|
628
|
+
"""Determine if there's an explicit rule for asm files. When there isn't we
|
629
|
+
need to generate implicit rules to assemble .asm files."""
|
630
|
+
return self._HasExplicitRuleForExtension(spec, 'asm')
|
631
|
+
|
632
|
+
def GetIdlBuildData(self, source, config):
|
633
|
+
"""Determine the implicit outputs for an idl file. Returns output
|
634
|
+
directory, outputs, and variables and flags that are required."""
|
635
|
+
config = self._TargetConfig(config)
|
636
|
+
midl_get = self._GetWrapper(self, self.msvs_settings[config], 'VCMIDLTool')
|
637
|
+
def midl(name, default=None):
|
638
|
+
return self.ConvertVSMacros(midl_get(name, default=default),
|
639
|
+
config=config)
|
640
|
+
tlb = midl('TypeLibraryName', default='${root}.tlb')
|
641
|
+
header = midl('HeaderFileName', default='${root}.h')
|
642
|
+
dlldata = midl('DLLDataFileName', default='dlldata.c')
|
643
|
+
iid = midl('InterfaceIdentifierFileName', default='${root}_i.c')
|
644
|
+
proxy = midl('ProxyFileName', default='${root}_p.c')
|
645
|
+
# Note that .tlb is not included in the outputs as it is not always
|
646
|
+
# generated depending on the content of the input idl file.
|
647
|
+
outdir = midl('OutputDirectory', default='')
|
648
|
+
output = [header, dlldata, iid, proxy]
|
649
|
+
variables = [('tlb', tlb),
|
650
|
+
('h', header),
|
651
|
+
('dlldata', dlldata),
|
652
|
+
('iid', iid),
|
653
|
+
('proxy', proxy)]
|
654
|
+
# TODO(scottmg): Are there configuration settings to set these flags?
|
655
|
+
target_platform = 'win32' if self.GetArch(config) == 'x86' else 'x64'
|
656
|
+
flags = ['/char', 'signed', '/env', target_platform, '/Oicf']
|
657
|
+
return outdir, output, variables, flags
|
658
|
+
|
659
|
+
|
660
|
+
def _LanguageMatchesForPch(source_ext, pch_source_ext):
|
661
|
+
c_exts = ('.c',)
|
662
|
+
cc_exts = ('.cc', '.cxx', '.cpp')
|
663
|
+
return ((source_ext in c_exts and pch_source_ext in c_exts) or
|
664
|
+
(source_ext in cc_exts and pch_source_ext in cc_exts))
|
665
|
+
|
666
|
+
|
667
|
+
class PrecompiledHeader(object):
|
668
|
+
"""Helper to generate dependencies and build rules to handle generation of
|
669
|
+
precompiled headers. Interface matches the GCH handler in xcode_emulation.py.
|
670
|
+
"""
|
671
|
+
def __init__(
|
672
|
+
self, settings, config, gyp_to_build_path, gyp_to_unique_output, obj_ext):
|
673
|
+
self.settings = settings
|
674
|
+
self.config = config
|
675
|
+
pch_source = self.settings.msvs_precompiled_source[self.config]
|
676
|
+
self.pch_source = gyp_to_build_path(pch_source)
|
677
|
+
filename, _ = os.path.splitext(pch_source)
|
678
|
+
self.output_obj = gyp_to_unique_output(filename + obj_ext).lower()
|
679
|
+
|
680
|
+
def _PchHeader(self):
|
681
|
+
"""Get the header that will appear in an #include line for all source
|
682
|
+
files."""
|
683
|
+
return os.path.split(self.settings.msvs_precompiled_header[self.config])[1]
|
684
|
+
|
685
|
+
def GetObjDependencies(self, sources, objs, arch):
|
686
|
+
"""Given a list of sources files and the corresponding object files,
|
687
|
+
returns a list of the pch files that should be depended upon. The
|
688
|
+
additional wrapping in the return value is for interface compatability
|
689
|
+
with make.py on Mac, and xcode_emulation.py."""
|
690
|
+
assert arch is None
|
691
|
+
if not self._PchHeader():
|
692
|
+
return []
|
693
|
+
pch_ext = os.path.splitext(self.pch_source)[1]
|
694
|
+
for source in sources:
|
695
|
+
if _LanguageMatchesForPch(os.path.splitext(source)[1], pch_ext):
|
696
|
+
return [(None, None, self.output_obj)]
|
697
|
+
return []
|
698
|
+
|
699
|
+
def GetPchBuildCommands(self, arch):
|
700
|
+
"""Not used on Windows as there are no additional build steps required
|
701
|
+
(instead, existing steps are modified in GetFlagsModifications below)."""
|
702
|
+
return []
|
703
|
+
|
704
|
+
def GetFlagsModifications(self, input, output, implicit, command,
|
705
|
+
cflags_c, cflags_cc, expand_special):
|
706
|
+
"""Get the modified cflags and implicit dependencies that should be used
|
707
|
+
for the pch compilation step."""
|
708
|
+
if input == self.pch_source:
|
709
|
+
pch_output = ['/Yc' + self._PchHeader()]
|
710
|
+
if command == 'cxx':
|
711
|
+
return ([('cflags_cc', map(expand_special, cflags_cc + pch_output))],
|
712
|
+
self.output_obj, [])
|
713
|
+
elif command == 'cc':
|
714
|
+
return ([('cflags_c', map(expand_special, cflags_c + pch_output))],
|
715
|
+
self.output_obj, [])
|
716
|
+
return [], output, implicit
|
717
|
+
|
718
|
+
|
719
|
+
vs_version = None
|
720
|
+
def GetVSVersion(generator_flags):
|
721
|
+
global vs_version
|
722
|
+
if not vs_version:
|
723
|
+
vs_version = gyp.MSVSVersion.SelectVisualStudioVersion(
|
724
|
+
generator_flags.get('msvs_version', 'auto'))
|
725
|
+
return vs_version
|
726
|
+
|
727
|
+
def _GetVsvarsSetupArgs(generator_flags, arch):
|
728
|
+
vs = GetVSVersion(generator_flags)
|
729
|
+
return vs.SetupScript()
|
730
|
+
|
731
|
+
def ExpandMacros(string, expansions):
|
732
|
+
"""Expand $(Variable) per expansions dict. See MsvsSettings.GetVSMacroEnv
|
733
|
+
for the canonical way to retrieve a suitable dict."""
|
734
|
+
if '$' in string:
|
735
|
+
for old, new in expansions.iteritems():
|
736
|
+
assert '$(' not in new, new
|
737
|
+
string = string.replace(old, new)
|
738
|
+
return string
|
739
|
+
|
740
|
+
def _ExtractImportantEnvironment(output_of_set):
|
741
|
+
"""Extracts environment variables required for the toolchain to run from
|
742
|
+
a textual dump output by the cmd.exe 'set' command."""
|
743
|
+
envvars_to_save = (
|
744
|
+
'goma_.*', # TODO(scottmg): This is ugly, but needed for goma.
|
745
|
+
'include',
|
746
|
+
'lib',
|
747
|
+
'libpath',
|
748
|
+
'path',
|
749
|
+
'pathext',
|
750
|
+
'systemroot',
|
751
|
+
'temp',
|
752
|
+
'tmp',
|
753
|
+
)
|
754
|
+
env = {}
|
755
|
+
for line in output_of_set.splitlines():
|
756
|
+
for envvar in envvars_to_save:
|
757
|
+
if re.match(envvar + '=', line.lower()):
|
758
|
+
var, setting = line.split('=', 1)
|
759
|
+
if envvar == 'path':
|
760
|
+
# Our own rules (for running gyp-win-tool) and other actions in
|
761
|
+
# Chromium rely on python being in the path. Add the path to this
|
762
|
+
# python here so that if it's not in the path when ninja is run
|
763
|
+
# later, python will still be found.
|
764
|
+
setting = os.path.dirname(sys.executable) + os.pathsep + setting
|
765
|
+
env[var.upper()] = setting
|
766
|
+
break
|
767
|
+
for required in ('SYSTEMROOT', 'TEMP', 'TMP'):
|
768
|
+
if required not in env:
|
769
|
+
raise Exception('Environment variable "%s" '
|
770
|
+
'required to be set to valid path' % required)
|
771
|
+
return env
|
772
|
+
|
773
|
+
def _FormatAsEnvironmentBlock(envvar_dict):
|
774
|
+
"""Format as an 'environment block' directly suitable for CreateProcess.
|
775
|
+
Briefly this is a list of key=value\0, terminated by an additional \0. See
|
776
|
+
CreateProcess documentation for more details."""
|
777
|
+
block = ''
|
778
|
+
nul = '\0'
|
779
|
+
for key, value in envvar_dict.iteritems():
|
780
|
+
block += key + '=' + value + nul
|
781
|
+
block += nul
|
782
|
+
return block
|
783
|
+
|
784
|
+
def _ExtractCLPath(output_of_where):
|
785
|
+
"""Gets the path to cl.exe based on the output of calling the environment
|
786
|
+
setup batch file, followed by the equivalent of `where`."""
|
787
|
+
# Take the first line, as that's the first found in the PATH.
|
788
|
+
for line in output_of_where.strip().splitlines():
|
789
|
+
if line.startswith('LOC:'):
|
790
|
+
return line[len('LOC:'):].strip()
|
791
|
+
|
792
|
+
def GenerateEnvironmentFiles(toplevel_build_dir, generator_flags, open_out):
|
793
|
+
"""It's not sufficient to have the absolute path to the compiler, linker,
|
794
|
+
etc. on Windows, as those tools rely on .dlls being in the PATH. We also
|
795
|
+
need to support both x86 and x64 compilers within the same build (to support
|
796
|
+
msvs_target_platform hackery). Different architectures require a different
|
797
|
+
compiler binary, and different supporting environment variables (INCLUDE,
|
798
|
+
LIB, LIBPATH). So, we extract the environment here, wrap all invocations
|
799
|
+
of compiler tools (cl, link, lib, rc, midl, etc.) via win_tool.py which
|
800
|
+
sets up the environment, and then we do not prefix the compiler with
|
801
|
+
an absolute path, instead preferring something like "cl.exe" in the rule
|
802
|
+
which will then run whichever the environment setup has put in the path.
|
803
|
+
When the following procedure to generate environment files does not
|
804
|
+
meet your requirement (e.g. for custom toolchains), you can pass
|
805
|
+
"-G ninja_use_custom_environment_files" to the gyp to suppress file
|
806
|
+
generation and use custom environment files prepared by yourself."""
|
807
|
+
archs = ('x86', 'x64')
|
808
|
+
if generator_flags.get('ninja_use_custom_environment_files', 0):
|
809
|
+
cl_paths = {}
|
810
|
+
for arch in archs:
|
811
|
+
cl_paths[arch] = 'cl.exe'
|
812
|
+
return cl_paths
|
813
|
+
vs = GetVSVersion(generator_flags)
|
814
|
+
cl_paths = {}
|
815
|
+
for arch in archs:
|
816
|
+
# Extract environment variables for subprocesses.
|
817
|
+
args = vs.SetupScript(arch)
|
818
|
+
args.extend(('&&', 'set'))
|
819
|
+
popen = subprocess.Popen(
|
820
|
+
args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
821
|
+
variables, _ = popen.communicate()
|
822
|
+
env = _ExtractImportantEnvironment(variables)
|
823
|
+
env_block = _FormatAsEnvironmentBlock(env)
|
824
|
+
f = open_out(os.path.join(toplevel_build_dir, 'environment.' + arch), 'wb')
|
825
|
+
f.write(env_block)
|
826
|
+
f.close()
|
827
|
+
|
828
|
+
# Find cl.exe location for this architecture.
|
829
|
+
args = vs.SetupScript(arch)
|
830
|
+
args.extend(('&&',
|
831
|
+
'for', '%i', 'in', '(cl.exe)', 'do', '@echo', 'LOC:%~$PATH:i'))
|
832
|
+
popen = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE)
|
833
|
+
output, _ = popen.communicate()
|
834
|
+
cl_paths[arch] = _ExtractCLPath(output)
|
835
|
+
return cl_paths
|
836
|
+
|
837
|
+
def VerifyMissingSources(sources, build_dir, generator_flags, gyp_to_ninja):
|
838
|
+
"""Emulate behavior of msvs_error_on_missing_sources present in the msvs
|
839
|
+
generator: Check that all regular source files, i.e. not created at run time,
|
840
|
+
exist on disk. Missing files cause needless recompilation when building via
|
841
|
+
VS, and we want this check to match for people/bots that build using ninja,
|
842
|
+
so they're not surprised when the VS build fails."""
|
843
|
+
if int(generator_flags.get('msvs_error_on_missing_sources', 0)):
|
844
|
+
no_specials = filter(lambda x: '$' not in x, sources)
|
845
|
+
relative = [os.path.join(build_dir, gyp_to_ninja(s)) for s in no_specials]
|
846
|
+
missing = filter(lambda x: not os.path.exists(x), relative)
|
847
|
+
if missing:
|
848
|
+
# They'll look like out\Release\..\..\stuff\things.cc, so normalize the
|
849
|
+
# path for a slightly less crazy looking output.
|
850
|
+
cleaned_up = [os.path.normpath(x) for x in missing]
|
851
|
+
raise Exception('Missing input files:\n%s' % '\n'.join(cleaned_up))
|
852
|
+
|
853
|
+
# Sets some values in default_variables, which are required for many
|
854
|
+
# generators, run on Windows.
|
855
|
+
def CalculateCommonVariables(default_variables, params):
|
856
|
+
generator_flags = params.get('generator_flags', {})
|
857
|
+
|
858
|
+
# Set a variable so conditions can be based on msvs_version.
|
859
|
+
msvs_version = gyp.msvs_emulation.GetVSVersion(generator_flags)
|
860
|
+
default_variables['MSVS_VERSION'] = msvs_version.ShortName()
|
861
|
+
|
862
|
+
# To determine processor word size on Windows, in addition to checking
|
863
|
+
# PROCESSOR_ARCHITECTURE (which reflects the word size of the current
|
864
|
+
# process), it is also necessary to check PROCESSOR_ARCHITEW6432 (which
|
865
|
+
# contains the actual word size of the system when running thru WOW64).
|
866
|
+
if ('64' in os.environ.get('PROCESSOR_ARCHITECTURE', '') or
|
867
|
+
'64' in os.environ.get('PROCESSOR_ARCHITEW6432', '')):
|
868
|
+
default_variables['MSVS_OS_BITS'] = 64
|
869
|
+
else:
|
870
|
+
default_variables['MSVS_OS_BITS'] = 32
|