librarianp 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +10 -0
  5. data/CHANGELOG.md +255 -0
  6. data/Gemfile +8 -0
  7. data/Gemfile.lock +235 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +55 -0
  10. data/Rakefile +28 -0
  11. data/VERSION +1 -0
  12. data/lib/librarian/action/base.rb +24 -0
  13. data/lib/librarian/action/clean.rb +44 -0
  14. data/lib/librarian/action/ensure.rb +24 -0
  15. data/lib/librarian/action/install.rb +95 -0
  16. data/lib/librarian/action/persist_resolution_mixin.rb +51 -0
  17. data/lib/librarian/action/resolve.rb +46 -0
  18. data/lib/librarian/action/update.rb +44 -0
  19. data/lib/librarian/action.rb +5 -0
  20. data/lib/librarian/algorithms.rb +133 -0
  21. data/lib/librarian/cli/manifest_presenter.rb +89 -0
  22. data/lib/librarian/cli.rb +225 -0
  23. data/lib/librarian/config/database.rb +205 -0
  24. data/lib/librarian/config/file_source.rb +47 -0
  25. data/lib/librarian/config/hash_source.rb +33 -0
  26. data/lib/librarian/config/source.rb +149 -0
  27. data/lib/librarian/config.rb +7 -0
  28. data/lib/librarian/dependency.rb +153 -0
  29. data/lib/librarian/dsl/receiver.rb +42 -0
  30. data/lib/librarian/dsl/target.rb +171 -0
  31. data/lib/librarian/dsl.rb +102 -0
  32. data/lib/librarian/environment/runtime_cache.rb +101 -0
  33. data/lib/librarian/environment.rb +230 -0
  34. data/lib/librarian/error.rb +4 -0
  35. data/lib/librarian/helpers.rb +29 -0
  36. data/lib/librarian/linter/source_linter.rb +55 -0
  37. data/lib/librarian/lockfile/compiler.rb +66 -0
  38. data/lib/librarian/lockfile/parser.rb +123 -0
  39. data/lib/librarian/lockfile.rb +29 -0
  40. data/lib/librarian/logger.rb +46 -0
  41. data/lib/librarian/manifest.rb +146 -0
  42. data/lib/librarian/manifest_set.rb +150 -0
  43. data/lib/librarian/mock/cli.rb +19 -0
  44. data/lib/librarian/mock/dsl.rb +15 -0
  45. data/lib/librarian/mock/environment.rb +21 -0
  46. data/lib/librarian/mock/extension.rb +9 -0
  47. data/lib/librarian/mock/source/mock/registry.rb +83 -0
  48. data/lib/librarian/mock/source/mock.rb +80 -0
  49. data/lib/librarian/mock/source.rb +1 -0
  50. data/lib/librarian/mock/version.rb +5 -0
  51. data/lib/librarian/mock.rb +1 -0
  52. data/lib/librarian/posix.rb +129 -0
  53. data/lib/librarian/resolution.rb +46 -0
  54. data/lib/librarian/resolver/implementation.rb +238 -0
  55. data/lib/librarian/resolver.rb +94 -0
  56. data/lib/librarian/rspec/support/cli_macro.rb +120 -0
  57. data/lib/librarian/source/basic_api.rb +45 -0
  58. data/lib/librarian/source/git/repository.rb +193 -0
  59. data/lib/librarian/source/git.rb +172 -0
  60. data/lib/librarian/source/local.rb +54 -0
  61. data/lib/librarian/source/path.rb +56 -0
  62. data/lib/librarian/source.rb +2 -0
  63. data/lib/librarian/spec.rb +13 -0
  64. data/lib/librarian/spec_change_set.rb +173 -0
  65. data/lib/librarian/specfile.rb +19 -0
  66. data/lib/librarian/support/abstract_method.rb +21 -0
  67. data/lib/librarian/ui.rb +64 -0
  68. data/lib/librarian/version.rb +3 -0
  69. data/lib/librarian.rb +11 -0
  70. data/librarian.gemspec +47 -0
  71. data/spec/functional/cli_spec.rb +27 -0
  72. data/spec/functional/posix_spec.rb +32 -0
  73. data/spec/functional/source/git/repository_spec.rb +199 -0
  74. data/spec/functional/source/git_spec.rb +174 -0
  75. data/spec/support/fakefs.rb +37 -0
  76. data/spec/support/method_patch_macro.rb +30 -0
  77. data/spec/support/project_path_macro.rb +14 -0
  78. data/spec/support/with_env_macro.rb +22 -0
  79. data/spec/unit/action/base_spec.rb +18 -0
  80. data/spec/unit/action/clean_spec.rb +102 -0
  81. data/spec/unit/action/ensure_spec.rb +37 -0
  82. data/spec/unit/action/install_spec.rb +111 -0
  83. data/spec/unit/algorithms_spec.rb +131 -0
  84. data/spec/unit/config/database_spec.rb +320 -0
  85. data/spec/unit/dependency/requirement_spec.rb +12 -0
  86. data/spec/unit/dependency_spec.rb +212 -0
  87. data/spec/unit/dsl_spec.rb +173 -0
  88. data/spec/unit/environment/runtime_cache_spec.rb +73 -0
  89. data/spec/unit/environment_spec.rb +209 -0
  90. data/spec/unit/lockfile/parser_spec.rb +162 -0
  91. data/spec/unit/lockfile_spec.rb +65 -0
  92. data/spec/unit/manifest/version_spec.rb +11 -0
  93. data/spec/unit/manifest_set_spec.rb +202 -0
  94. data/spec/unit/manifest_spec.rb +36 -0
  95. data/spec/unit/mock/environment_spec.rb +25 -0
  96. data/spec/unit/mock/source/mock_spec.rb +22 -0
  97. data/spec/unit/resolver_spec.rb +299 -0
  98. data/spec/unit/source/git_spec.rb +29 -0
  99. data/spec/unit/spec_change_set_spec.rb +169 -0
  100. metadata +257 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 02a5b8a8fefca65597bdf2ead8377293039a73a8
4
+ data.tar.gz: b9e2a7797f3b19acfc1b7b06cc1247380698f247
5
+ SHA512:
6
+ metadata.gz: c46e3c05255a2671b969b552d1bc6bf00989dac8748bbbe3a41baeb68ec0071b93d4640e60c73a77979cfb04453276f0fe204605327eb2e7d87ef877bf77d0f6
7
+ data.tar.gz: 20c6573ed3ba861117641d37abeb2a8f72227278657b1f1b7cf3cbfe202ad461a246b06e0ea04e5fc111b1b2540fe904670a7ef99053c1c8a41db23fa0ab09eb
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ pkg/*
4
+ tmp
5
+ vendor
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ script: rspec spec -b
3
+ rvm:
4
+ - 2.2.x
5
+ - 2.1.x
6
+ - 2.0.x
7
+ - 1.9.x
8
+ - 1.8.x
9
+ - jruby-19mode
10
+ - jruby-18mode
data/CHANGELOG.md ADDED
@@ -0,0 +1,255 @@
1
+ # Change Log
2
+
3
+ ## 0.1.2
4
+
5
+ * \#153. Mark the license in the gemspec.
6
+
7
+ * \#158, \#160, \#159. Handle cyclic dependencies for adapters which opt in to
8
+ cyclic dependencies.
9
+
10
+ * \#154. Cache git repository sources which are identical but for their :path
11
+ attributes (where to look inside the repository for the manifest). Thanks
12
+ @bcatlin.
13
+
14
+ * \#161. Fix JRuby exception in posix run! method. Thanks @justenwalker.
15
+
16
+ * \#163. Don't fetch git repositories multiple times per run. Thanks @njam.
17
+
18
+ ## 0.1.1
19
+
20
+ * \#147. Handle the case where HOME is not in the environment. Thanks @bradleyd.
21
+
22
+ * \#140. Properly handle the failure to clone a git repository. Avoid wiping out
23
+ the host project's changes.
24
+
25
+ * \#127. Support Rubinius and JRuby, including when shelling out to system
26
+ commands.
27
+
28
+ * \#144. Allow running the test suite with a simple `rake`. Thanks @nickhammond.
29
+
30
+ ## 0.1.0
31
+
32
+ * Extract the chef adapter to its own gem.
33
+
34
+ ## 0.0.26
35
+
36
+ * \#112. Prevent the git source being confused in certain cases by colorized
37
+ output from git. HT: @ericpp.
38
+
39
+ * \#115, \#116. Accommodate cookbook archives generated by `git archive`.
40
+ HT: @taqtiqa-mark.
41
+
42
+ * \#119. Support NO_PROXY, a modifier on HTTP_PROXY and friends. HT: @databus23.
43
+
44
+ * \#121. A github pseudosource. HT: @alno.
45
+
46
+ * \#122. Follow http redirect responses in the chef site source. HT: @Fleurer.
47
+
48
+ * Improve the resolver performance by detecting conflicts earlier and
49
+ backtracking more quickly. This will help avoid certain cases of long
50
+ resolutions caused by conflicts; the conflicts will still be there, but will
51
+ be detected more quickly and the resolution terminated more quickly. This
52
+ changes the resolution algorithm, and new resolutions may differ from older
53
+ resolutions.
54
+
55
+ ## 0.0.25
56
+
57
+ * \#71. Fix an error, given certain locale settings, with reading cookbook
58
+ metadata files.
59
+
60
+ * \#89. Fix an error when encountering manifests and dependencies with names of
61
+ a single letter, such as `"R"`.
62
+
63
+ * \#92, \#99. HTTP proxy support via the `HTTP_PROXY` environment variable. Also
64
+ supports `HTTP_PROXY_USER` and `HTTP_PROXY_PASS` environment variables. Thanks
65
+ @tknerr.
66
+
67
+ * \#97. Enforce that the `:ref` option in the `:git` source may only be given a
68
+ string.
69
+
70
+ * \#98. Fix unpacking chef site-sourced packages where the directory in the
71
+ tarball does not match the cookbook name.
72
+
73
+ ## 0.0.24
74
+
75
+ * \#15. A remembered configuration system.
76
+
77
+ * \#16. Configure, and remember configuration for, chef install paths.
78
+
79
+ * \#38. Configure, and remember configuration for, stripping out `.git`
80
+ directories from git-sources chef dependencies.
81
+
82
+ * \#76. Support git annotated tags.
83
+
84
+ * \#80. Ignore directories in the `PATH` named `git` when looking for the `git`
85
+ bin. Thanks @avit.
86
+
87
+ * \#85. Provide a helpful message when running the `show` command without a
88
+ lockfile present.
89
+
90
+ ## 0.0.23
91
+
92
+ * \#41. Build gems with a built gemspec.
93
+
94
+ * \#67. Cache remote objects at the latest possible moments, and only when they
95
+ are needed.
96
+
97
+ * \#68. Fix unpacking chef site-sourced packages on Windows by pivoting from a
98
+ Librarian-managed scratch space, rather than pivoting from Windows' temp
99
+ directory. There were unexplained problems with using the Windows temp
100
+ directory in certain cases, possibly related to the temp directory and the
101
+ Librarian cache directory being on different volumes.
102
+
103
+ * \#69. Fix invoking Librarian with git-sourced dependencies from git hooks by
104
+ unsetting `GIT_DIR` around shelling out to git.
105
+
106
+ * Print general environment information when running with `--verbose`.
107
+
108
+ ## 0.0.22
109
+
110
+ * Fix the `outdated` CLI command.
111
+
112
+ ## 0.0.21
113
+
114
+ * \#64. Sources now raise when given unrecognized options in the specfile.
115
+
116
+ * A new `show` CLI command.
117
+
118
+ * Changed the `clean` CLI command no longer to delete the lockfile.
119
+
120
+ * Simplify the architecture of `Librarian::Manifest` vis-a-vis sources. It is no
121
+ longer a base class for adapters to inherit. Now, sources expose a small
122
+ interface, which `Librarian::Manifest` can call, for delay-loading attributes.
123
+
124
+ * The git source now resolves the `git` binary before `chdir`ing.
125
+
126
+ * Test on Rubinius.
127
+
128
+ ## 0.0.20
129
+
130
+ * A command to print outdated dependencies.
131
+
132
+ ## 0.0.19
133
+
134
+ * Fix breakage on 1.8.
135
+
136
+ ## 0.0.18
137
+
138
+ * \#57. Include existing manifests' dependencies in resolution.
139
+
140
+ * Permit the update action even with a changed specfile.
141
+
142
+ ## 0.0.17
143
+
144
+ * Use a pure-Ruby implementation of tar/gz. Helps with Windows support, since
145
+ Windows boxes are less likely than *NIX boxes to have the `tar` executable.
146
+
147
+ * Fix an issue where the chef site source considers uncached manifests to be
148
+ cached, and skips caching them, causing the install action to fail.
149
+
150
+ * Fail fast if the resolver produces an inconsistent resolution. It is a known
151
+ issue that the resolver will sometimes (deterministically, not randomly)
152
+ produce an inconsistent resolution when performing an update action (#57).
153
+ Start debugging this by failing fast at this point and spitting out gobs of
154
+ debug-level log details.
155
+
156
+ ## 0.0.16
157
+
158
+ * Recache site-sourced dependency metadata per each run.
159
+
160
+ * \#46. Always install.
161
+
162
+ * \#53. Abstract versions & requirements from rubygems.
163
+
164
+ * Own the install path. Recreate it on each install.
165
+ WARNING: If you have your own content in the install path, it will be deleted without mercy.
166
+
167
+ ## 0.0.15
168
+
169
+ * Rewrite the README.
170
+
171
+ * \#44, \#49. Better updating of cached git sources without using local merges.
172
+
173
+ ## 0.0.14
174
+
175
+ * \#39 Fixes a regression induced by using `git reset --hard SHA`.
176
+
177
+ ## 0.0.13
178
+
179
+ * \#36 Fixes an issue where, if a dependency has a git source (the upstream), and the upstream is updated,
180
+ then attempting to update that dependency in the local resolution would not update that dependency so
181
+ long as that git source were cached (@databus23).
182
+
183
+ * More immediate detection of, and better error messages for, cases of blank dependency or manifest names
184
+ or cases of names that are otherwise insensible, such as names that are untrimmed.
185
+
186
+ ## 0.0.12
187
+
188
+ * Fixes an issue where, if a dependency has a git source with a ref, re-resolving may fail.
189
+
190
+ ## 0.0.11
191
+
192
+ * Fix a regression where the cli command "version" failed.
193
+
194
+ ## 0.0.10
195
+
196
+ This release focuses on refactoring some of the internals. There are no functional changes.
197
+
198
+ ## 0.0.9
199
+
200
+ * \#11 Fixes a problem where, if the repo is in a path where a component has a space, attempting to resolve a
201
+ site-sourced dependency fails.
202
+
203
+ ## 0.0.8
204
+
205
+ * A `version` task.
206
+
207
+ * A change log.
208
+
209
+ * \#10 Fixes the problem with bouncing the lockfile when updating, when using a git source with the default ref.
210
+
211
+ ## 0.0.7
212
+
213
+ * \#8 Add highline temporarily as a runtime dependency of `librarian` (@fnichol).
214
+ When the project is split into `librarian` and `librarian-chef`, the `chef` runtime dependency will
215
+ be moved to `librarian-chef`. If the project is further split into a knife plugin, the dependency
216
+ will be moved there.
217
+
218
+ ## 0.0.6
219
+
220
+ * \#7 Show a better error message when a cookbook is missing the required metadata file.
221
+
222
+ * Miscellaneous bugfixes.
223
+
224
+ ## 0.0.5
225
+
226
+ * \#4 An `init` task for `librarian-chef`.
227
+ This task creates a nearly-blank `Cheffile` with just the default Opscode Community Site source.
228
+
229
+ * Automatically create the `cookbooks` directory, if it's missing, when running the `install` task.
230
+
231
+ * \#3 Add `chef` temporarily as a runtime dependency of `librarian` (@fnichol).
232
+ When the project is split into `librarian` and `librarian-chef`, the `chef` runtime dependency will
233
+ be moved to `librarian-chef`.
234
+
235
+ ## 0.0.4
236
+
237
+ * A simple knife integration.
238
+ This integration allows you to specify a `librarian-chef`-managed tempdir as a `cookbook_path`.
239
+ This is useful to force knife only to upload the exact cookbooks that `librarian-chef` knows
240
+ about, rather than whatever happens to be found in the `cookbooks` directory.
241
+
242
+ ## 0.0.3
243
+
244
+ * Miscellaneous bugfixes.
245
+
246
+ ## 0.0.2
247
+
248
+ * An optional `:path` attribute for `:git` sources.
249
+ This allows you to specify exactly where within a git repository a given cookbook is to be found.
250
+
251
+ * A full example of a Cheffile and its usage in the readme.
252
+
253
+ ## 0.0.1
254
+
255
+ * Initial release.
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in librarian.gemspec
4
+ gemspec
5
+
6
+ gem "fakefs"
7
+
8
+ gem "rubysl", :platforms => %w[rbx]
data/Gemfile.lock ADDED
@@ -0,0 +1,235 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ librarianp (0.1.2)
5
+ highline
6
+ thor (~> 0.15)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ diff-lcs (1.2.5)
12
+ fakefs (0.4.2)
13
+ ffi2-generators (0.1.1)
14
+ highline (1.7.0)
15
+ json (1.7.7)
16
+ rake (10.0.4)
17
+ rspec (2.99.0)
18
+ rspec-core (~> 2.99.0)
19
+ rspec-expectations (~> 2.99.0)
20
+ rspec-mocks (~> 2.99.0)
21
+ rspec-core (2.99.2)
22
+ rspec-expectations (2.99.2)
23
+ diff-lcs (>= 1.1.3, < 2.0)
24
+ rspec-mocks (2.99.3)
25
+ rubysl (2.1.0)
26
+ rubysl-abbrev (~> 2.0)
27
+ rubysl-base64 (~> 2.0)
28
+ rubysl-benchmark (~> 2.0)
29
+ rubysl-bigdecimal (~> 2.0)
30
+ rubysl-cgi (~> 2.0)
31
+ rubysl-cgi-session (~> 2.0)
32
+ rubysl-cmath (~> 2.0)
33
+ rubysl-complex (~> 2.0)
34
+ rubysl-continuation (~> 2.0)
35
+ rubysl-coverage (~> 2.0)
36
+ rubysl-csv (~> 2.0)
37
+ rubysl-curses (~> 2.0)
38
+ rubysl-date (~> 2.0)
39
+ rubysl-delegate (~> 2.0)
40
+ rubysl-digest (~> 2.0)
41
+ rubysl-drb (~> 2.0)
42
+ rubysl-e2mmap (~> 2.0)
43
+ rubysl-english (~> 2.0)
44
+ rubysl-enumerator (~> 2.0)
45
+ rubysl-erb (~> 2.0)
46
+ rubysl-etc (~> 2.0)
47
+ rubysl-expect (~> 2.0)
48
+ rubysl-fcntl (~> 2.0)
49
+ rubysl-fiber (~> 2.0)
50
+ rubysl-fileutils (~> 2.0)
51
+ rubysl-find (~> 2.0)
52
+ rubysl-forwardable (~> 2.0)
53
+ rubysl-getoptlong (~> 2.0)
54
+ rubysl-gserver (~> 2.0)
55
+ rubysl-io-console (~> 2.0)
56
+ rubysl-io-nonblock (~> 2.0)
57
+ rubysl-io-wait (~> 2.0)
58
+ rubysl-ipaddr (~> 2.0)
59
+ rubysl-irb (~> 2.1)
60
+ rubysl-logger (~> 2.0)
61
+ rubysl-mathn (~> 2.0)
62
+ rubysl-matrix (~> 2.0)
63
+ rubysl-mkmf (~> 2.0)
64
+ rubysl-monitor (~> 2.0)
65
+ rubysl-mutex_m (~> 2.0)
66
+ rubysl-net-ftp (~> 2.0)
67
+ rubysl-net-http (~> 2.0)
68
+ rubysl-net-imap (~> 2.0)
69
+ rubysl-net-pop (~> 2.0)
70
+ rubysl-net-protocol (~> 2.0)
71
+ rubysl-net-smtp (~> 2.0)
72
+ rubysl-net-telnet (~> 2.0)
73
+ rubysl-nkf (~> 2.0)
74
+ rubysl-observer (~> 2.0)
75
+ rubysl-open-uri (~> 2.0)
76
+ rubysl-open3 (~> 2.0)
77
+ rubysl-openssl (~> 2.0)
78
+ rubysl-optparse (~> 2.0)
79
+ rubysl-ostruct (~> 2.0)
80
+ rubysl-pathname (~> 2.0)
81
+ rubysl-prettyprint (~> 2.0)
82
+ rubysl-prime (~> 2.0)
83
+ rubysl-profile (~> 2.0)
84
+ rubysl-profiler (~> 2.0)
85
+ rubysl-pstore (~> 2.0)
86
+ rubysl-pty (~> 2.0)
87
+ rubysl-rational (~> 2.0)
88
+ rubysl-resolv (~> 2.0)
89
+ rubysl-rexml (~> 2.0)
90
+ rubysl-rinda (~> 2.0)
91
+ rubysl-rss (~> 2.0)
92
+ rubysl-scanf (~> 2.0)
93
+ rubysl-securerandom (~> 2.0)
94
+ rubysl-set (~> 2.0)
95
+ rubysl-shellwords (~> 2.0)
96
+ rubysl-singleton (~> 2.0)
97
+ rubysl-socket (~> 2.0)
98
+ rubysl-stringio (~> 2.0)
99
+ rubysl-strscan (~> 2.0)
100
+ rubysl-sync (~> 2.0)
101
+ rubysl-syslog (~> 2.0)
102
+ rubysl-tempfile (~> 2.0)
103
+ rubysl-thread (~> 2.0)
104
+ rubysl-thwait (~> 2.0)
105
+ rubysl-time (~> 2.0)
106
+ rubysl-timeout (~> 2.0)
107
+ rubysl-tmpdir (~> 2.0)
108
+ rubysl-tsort (~> 2.0)
109
+ rubysl-un (~> 2.0)
110
+ rubysl-uri (~> 2.0)
111
+ rubysl-weakref (~> 2.0)
112
+ rubysl-webrick (~> 2.0)
113
+ rubysl-xmlrpc (~> 2.0)
114
+ rubysl-yaml (~> 2.0)
115
+ rubysl-zlib (~> 2.0)
116
+ rubysl-abbrev (2.0.4)
117
+ rubysl-base64 (2.0.0)
118
+ rubysl-benchmark (2.0.1)
119
+ rubysl-bigdecimal (2.0.2)
120
+ rubysl-cgi (2.0.1)
121
+ rubysl-cgi-session (2.0.1)
122
+ rubysl-cmath (2.0.0)
123
+ rubysl-complex (2.0.0)
124
+ rubysl-continuation (2.0.0)
125
+ rubysl-coverage (2.0.3)
126
+ rubysl-csv (2.0.2)
127
+ rubysl-english (~> 2.0)
128
+ rubysl-curses (2.0.1)
129
+ rubysl-date (2.0.9)
130
+ rubysl-delegate (2.0.1)
131
+ rubysl-digest (2.0.3)
132
+ rubysl-drb (2.0.1)
133
+ rubysl-e2mmap (2.0.0)
134
+ rubysl-english (2.0.0)
135
+ rubysl-enumerator (2.0.0)
136
+ rubysl-erb (2.0.2)
137
+ rubysl-etc (2.0.3)
138
+ ffi2-generators (~> 0.1)
139
+ rubysl-expect (2.0.0)
140
+ rubysl-fcntl (2.0.4)
141
+ ffi2-generators (~> 0.1)
142
+ rubysl-fiber (2.0.0)
143
+ rubysl-fileutils (2.0.3)
144
+ rubysl-find (2.0.1)
145
+ rubysl-forwardable (2.0.1)
146
+ rubysl-getoptlong (2.0.0)
147
+ rubysl-gserver (2.0.0)
148
+ rubysl-socket (~> 2.0)
149
+ rubysl-thread (~> 2.0)
150
+ rubysl-io-console (2.0.0)
151
+ rubysl-io-nonblock (2.0.0)
152
+ rubysl-io-wait (2.0.0)
153
+ rubysl-ipaddr (2.0.0)
154
+ rubysl-irb (2.1.1)
155
+ rubysl-e2mmap (~> 2.0)
156
+ rubysl-mathn (~> 2.0)
157
+ rubysl-thread (~> 2.0)
158
+ rubysl-logger (2.1.0)
159
+ rubysl-mathn (2.0.0)
160
+ rubysl-matrix (2.1.0)
161
+ rubysl-e2mmap (~> 2.0)
162
+ rubysl-mkmf (2.0.1)
163
+ rubysl-fileutils (~> 2.0)
164
+ rubysl-shellwords (~> 2.0)
165
+ rubysl-monitor (2.0.0)
166
+ rubysl-mutex_m (2.0.0)
167
+ rubysl-net-ftp (2.0.1)
168
+ rubysl-net-http (2.0.4)
169
+ rubysl-cgi (~> 2.0)
170
+ rubysl-erb (~> 2.0)
171
+ rubysl-singleton (~> 2.0)
172
+ rubysl-net-imap (2.0.1)
173
+ rubysl-net-pop (2.0.1)
174
+ rubysl-net-protocol (2.0.1)
175
+ rubysl-net-smtp (2.0.1)
176
+ rubysl-net-telnet (2.0.0)
177
+ rubysl-nkf (2.0.1)
178
+ rubysl-observer (2.0.0)
179
+ rubysl-open-uri (2.0.0)
180
+ rubysl-open3 (2.0.0)
181
+ rubysl-openssl (2.2.1)
182
+ rubysl-optparse (2.0.1)
183
+ rubysl-shellwords (~> 2.0)
184
+ rubysl-ostruct (2.0.4)
185
+ rubysl-pathname (2.1.0)
186
+ rubysl-prettyprint (2.0.3)
187
+ rubysl-prime (2.0.1)
188
+ rubysl-profile (2.0.0)
189
+ rubysl-profiler (2.0.1)
190
+ rubysl-pstore (2.0.0)
191
+ rubysl-pty (2.0.3)
192
+ rubysl-rational (2.0.1)
193
+ rubysl-resolv (2.1.2)
194
+ rubysl-rexml (2.0.4)
195
+ rubysl-rinda (2.0.1)
196
+ rubysl-rss (2.0.0)
197
+ rubysl-scanf (2.0.0)
198
+ rubysl-securerandom (2.0.0)
199
+ rubysl-set (2.0.1)
200
+ rubysl-shellwords (2.0.0)
201
+ rubysl-singleton (2.0.0)
202
+ rubysl-socket (2.0.1)
203
+ rubysl-stringio (2.0.0)
204
+ rubysl-strscan (2.0.0)
205
+ rubysl-sync (2.0.0)
206
+ rubysl-syslog (2.1.0)
207
+ ffi2-generators (~> 0.1)
208
+ rubysl-tempfile (2.0.1)
209
+ rubysl-thread (2.0.3)
210
+ rubysl-thwait (2.0.0)
211
+ rubysl-time (2.0.3)
212
+ rubysl-timeout (2.0.0)
213
+ rubysl-tmpdir (2.0.1)
214
+ rubysl-tsort (2.0.1)
215
+ rubysl-un (2.0.0)
216
+ rubysl-fileutils (~> 2.0)
217
+ rubysl-optparse (~> 2.0)
218
+ rubysl-uri (2.0.0)
219
+ rubysl-weakref (2.0.0)
220
+ rubysl-webrick (2.0.0)
221
+ rubysl-xmlrpc (2.0.0)
222
+ rubysl-yaml (2.1.0)
223
+ rubysl-zlib (2.0.1)
224
+ thor (0.19.1)
225
+
226
+ PLATFORMS
227
+ ruby
228
+
229
+ DEPENDENCIES
230
+ fakefs
231
+ json
232
+ librarianp!
233
+ rake
234
+ rspec (~> 2.14)
235
+ rubysl
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2011 ApplicationsOnline, LLC. and Carlos Sanchez
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,55 @@
1
+ Librarian [![Build Status](https://secure.travis-ci.org/carlossg/librarian.png)](http://travis-ci.org/carlossg/librarian) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/carlossg/librarian)
2
+ =========
3
+
4
+ Librarian is a framework for writing bundlers, which are tools that resolve,
5
+ fetch, install, and isolate a project's dependencies, in Ruby.
6
+
7
+ A bundler written with Librarian will expect you to provide a specfile listing
8
+ your project's declared dependencies, including any version constraints and
9
+ including the upstream sources for finding them. Librarian can resolve the spec,
10
+ write a lockfile listing the full resolution, fetch the resolved dependencies,
11
+ install them, and isolate them in your project.
12
+
13
+ A bundler written with Librarian will be similar in kind to [Bundler](http://gembundler.com),
14
+ the bundler for Ruby gems that many modern Rails applications use.
15
+
16
+ How to Contribute
17
+ -----------------
18
+
19
+ ### Running the tests
20
+
21
+ Ensure the gem dependencies are installed:
22
+
23
+ $ bundle
24
+
25
+ Run the tests with the default rake task:
26
+
27
+ $ [bundle exec] rake
28
+
29
+ or directly with the rspec command:
30
+
31
+ $ [bundle exec] rspec spec
32
+
33
+ ### Installing locally
34
+
35
+ Ensure the gem dependencies are installed:
36
+
37
+ $ bundle
38
+
39
+ Install from the repository:
40
+
41
+ $ [bundle exec] rake install
42
+
43
+ ### Reporting Issues
44
+
45
+ Please include a reproducible test case.
46
+
47
+ License
48
+ -------
49
+
50
+ Written by Jay Feldblum and Carlos Sanchez.
51
+
52
+ Copyright (c) 2011-2013 ApplicationsOnline, LLC. and Carlos Sanchez
53
+
54
+ Released under the terms of the MIT License. For further information, please see
55
+ the file `LICENSE.txt`.
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+
4
+ module Bundler
5
+ class GemHelper
6
+
7
+ def build_gem_with_built_spec
8
+ spec = Gem::Specification.load(spec_path)
9
+ spec_ruby = spec.to_ruby
10
+ original_spec_path = spec_path + ".original"
11
+ FileUtils.mv(spec_path, original_spec_path)
12
+ File.open(spec_path, "wb"){|f| f.write(spec_ruby)}
13
+ build_gem_without_built_spec
14
+ ensure
15
+ FileUtils.mv(original_spec_path, spec_path)
16
+ end
17
+
18
+ alias build_gem_without_built_spec build_gem
19
+ alias build_gem build_gem_with_built_spec
20
+
21
+ end
22
+ end
23
+
24
+ Bundler::GemHelper.install_tasks
25
+
26
+ RSpec::Core::RakeTask.new('spec')
27
+ task :default => :spec
28
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.2
@@ -0,0 +1,24 @@
1
+ module Librarian
2
+ module Action
3
+ class Base
4
+
5
+ attr_accessor :environment
6
+ private :environment=
7
+
8
+ attr_accessor :options
9
+ private :options=
10
+
11
+ def initialize(environment, options = { })
12
+ self.environment = environment
13
+ self.options = options
14
+ end
15
+
16
+ private
17
+
18
+ def debug(*args, &block)
19
+ environment.logger.debug(*args, &block)
20
+ end
21
+
22
+ end
23
+ end
24
+ end