bundle_depot 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +54 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +29 -0
  7. data/Rakefile +1 -0
  8. data/bin/bundle-depot +6 -0
  9. data/bundle_depot.gemspec +27 -0
  10. data/config/cucumber.yml +7 -0
  11. data/features/cli.feature +59 -0
  12. data/features/fetch.feature +60 -0
  13. data/features/step_definitions/cli_steps.rb +19 -0
  14. data/features/step_definitions/store_steps.rb +58 -0
  15. data/features/store.feature +30 -0
  16. data/features/support/capture_output.rb +49 -0
  17. data/features/support/env.rb +42 -0
  18. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/build_info/json_pure-1.8.1.info +1 -0
  19. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/cache/json_pure-1.8.1.gem +0 -0
  20. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/.gitignore +13 -0
  21. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/.travis.yml +20 -0
  22. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/CHANGES +284 -0
  23. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/COPYING +58 -0
  24. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/COPYING-json-jruby +57 -0
  25. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/GPL +340 -0
  26. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/Gemfile +11 -0
  27. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/README-json-jruby.markdown +33 -0
  28. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/README.rdoc +358 -0
  29. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/Rakefile +412 -0
  30. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/TODO +1 -0
  31. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/VERSION +1 -0
  32. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/data/example.json +1 -0
  33. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/data/index.html +38 -0
  34. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/data/prototype.js +4184 -0
  35. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/diagrams/.keep +0 -0
  36. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/fbuffer/fbuffer.h +181 -0
  37. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/generator/depend +1 -0
  38. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/generator/extconf.rb +14 -0
  39. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/generator/generator.c +1435 -0
  40. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/generator/generator.h +148 -0
  41. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/parser/depend +1 -0
  42. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/parser/extconf.rb +13 -0
  43. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/parser/parser.c +2204 -0
  44. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/parser/parser.h +77 -0
  45. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/ext/json/ext/parser/parser.rl +927 -0
  46. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/install.rb +23 -0
  47. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/ByteListTranscoder.java +167 -0
  48. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/Generator.java +444 -0
  49. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/GeneratorMethods.java +232 -0
  50. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/GeneratorService.java +43 -0
  51. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/GeneratorState.java +543 -0
  52. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/OptionsReader.java +114 -0
  53. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/Parser.java +2644 -0
  54. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/Parser.rl +968 -0
  55. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/ParserService.java +35 -0
  56. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/RuntimeInfo.java +121 -0
  57. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/StringDecoder.java +167 -0
  58. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/StringEncoder.java +106 -0
  59. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/java/src/json/ext/Utils.java +89 -0
  60. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/json-java.gemspec +23 -0
  61. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/json.gemspec +38 -0
  62. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/json_pure.gemspec +40 -0
  63. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/bigdecimal.rb +28 -0
  64. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/complex.rb +22 -0
  65. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/core.rb +11 -0
  66. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/date.rb +34 -0
  67. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/date_time.rb +50 -0
  68. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/exception.rb +31 -0
  69. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/ostruct.rb +31 -0
  70. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/range.rb +29 -0
  71. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/rational.rb +22 -0
  72. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/regexp.rb +30 -0
  73. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/struct.rb +30 -0
  74. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/symbol.rb +25 -0
  75. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/add/time.rb +38 -0
  76. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/common.rb +484 -0
  77. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/ext/.keep +0 -0
  78. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/ext.rb +21 -0
  79. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/generic_object.rb +70 -0
  80. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/pure/generator.rb +522 -0
  81. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/pure/parser.rb +359 -0
  82. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/pure.rb +21 -0
  83. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json/version.rb +8 -0
  84. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/lib/json.rb +62 -0
  85. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail1.json +1 -0
  86. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail10.json +1 -0
  87. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail11.json +1 -0
  88. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail12.json +1 -0
  89. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail13.json +1 -0
  90. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail14.json +1 -0
  91. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail18.json +1 -0
  92. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail19.json +1 -0
  93. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail2.json +1 -0
  94. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail20.json +1 -0
  95. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail21.json +1 -0
  96. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail22.json +1 -0
  97. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail23.json +1 -0
  98. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail24.json +1 -0
  99. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail25.json +1 -0
  100. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail27.json +2 -0
  101. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail28.json +2 -0
  102. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail3.json +1 -0
  103. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail4.json +1 -0
  104. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail5.json +1 -0
  105. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail6.json +1 -0
  106. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail7.json +1 -0
  107. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail8.json +1 -0
  108. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/fail9.json +1 -0
  109. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/pass1.json +56 -0
  110. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/pass15.json +1 -0
  111. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/pass16.json +1 -0
  112. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/pass17.json +1 -0
  113. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/pass2.json +1 -0
  114. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/pass26.json +1 -0
  115. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/fixtures/pass3.json +6 -0
  116. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/setup_variant.rb +11 -0
  117. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json.rb +545 -0
  118. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json_addition.rb +196 -0
  119. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json_encoding.rb +65 -0
  120. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json_fixtures.rb +35 -0
  121. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json_generate.rb +322 -0
  122. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json_generic_object.rb +75 -0
  123. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json_string_matching.rb +39 -0
  124. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tests/test_json_unicode.rb +72 -0
  125. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tools/fuzz.rb +139 -0
  126. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/gems/json_pure-1.8.1/tools/server.rb +62 -0
  127. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c/ruby/2.0.0/specifications/json_pure-1.8.1.gemspec +38 -0
  128. data/fixtures/bundle/json/bde95daa2ce7dede336b4367b9e3a0690027bd6f071e0fdcb1b3047cf988963c.tar.gz +0 -0
  129. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/build_info/rake-10.1.0.info +1 -0
  130. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/cache/rake-10.1.0.gem +0 -0
  131. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/.gemtest +0 -0
  132. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/CHANGES +530 -0
  133. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/MIT-LICENSE +21 -0
  134. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/README.rdoc +187 -0
  135. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/Rakefile +375 -0
  136. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/TODO +21 -0
  137. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/command_line_usage.rdoc +152 -0
  138. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/example/Rakefile1 +38 -0
  139. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/example/Rakefile2 +35 -0
  140. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/example/a.c +6 -0
  141. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/example/b.c +6 -0
  142. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/example/main.c +11 -0
  143. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/glossary.rdoc +51 -0
  144. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/jamis.rb +591 -0
  145. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/proto_rake.rdoc +127 -0
  146. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/rake.1.gz +0 -0
  147. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/rakefile.rdoc +617 -0
  148. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/rational.rdoc +151 -0
  149. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  150. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  151. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  152. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  153. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  154. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  155. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  156. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  157. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  158. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  159. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  160. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  161. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  162. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  163. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  164. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.6.rdoc +55 -0
  165. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  166. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  167. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  168. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  169. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  170. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  171. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.4.rdoc +110 -0
  172. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.5.rdoc +114 -0
  173. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.6.rdoc +127 -0
  174. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  175. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.1.rdoc +187 -0
  176. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.2.rdoc +191 -0
  177. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  178. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  179. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/install.rb +80 -0
  180. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/alt_system.rb +108 -0
  181. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/application.rb +728 -0
  182. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/backtrace.rb +20 -0
  183. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/clean.rb +55 -0
  184. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/cloneable.rb +16 -0
  185. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/compositepublisher.rb +21 -0
  186. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/ftptools.rb +139 -0
  187. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/publisher.rb +73 -0
  188. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  189. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/sshpublisher.rb +50 -0
  190. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/sys.rb +2 -0
  191. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/default_loader.rb +10 -0
  192. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/dsl_definition.rb +157 -0
  193. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/early_time.rb +18 -0
  194. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/core.rb +28 -0
  195. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/module.rb +0 -0
  196. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/string.rb +166 -0
  197. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/time.rb +15 -0
  198. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_creation_task.rb +24 -0
  199. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_list.rb +416 -0
  200. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_task.rb +46 -0
  201. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_utils.rb +116 -0
  202. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_utils_ext.rb +144 -0
  203. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/gempackagetask.rb +2 -0
  204. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/invocation_chain.rb +57 -0
  205. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/invocation_exception_mixin.rb +16 -0
  206. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/linked_list.rb +103 -0
  207. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/loaders/makefile.rb +40 -0
  208. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/multi_task.rb +13 -0
  209. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/name_space.rb +25 -0
  210. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/packagetask.rb +190 -0
  211. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/pathmap.rb +1 -0
  212. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/phony.rb +15 -0
  213. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/private_reader.rb +20 -0
  214. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/promise.rb +99 -0
  215. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/pseudo_status.rb +29 -0
  216. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rake_module.rb +37 -0
  217. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rake_test_loader.rb +22 -0
  218. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rdoctask.rb +2 -0
  219. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ruby182_test_unit_fix.rb +27 -0
  220. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  221. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/runtest.rb +22 -0
  222. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/scope.rb +42 -0
  223. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task.rb +378 -0
  224. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task_argument_error.rb +7 -0
  225. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task_arguments.rb +89 -0
  226. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task_manager.rb +297 -0
  227. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/tasklib.rb +22 -0
  228. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/testtask.rb +201 -0
  229. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/thread_history_display.rb +48 -0
  230. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/thread_pool.rb +161 -0
  231. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/trace_output.rb +22 -0
  232. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/version.rb +9 -0
  233. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake/win32.rb +56 -0
  234. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/lib/rake.rb +73 -0
  235. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/file_creation.rb +34 -0
  236. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/helper.rb +128 -0
  237. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/support/rakefile_definitions.rb +444 -0
  238. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/support/ruby_runner.rb +33 -0
  239. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_private_reader.rb +42 -0
  240. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake.rb +40 -0
  241. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_application.rb +517 -0
  242. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_application_options.rb +457 -0
  243. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_backtrace.rb +113 -0
  244. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_clean.rb +46 -0
  245. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_definitions.rb +79 -0
  246. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_directory_task.rb +57 -0
  247. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_dsl.rb +40 -0
  248. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_early_time.rb +31 -0
  249. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_extension.rb +59 -0
  250. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_creation_task.rb +56 -0
  251. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_list.rb +627 -0
  252. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_list_path_map.rb +8 -0
  253. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_task.rb +122 -0
  254. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_utils.rb +309 -0
  255. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_ftp_file.rb +74 -0
  256. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_functional.rb +466 -0
  257. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_invocation_chain.rb +64 -0
  258. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_linked_list.rb +84 -0
  259. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_makefile_loader.rb +46 -0
  260. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_multi_task.rb +58 -0
  261. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_name_space.rb +43 -0
  262. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_package_task.rb +79 -0
  263. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_path_map.rb +168 -0
  264. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_path_map_explode.rb +34 -0
  265. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_path_map_partial.rb +18 -0
  266. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_pseudo_status.rb +21 -0
  267. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_rake_test_loader.rb +20 -0
  268. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_reduce_compat.rb +26 -0
  269. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_require.rb +40 -0
  270. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_rules.rb +362 -0
  271. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_scope.rb +44 -0
  272. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task.rb +376 -0
  273. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_argument_parsing.rb +103 -0
  274. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_arguments.rb +121 -0
  275. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_lib.rb +9 -0
  276. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_manager.rb +158 -0
  277. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  278. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_with_arguments.rb +171 -0
  279. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_test_task.rb +119 -0
  280. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_thread_pool.rb +142 -0
  281. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_top_level_functions.rb +71 -0
  282. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_win32.rb +72 -0
  283. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_thread_history_display.rb +101 -0
  284. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/gems/rake-10.1.0/test/test_trace_output.rb +52 -0
  285. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d/ruby/2.0.0/specifications/rake-10.1.0.gemspec +35 -0
  286. data/fixtures/bundle/rake/4c3a94088cd7bd0ac6b190c7f40a19c809356cda7fbd7dd8860ed3155b8e5c3d.tar.gz +0 -0
  287. data/fixtures/project/json/Gemfile +3 -0
  288. data/fixtures/project/json/Gemfile.lock +10 -0
  289. data/fixtures/project/json/vendor/cache/json_pure-1.8.1.gem +0 -0
  290. data/fixtures/project/rake/Gemfile +3 -0
  291. data/fixtures/project/rake/Gemfile.lock +10 -0
  292. data/fixtures/project/rake/vendor/cache/rake-10.1.0.gem +0 -0
  293. data/lib/bundle_depot/cache.rb +136 -0
  294. data/lib/bundle_depot/cli.rb +51 -0
  295. data/lib/bundle_depot/version.rb +3 -0
  296. data/lib/bundle_depot.rb +6 -0
  297. metadata +417 -0
@@ -0,0 +1,166 @@
1
+ require 'rake/ext/core'
2
+
3
+ ######################################################################
4
+ # Rake extension methods for String.
5
+ #
6
+ class String
7
+
8
+ rake_extension("ext") do
9
+ # Replace the file extension with +newext+. If there is no extension on
10
+ # the string, append the new extension to the end. If the new extension
11
+ # is not given, or is the empty string, remove any existing extension.
12
+ #
13
+ # +ext+ is a user added method for the String class.
14
+ def ext(newext='')
15
+ return self.dup if ['.', '..'].include? self
16
+ newext = (newext =~ /^\./) ? newext : ("." + newext) if newext != ''
17
+ self.chomp(File.extname(self)) << newext
18
+ end
19
+ end
20
+
21
+ rake_extension("pathmap") do
22
+ # Explode a path into individual components. Used by +pathmap+.
23
+ def pathmap_explode
24
+ head, tail = File.split(self)
25
+ return [self] if head == self
26
+ return [tail] if head == '.' || tail == '/'
27
+ return [head, tail] if head == '/'
28
+ return head.pathmap_explode + [tail]
29
+ end
30
+ protected :pathmap_explode
31
+
32
+ # Extract a partial path from the path. Include +n+ directories from the
33
+ # front end (left hand side) if +n+ is positive. Include |+n+|
34
+ # directories from the back end (right hand side) if +n+ is negative.
35
+ def pathmap_partial(n)
36
+ dirs = File.dirname(self).pathmap_explode
37
+ partial_dirs =
38
+ if n > 0
39
+ dirs[0...n]
40
+ elsif n < 0
41
+ dirs.reverse[0...-n].reverse
42
+ else
43
+ "."
44
+ end
45
+ File.join(partial_dirs)
46
+ end
47
+ protected :pathmap_partial
48
+
49
+ # Preform the pathmap replacement operations on the given path. The
50
+ # patterns take the form 'pat1,rep1;pat2,rep2...'.
51
+ def pathmap_replace(patterns, &block)
52
+ result = self
53
+ patterns.split(';').each do |pair|
54
+ pattern, replacement = pair.split(',')
55
+ pattern = Regexp.new(pattern)
56
+ if replacement == '*' && block_given?
57
+ result = result.sub(pattern, &block)
58
+ elsif replacement
59
+ result = result.sub(pattern, replacement)
60
+ else
61
+ result = result.sub(pattern, '')
62
+ end
63
+ end
64
+ result
65
+ end
66
+ protected :pathmap_replace
67
+
68
+ # Map the path according to the given specification. The specification
69
+ # controls the details of the mapping. The following special patterns are
70
+ # recognized:
71
+ #
72
+ # * <b>%p</b> -- The complete path.
73
+ # * <b>%f</b> -- The base file name of the path, with its file extension,
74
+ # but without any directories.
75
+ # * <b>%n</b> -- The file name of the path without its file extension.
76
+ # * <b>%d</b> -- The directory list of the path.
77
+ # * <b>%x</b> -- The file extension of the path. An empty string if there
78
+ # is no extension.
79
+ # * <b>%X</b> -- Everything *but* the file extension.
80
+ # * <b>%s</b> -- The alternate file separator if defined, otherwise use
81
+ # the standard file separator.
82
+ # * <b>%%</b> -- A percent sign.
83
+ #
84
+ # The %d specifier can also have a numeric prefix (e.g. '%2d'). If the
85
+ # number is positive, only return (up to) +n+ directories in the path,
86
+ # starting from the left hand side. If +n+ is negative, return (up to)
87
+ # |+n+| directories from the right hand side of the path.
88
+ #
89
+ # Examples:
90
+ #
91
+ # 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b'
92
+ # 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d'
93
+ #
94
+ # Also the %d, %p, %f, %n, %x, and %X operators can take a
95
+ # pattern/replacement argument to perform simple string substitutions on a
96
+ # particular part of the path. The pattern and replacement are separated
97
+ # by a comma and are enclosed by curly braces. The replacement spec comes
98
+ # after the % character but before the operator letter. (e.g.
99
+ # "%{old,new}d"). Multiple replacement specs should be separated by
100
+ # semi-colons (e.g. "%{old,new;src,bin}d").
101
+ #
102
+ # Regular expressions may be used for the pattern, and back refs may be
103
+ # used in the replacement text. Curly braces, commas and semi-colons are
104
+ # excluded from both the pattern and replacement text (let's keep parsing
105
+ # reasonable).
106
+ #
107
+ # For example:
108
+ #
109
+ # "src/org/onestepback/proj/A.java".pathmap("%{^src,bin}X.class")
110
+ #
111
+ # returns:
112
+ #
113
+ # "bin/org/onestepback/proj/A.class"
114
+ #
115
+ # If the replacement text is '*', then a block may be provided to perform
116
+ # some arbitrary calculation for the replacement.
117
+ #
118
+ # For example:
119
+ #
120
+ # "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext|
121
+ # ext.downcase
122
+ # }
123
+ #
124
+ # Returns:
125
+ #
126
+ # "/path/to/file.txt"
127
+ #
128
+ def pathmap(spec=nil, &block)
129
+ return self if spec.nil?
130
+ result = ''
131
+ spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag|
132
+ case frag
133
+ when '%f'
134
+ result << File.basename(self)
135
+ when '%n'
136
+ result << File.basename(self).ext
137
+ when '%d'
138
+ result << File.dirname(self)
139
+ when '%x'
140
+ result << File.extname(self)
141
+ when '%X'
142
+ result << self.ext
143
+ when '%p'
144
+ result << self
145
+ when '%s'
146
+ result << (File::ALT_SEPARATOR || File::SEPARATOR)
147
+ when '%-'
148
+ # do nothing
149
+ when '%%'
150
+ result << "%"
151
+ when /%(-?\d+)d/
152
+ result << pathmap_partial($1.to_i)
153
+ when /^%\{([^}]*)\}(\d*[dpfnxX])/
154
+ patterns, operator = $1, $2
155
+ result << pathmap('%' + operator).pathmap_replace(patterns, &block)
156
+ when /^%/
157
+ fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'"
158
+ else
159
+ result << frag
160
+ end
161
+ end
162
+ result
163
+ end
164
+ end
165
+
166
+ end
@@ -0,0 +1,15 @@
1
+ #--
2
+ # Extensions to time to allow comparisons with an early time class.
3
+
4
+ require 'rake/early_time'
5
+
6
+ class Time
7
+ alias rake_original_time_compare :<=>
8
+ def <=>(other)
9
+ if Rake::EarlyTime === other
10
+ - other.<=>(self)
11
+ else
12
+ rake_original_time_compare(other)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ require 'rake/file_task'
2
+ require 'rake/early_time'
3
+
4
+ module Rake
5
+
6
+ # A FileCreationTask is a file task that when used as a dependency will be
7
+ # needed if and only if the file has not been created. Once created, it is
8
+ # not re-triggered if any of its dependencies are newer, nor does trigger
9
+ # any rebuilds of tasks that depend on it whenever it is updated.
10
+ #
11
+ class FileCreationTask < FileTask
12
+ # Is this file task needed? Yes if it doesn't exist.
13
+ def needed?
14
+ ! File.exist?(name)
15
+ end
16
+
17
+ # Time stamp for file creation task. This time stamp is earlier
18
+ # than any other time stamp.
19
+ def timestamp
20
+ Rake::EARLY
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,416 @@
1
+ require 'rake/cloneable'
2
+ require 'rake/file_utils_ext'
3
+ require 'rake/pathmap'
4
+
5
+ ######################################################################
6
+ module Rake
7
+
8
+ # #########################################################################
9
+ # A FileList is essentially an array with a few helper methods defined to
10
+ # make file manipulation a bit easier.
11
+ #
12
+ # FileLists are lazy. When given a list of glob patterns for possible files
13
+ # to be included in the file list, instead of searching the file structures
14
+ # to find the files, a FileList holds the pattern for latter use.
15
+ #
16
+ # This allows us to define a number of FileList to match any number of
17
+ # files, but only search out the actual files when then FileList itself is
18
+ # actually used. The key is that the first time an element of the
19
+ # FileList/Array is requested, the pending patterns are resolved into a real
20
+ # list of file names.
21
+ #
22
+ class FileList
23
+
24
+ include Cloneable
25
+
26
+ # == Method Delegation
27
+ #
28
+ # The lazy evaluation magic of FileLists happens by implementing all the
29
+ # array specific methods to call +resolve+ before delegating the heavy
30
+ # lifting to an embedded array object (@items).
31
+ #
32
+ # In addition, there are two kinds of delegation calls. The regular kind
33
+ # delegates to the @items array and returns the result directly. Well,
34
+ # almost directly. It checks if the returned value is the @items object
35
+ # itself, and if so will return the FileList object instead.
36
+ #
37
+ # The second kind of delegation call is used in methods that normally
38
+ # return a new Array object. We want to capture the return value of these
39
+ # methods and wrap them in a new FileList object. We enumerate these
40
+ # methods in the +SPECIAL_RETURN+ list below.
41
+
42
+ # List of array methods (that are not in +Object+) that need to be
43
+ # delegated.
44
+ ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).
45
+ map { |n| n.to_s }
46
+
47
+ # List of additional methods that must be delegated.
48
+ MUST_DEFINE = %w[inspect <=>]
49
+
50
+ # List of methods that should not be delegated here (we define special
51
+ # versions of them explicitly below).
52
+ MUST_NOT_DEFINE = %w[to_a to_ary partition *]
53
+
54
+ # List of delegated methods that return new array values which need
55
+ # wrapping.
56
+ SPECIAL_RETURN = %w[
57
+ map collect sort sort_by select find_all reject grep
58
+ compact flatten uniq values_at
59
+ + - & |
60
+ ]
61
+
62
+ DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).
63
+ map { |s| s.to_s }.sort.uniq
64
+
65
+ # Now do the delegation.
66
+ DELEGATING_METHODS.each do |sym|
67
+ if SPECIAL_RETURN.include?(sym)
68
+ ln = __LINE__ + 1
69
+ class_eval %{
70
+ def #{sym}(*args, &block)
71
+ resolve
72
+ result = @items.send(:#{sym}, *args, &block)
73
+ FileList.new.import(result)
74
+ end
75
+ }, __FILE__, ln
76
+ else
77
+ ln = __LINE__ + 1
78
+ class_eval %{
79
+ def #{sym}(*args, &block)
80
+ resolve
81
+ result = @items.send(:#{sym}, *args, &block)
82
+ result.object_id == @items.object_id ? self : result
83
+ end
84
+ }, __FILE__, ln
85
+ end
86
+ end
87
+
88
+ # Create a file list from the globbable patterns given. If you wish to
89
+ # perform multiple includes or excludes at object build time, use the
90
+ # "yield self" pattern.
91
+ #
92
+ # Example:
93
+ # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb')
94
+ #
95
+ # pkg_files = FileList.new('lib/**/*') do |fl|
96
+ # fl.exclude(/\bCVS\b/)
97
+ # end
98
+ #
99
+ def initialize(*patterns)
100
+ @pending_add = []
101
+ @pending = false
102
+ @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
103
+ @exclude_procs = DEFAULT_IGNORE_PROCS.dup
104
+ @items = []
105
+ patterns.each { |pattern| include(pattern) }
106
+ yield self if block_given?
107
+ end
108
+
109
+ # Add file names defined by glob patterns to the file list. If an array
110
+ # is given, add each element of the array.
111
+ #
112
+ # Example:
113
+ # file_list.include("*.java", "*.cfg")
114
+ # file_list.include %w( math.c lib.h *.o )
115
+ #
116
+ def include(*filenames)
117
+ # TODO: check for pending
118
+ filenames.each do |fn|
119
+ if fn.respond_to? :to_ary
120
+ include(*fn.to_ary)
121
+ else
122
+ @pending_add << fn
123
+ end
124
+ end
125
+ @pending = true
126
+ self
127
+ end
128
+ alias :add :include
129
+
130
+ # Register a list of file name patterns that should be excluded from the
131
+ # list. Patterns may be regular expressions, glob patterns or regular
132
+ # strings. In addition, a block given to exclude will remove entries that
133
+ # return true when given to the block.
134
+ #
135
+ # Note that glob patterns are expanded against the file system. If a file
136
+ # is explicitly added to a file list, but does not exist in the file
137
+ # system, then an glob pattern in the exclude list will not exclude the
138
+ # file.
139
+ #
140
+ # Examples:
141
+ # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c']
142
+ # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c']
143
+ #
144
+ # If "a.c" is a file, then ...
145
+ # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c']
146
+ #
147
+ # If "a.c" is not a file, then ...
148
+ # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c']
149
+ #
150
+ def exclude(*patterns, &block)
151
+ patterns.each do |pat|
152
+ @exclude_patterns << pat
153
+ end
154
+ @exclude_procs << block if block_given?
155
+ resolve_exclude unless @pending
156
+ self
157
+ end
158
+
159
+
160
+ # Clear all the exclude patterns so that we exclude nothing.
161
+ def clear_exclude
162
+ @exclude_patterns = []
163
+ @exclude_procs = []
164
+ self
165
+ end
166
+
167
+ # Define equality.
168
+ def ==(array)
169
+ to_ary == array
170
+ end
171
+
172
+ # Return the internal array object.
173
+ def to_a
174
+ resolve
175
+ @items
176
+ end
177
+
178
+ # Return the internal array object.
179
+ def to_ary
180
+ to_a
181
+ end
182
+
183
+ # Lie about our class.
184
+ def is_a?(klass)
185
+ klass == Array || super(klass)
186
+ end
187
+ alias kind_of? is_a?
188
+
189
+ # Redefine * to return either a string or a new file list.
190
+ def *(other)
191
+ result = @items * other
192
+ case result
193
+ when Array
194
+ FileList.new.import(result)
195
+ else
196
+ result
197
+ end
198
+ end
199
+
200
+ # Resolve all the pending adds now.
201
+ def resolve
202
+ if @pending
203
+ @pending = false
204
+ @pending_add.each do |fn| resolve_add(fn) end
205
+ @pending_add = []
206
+ resolve_exclude
207
+ end
208
+ self
209
+ end
210
+
211
+ def resolve_add(fn)
212
+ case fn
213
+ when %r{[*?\[\{]}
214
+ add_matching(fn)
215
+ else
216
+ self << fn
217
+ end
218
+ end
219
+ private :resolve_add
220
+
221
+ def resolve_exclude
222
+ reject! { |fn| excluded_from_list?(fn) }
223
+ self
224
+ end
225
+ private :resolve_exclude
226
+
227
+ # Return a new FileList with the results of running +sub+ against each
228
+ # element of the original list.
229
+ #
230
+ # Example:
231
+ # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o']
232
+ #
233
+ def sub(pat, rep)
234
+ inject(FileList.new) { |res, fn| res << fn.sub(pat, rep) }
235
+ end
236
+
237
+ # Return a new FileList with the results of running +gsub+ against each
238
+ # element of the original list.
239
+ #
240
+ # Example:
241
+ # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\")
242
+ # => ['lib\\test\\file', 'x\\y']
243
+ #
244
+ def gsub(pat, rep)
245
+ inject(FileList.new) { |res, fn| res << fn.gsub(pat, rep) }
246
+ end
247
+
248
+ # Same as +sub+ except that the original file list is modified.
249
+ def sub!(pat, rep)
250
+ each_with_index { |fn, i| self[i] = fn.sub(pat, rep) }
251
+ self
252
+ end
253
+
254
+ # Same as +gsub+ except that the original file list is modified.
255
+ def gsub!(pat, rep)
256
+ each_with_index { |fn, i| self[i] = fn.gsub(pat, rep) }
257
+ self
258
+ end
259
+
260
+ # Apply the pathmap spec to each of the included file names, returning a
261
+ # new file list with the modified paths. (See String#pathmap for
262
+ # details.)
263
+ def pathmap(spec=nil)
264
+ collect { |fn| fn.pathmap(spec) }
265
+ end
266
+
267
+ # Return a new FileList with <tt>String#ext</tt> method applied to
268
+ # each member of the array.
269
+ #
270
+ # This method is a shortcut for:
271
+ #
272
+ # array.collect { |item| item.ext(newext) }
273
+ #
274
+ # +ext+ is a user added method for the Array class.
275
+ def ext(newext='')
276
+ collect { |fn| fn.ext(newext) }
277
+ end
278
+
279
+
280
+ # Grep each of the files in the filelist using the given pattern. If a
281
+ # block is given, call the block on each matching line, passing the file
282
+ # name, line number, and the matching line of text. If no block is given,
283
+ # a standard emacs style file:linenumber:line message will be printed to
284
+ # standard out. Returns the number of matched items.
285
+ def egrep(pattern, *options)
286
+ matched = 0
287
+ each do |fn|
288
+ begin
289
+ open(fn, "r", *options) do |inf|
290
+ count = 0
291
+ inf.each do |line|
292
+ count += 1
293
+ if pattern.match(line)
294
+ matched += 1
295
+ if block_given?
296
+ yield fn, count, line
297
+ else
298
+ puts "#{fn}:#{count}:#{line}"
299
+ end
300
+ end
301
+ end
302
+ end
303
+ rescue StandardError => ex
304
+ $stderr.puts "Error while processing '#{fn}': #{ex}"
305
+ end
306
+ end
307
+ matched
308
+ end
309
+
310
+ # Return a new file list that only contains file names from the current
311
+ # file list that exist on the file system.
312
+ def existing
313
+ select { |fn| File.exist?(fn) }
314
+ end
315
+
316
+ # Modify the current file list so that it contains only file name that
317
+ # exist on the file system.
318
+ def existing!
319
+ resolve
320
+ @items = @items.select { |fn| File.exist?(fn) }
321
+ self
322
+ end
323
+
324
+ # FileList version of partition. Needed because the nested arrays should
325
+ # be FileLists in this version.
326
+ def partition(&block) # :nodoc:
327
+ resolve
328
+ result = @items.partition(&block)
329
+ [
330
+ FileList.new.import(result[0]),
331
+ FileList.new.import(result[1]),
332
+ ]
333
+ end
334
+
335
+ # Convert a FileList to a string by joining all elements with a space.
336
+ def to_s
337
+ resolve
338
+ self.join(' ')
339
+ end
340
+
341
+ # Add matching glob patterns.
342
+ def add_matching(pattern)
343
+ FileList.glob(pattern).each do |fn|
344
+ self << fn unless excluded_from_list?(fn)
345
+ end
346
+ end
347
+ private :add_matching
348
+
349
+ # Should the given file name be excluded from the list?
350
+ #
351
+ # NOTE: This method was formally named "exclude?", but Rails
352
+ # introduced an exclude? method as an array method and setup a
353
+ # conflict with file list. We renamed the method to avoid
354
+ # confusion. If you were using "FileList#exclude?" in your user
355
+ # code, you will need to update.
356
+ def excluded_from_list?(fn)
357
+ return true if @exclude_patterns.any? do |pat|
358
+ case pat
359
+ when Regexp
360
+ fn =~ pat
361
+ when /[*?]/
362
+ File.fnmatch?(pat, fn, File::FNM_PATHNAME)
363
+ else
364
+ fn == pat
365
+ end
366
+ end
367
+ @exclude_procs.any? { |p| p.call(fn) }
368
+ end
369
+
370
+ DEFAULT_IGNORE_PATTERNS = [
371
+ /(^|[\/\\])CVS([\/\\]|$)/,
372
+ /(^|[\/\\])\.svn([\/\\]|$)/,
373
+ /\.bak$/,
374
+ /~$/
375
+ ]
376
+ DEFAULT_IGNORE_PROCS = [
377
+ proc { |fn| fn =~ /(^|[\/\\])core$/ && ! File.directory?(fn) }
378
+ ]
379
+
380
+ def import(array)
381
+ @items = array
382
+ self
383
+ end
384
+
385
+ class << self
386
+ # Create a new file list including the files listed. Similar to:
387
+ #
388
+ # FileList.new(*args)
389
+ def [](*args)
390
+ new(*args)
391
+ end
392
+
393
+ # Get a sorted list of files matching the pattern. This method
394
+ # should be prefered to Dir[pattern] and Dir.glob(pattern) because
395
+ # the files returned are guaranteed to be sorted.
396
+ def glob(pattern, *args)
397
+ Dir.glob(pattern, *args).sort
398
+ end
399
+ end
400
+ end
401
+ end
402
+
403
+ module Rake
404
+ class << self
405
+
406
+ # Yield each file or directory component.
407
+ def each_dir_parent(dir) # :nodoc:
408
+ old_length = nil
409
+ while dir != '.' && dir.length != old_length
410
+ yield(dir)
411
+ old_length = dir.length
412
+ dir = File.dirname(dir)
413
+ end
414
+ end
415
+ end
416
+ end # module Rake
@@ -0,0 +1,46 @@
1
+ require 'rake/task.rb'
2
+ require 'rake/early_time'
3
+
4
+ module Rake
5
+ # #########################################################################
6
+ # A FileTask is a task that includes time based dependencies. If any of a
7
+ # FileTask's prerequisites have a timestamp that is later than the file
8
+ # represented by this task, then the file must be rebuilt (using the
9
+ # supplied actions).
10
+ #
11
+ class FileTask < Task
12
+
13
+ # Is this file task needed? Yes if it doesn't exist, or if its time stamp
14
+ # is out of date.
15
+ def needed?
16
+ ! File.exist?(name) || out_of_date?(timestamp)
17
+ end
18
+
19
+ # Time stamp for file task.
20
+ def timestamp
21
+ if File.exist?(name)
22
+ File.mtime(name.to_s)
23
+ else
24
+ Rake::EARLY
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ # Are there any prerequisites with a later time than the given time stamp?
31
+ def out_of_date?(stamp)
32
+ @prerequisites.any? { |n| application[n, @scope].timestamp > stamp }
33
+ end
34
+
35
+ # ----------------------------------------------------------------
36
+ # Task class methods.
37
+ #
38
+ class << self
39
+ # Apply the scope to the task name according to the rules for this kind
40
+ # of task. File based tasks ignore the scope when creating the name.
41
+ def scope_name(scope, task_name)
42
+ task_name
43
+ end
44
+ end
45
+ end
46
+ end