inventory 1.3.0 → 1.4.0

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.
@@ -0,0 +1,102 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # Contains zero or more {Dependency dependencies} of the project. Dependencies
4
+ # can be {#+ added}, {#require}d, {#each enumerated}, and
5
+ # {#add_to_gem_specification added to Gem specifications}. Dependencies are
6
+ # set up by passing a block to {#initialize} and calling {#development},
7
+ # {#runtime}, and {#optional} inside it.
8
+ #
9
+ # @example Creating a List of Dependencies
10
+ # Dependencies.new{
11
+ # development 'inventory-rake', 1, 3, 0
12
+ # runtime 'bar', 1, 6, 0
13
+ # }
14
+ class Inventory::Dependencies
15
+ include Enumerable
16
+
17
+ # Creates a new list of DEPENDENCIES and allows more to be added in the
18
+ # optionally #instance_exec’d block by calling {#development}, {#runtime},
19
+ # and {#optional} inside it.
20
+ #
21
+ # @param [Array<Dependency>] dependencies
22
+ # @yield [?]
23
+ def initialize(*dependencies)
24
+ @dependencies = dependencies
25
+ instance_exec(&Proc.new) if block_given?
26
+ end
27
+
28
+ private
29
+
30
+ # Add a {Development} dependency on project NAME, version MAJOR, MINOR,
31
+ # PATCH, along with any OPTIONS.
32
+ #
33
+ # @param (see Inventory::Dependency#initialize)
34
+ # @option (see Inventory::Dependency#initialize)
35
+ def development(name, major, minor, patch, options = {})
36
+ dependencies << Development.new(name, major, minor, patch, options)
37
+ self
38
+ end
39
+
40
+ # Add a {Runtime} dependency on project NAME, version MAJOR, MINOR, PATCH,
41
+ # along with any OPTIONS.
42
+ #
43
+ # @param (see Inventory::Dependency#initialize)
44
+ # @option (see Inventory::Dependency#initialize)
45
+ def runtime(name, major, minor, patch, options = {})
46
+ dependencies << Runtime.new(name, major, minor, patch, options)
47
+ self
48
+ end
49
+
50
+ # Add an {Optional} dependency on project NAME, version MAJOR, MINOR, PATCH,
51
+ # along with any OPTIONS.
52
+ #
53
+ # @param (see Inventory::Dependency#initialize)
54
+ # @option (see Inventory::Dependency#initialize)
55
+ def optional(name, major, minor, patch, options = {})
56
+ dependencies << Optional.new(name, major, minor, patch, options)
57
+ self
58
+ end
59
+
60
+ public
61
+
62
+ # @return [Dependencies] The dependencies of the receiver and those of OTHER
63
+ def +(other)
64
+ self.class.new(*(dependencies + other.dependencies))
65
+ end
66
+
67
+ # @overload
68
+ # Enumerates the dependencies.
69
+ #
70
+ # @yieldparam [Dependency] dependency
71
+ # @overload
72
+ # @return [Enumerator<Dependency>] An Enumerator over the dependencies
73
+ def each
74
+ return enum_for(__method__) unless block_given?
75
+ dependencies.each do |dependency|
76
+ yield dependency
77
+ end
78
+ self
79
+ end
80
+
81
+ # {Dependency#require Require} each dependency in turn.
82
+ # @return [self]
83
+ def require
84
+ map{ |dependency| dependency.require }
85
+ self
86
+ end
87
+
88
+ # {Dependency#add_to_gem_specification Add} each dependency to a Gem
89
+ # specification.
90
+ # @param [Gem::Specification] specification
91
+ # @return [self]
92
+ def add_to_gem_specification(specification)
93
+ each do |dependency|
94
+ dependency.add_to_gem_specification specification
95
+ end
96
+ self
97
+ end
98
+
99
+ protected
100
+
101
+ attr_reader :dependencies
102
+ end
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # A development dependency is one that’s needed during development of a
4
+ # project. It won’t be required when the library is loaded, but it will be
5
+ # added to a Gem specification as a development dependency.
6
+ class Inventory::Dependencies::Development
7
+ include Inventory::Dependency
8
+
9
+ # Do nothing.
10
+ # @return [nil]
11
+ def require
12
+ nil
13
+ end
14
+
15
+ # Add the receiver as a development dependency to SPECIFICATION.
16
+ # @param [Gem::Specification] specification
17
+ # @return [self]
18
+ def add_to_gem_specification(specification)
19
+ specification.add_development_dependency name, gem_requirement
20
+ self
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # An optional dependency is one that may or may not be needed during runtime.
4
+ # It won’t be required when the library is loaded, but it will be added to a
5
+ # Gem specification as a runtime dependency.
6
+ class Inventory::Dependencies::Optional
7
+ include Inventory::Dependency
8
+
9
+ # Do nothing.
10
+ # @return [nil]
11
+ def require
12
+ nil
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # A runtime dependency is one that’s needed during runtime. It’ll be required
4
+ # when the library is loaded and added to a Gem specification as a runtime
5
+ # dependency.
6
+ class Inventory::Dependencies::Runtime
7
+ include Inventory::Dependency
8
+ end
@@ -0,0 +1,85 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # Some form of dependency of this project. A dependency can be {#require}d,
4
+ # {#add_to_gem_specification added to a gem specification}, and has various
5
+ # information associated with it: {#name}, {#major}, {#minor}, {#patch}, and
6
+ # {#feature}.
7
+ module Inventory::Dependency
8
+ # Sets up a dependency on project NAME, version MAJOR, MINOR, PATCH, along
9
+ # with any OPTIONS. Any methods may be overridden on the instance in the
10
+ # optionally #instance_exec’d block, if a dependency has any non-standard
11
+ # requirements.
12
+ #
13
+ # @param [String] name
14
+ # @param [Integer] major
15
+ # @param [Integer] minor
16
+ # @param [Integer] patch
17
+ # @param [Hash] options
18
+ # @option options [String] :feature ('%s-%s.0' % [name.gsub('-', '/'),
19
+ # major]) The name of the feature to load
20
+ def initialize(name, major, minor, patch, options = {})
21
+ @name, @major, @minor, @patch = name, major, minor, patch
22
+ @altfeature = nil
23
+ @feature = options.fetch(:feature){
24
+ @altfeature = '%s-%d.0' % [name.gsub('-', '/'), major]
25
+ '%s-%d.0' % [name, major]
26
+ }
27
+ instance_exec(&Proc.new) if block_given?
28
+ end
29
+
30
+ # @return [Boolean] The result of requiring {#feature}
31
+ def require
32
+ super feature
33
+ rescue LoadError => e
34
+ if not e.respond_to? :path or e.path.end_with? feature
35
+ begin
36
+ super @altfeature
37
+ rescue LoadError
38
+ raise e
39
+ end
40
+ end
41
+ end
42
+
43
+ # Add the receiver as a runtime dependency to SPECIFICATION.
44
+ # @param [Gem::Specification] specification
45
+ # @return [self]
46
+ def add_to_gem_specification(specification)
47
+ specification.add_runtime_dependency name, gem_requirement
48
+ self
49
+ end
50
+
51
+ # @return [String] The version atoms on the form {#major}.{#minor}.{#patch}
52
+ def to_s
53
+ [major, minor, patch].join('.')
54
+ end
55
+
56
+ # @return [String] The name of the project that this dependency pertains to
57
+ attr_reader :name
58
+
59
+ # @return [Integer] The major version atom of the dependency
60
+ attr_reader :major
61
+
62
+ # @return [Integer] The minor version atom of the dependency
63
+ attr_reader :minor
64
+
65
+ # @return [Integer] The patch version atom of the dependency
66
+ attr_reader :patch
67
+
68
+ # @return [String] The name of the feature to {#require}
69
+ attr_reader :feature
70
+
71
+ private
72
+
73
+ # Returns the version range to use in {#add_to_gem_specification}. The
74
+ # default is to use `~>` {#major}.{#minor} if {#major} > 0 and `~>`
75
+ # {#major}.{#minor}.{#patch} otherwise. The reasoning here is that the
76
+ # version numbers are using [semantic versioning](http://semver.org) with the
77
+ # unfortunate use of minor and patch as a fake major/minor combination when
78
+ # major is 0, which is most often the case for Ruby projects. Start your
79
+ # major versions at 1 and you’ll avoid this misuse of version numbers.
80
+ #
81
+ # @return [String]
82
+ def gem_requirement
83
+ '~> %s' % (major > 0 ? '%d.%d' % [major, minor] : to_s)
84
+ end
85
+ end
@@ -0,0 +1,82 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # An extension represents a sub-directory under the “ext” directory in the
4
+ # project. Such a directory contains source files, usually written in C, that
5
+ # interface with the underlying Ruby implementation, and possibly other
6
+ # low-level systems, that aren’t otherwise available to Ruby code.
7
+ #
8
+ # For an inventory, an extension is a set of files that should be included in
9
+ # the project and can contain multiple extensions.
10
+ # [Inventory-Rake](http://disu.se/software/inventory-rake/) uses information
11
+ # found in these extensions to compile them for use from Ruby code.
12
+ class Inventory::Extension
13
+ # Creates an extension named NAME. A block may be given that’ll be
14
+ # \#instance_exec’d in the extension being created so that various methods may
15
+ # be overridden to suit the extension being created.
16
+ #
17
+ # @param [String] name
18
+ # @yield [?]
19
+ def initialize(name)
20
+ @name = name
21
+ instance_exec(&Proc.new) if block_given?
22
+ end
23
+
24
+ # @return [String] The sub-directory into the project that contains the
25
+ # extension, the default being `ext/{#name}`
26
+ def directory
27
+ 'ext/%s' % name
28
+ end
29
+
30
+ # @return [String] The path into the project that contains the “extconf.rb”
31
+ # file for the extension, the default being `{#directory}/extconf.rb`
32
+ def extconf
33
+ '%s/extconf.rb' % directory
34
+ end
35
+
36
+ # @return [String] The path into the project that contains the “depend”
37
+ # file for the extension, the default being `{#directory}/depend`
38
+ # @note This file is usually created by hand by invoking `gcc -MM *.c >
39
+ # depend`
40
+ def depend
41
+ '%s/depend' % directory
42
+ end
43
+
44
+ # @return [Array<String>] The source files that make up the extension, the
45
+ # default being empty
46
+ def sources
47
+ []
48
+ end
49
+
50
+ # @return [Array<String>] The complete paths of {#sources} inside the package
51
+ def source_files
52
+ sources.map{ |e| '%s/%s' % [directory, e] }
53
+ end
54
+
55
+ # @return [Array<String>] The complete paths to any additional files
56
+ def additional_files
57
+ []
58
+ end
59
+
60
+ # @return [Array<String>] All files included in the package, that is
61
+ # [{#extconf}, {#depend}] + {#source_files} + {#additional_files}
62
+ def files
63
+ [extconf, depend] + source_files + additional_files
64
+ end
65
+
66
+ # @return [Array<String>] Whatever {#files} returns
67
+ def to_a
68
+ files
69
+ end
70
+
71
+ # @return [String] The receiver’s {#name}
72
+ def to_s
73
+ name
74
+ end
75
+
76
+ def inspect
77
+ '#<%s: %s %s>' % [self.class, name, directory]
78
+ end
79
+
80
+ # @return [String] The receiver’s {#name}
81
+ attr_reader :name
82
+ end
@@ -0,0 +1,23 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ class Inventory
4
+ Version = Inventory.new(1, 4, 0){
5
+ def dependencies
6
+ Dependencies.new{
7
+ development 'inventory-rake', 1, 4, 0
8
+ development 'lookout', 3, 0, 0
9
+ development 'lookout-rake', 3, 0, 0
10
+ development 'yard', 0, 8, 5
11
+ }
12
+ end
13
+
14
+ def package_libs
15
+ %w[dependency.rb
16
+ dependencies.rb
17
+ dependencies/development.rb
18
+ dependencies/optional.rb
19
+ dependencies/runtime.rb
20
+ extension.rb]
21
+ end
22
+ }
23
+ end
@@ -1,6 +1,14 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  Expectations do
4
+ expect 'a/lib/a/version.rb' do
5
+ Inventory.new(1, 0, 0, 'a/lib/a/version.rb').path
6
+ end
7
+
8
+ expect 'a' do
9
+ Inventory.new(1, 0, 0, 'a/lib/a/version.rb').package_path
10
+ end
11
+
4
12
  expect 'a' do
5
13
  Inventory.new(1, 0, 0, 'a/lib/a/version.rb').package
6
14
  end
@@ -0,0 +1,4 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ Expectations do
4
+ end
metadata CHANGED
@@ -1,107 +1,329 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inventory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
5
- prerelease:
4
+ version: 1.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nikolai Weibull
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-05-01 00:00:00.000000000 Z
11
+ date: 2013-04-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: inventory-rake
16
- requirement: &2156387080 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '1.3'
19
+ version: '1.4'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *2156387080
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: lookout
27
- requirement: &2156385940 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ~>
31
32
  - !ruby/object:Gem::Version
32
33
  version: '3.0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *2156385940
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: lookout-rake
38
- requirement: &2156385020 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
45
  - - ~>
42
46
  - !ruby/object:Gem::Version
43
47
  version: '3.0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *2156385020
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: yard
49
- requirement: &2156384360 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
54
- version: 0.8.0
61
+ version: 0.8.5
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *2156384360
58
- description: ! " Inventory\n\n Inventory allows
59
- you to create inventories of your Ruby projects. These\n inventories can then
60
- be used to load the project, create gem specifications\n and gems, run unit tests,
61
- and verify that the project’s content is what you\n think it is.\n"
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.8.5
69
+ description: |2
70
+ Inventory
71
+
72
+ Inventory keeps track of the contents of your Ruby¹ projects. Such an
73
+ inventory can be used to load the project, create gem specifications and
74
+ gems, run unit tests, compile extensions, and verify that the project’s
75
+ content is what you think it is.
76
+
77
+ ¹ See http://ruby-lang.org/
78
+
79
+ § Usage
80
+
81
+ Let’s begin by discussing the project structure that Inventory expects you
82
+ to use. It’s pretty much exactly the same as the standard Ruby project
83
+ structure¹:
84
+
85
+ ├── README
86
+ ├── Rakefile
87
+ ├── lib
88
+ │ ├── foo-1.0
89
+ │ │ ├── bar.rb
90
+ │ │ └── version.rb
91
+ │ └── foo-1.0.rb
92
+ └── test
93
+ └── unit
94
+ ├── foo-1.0
95
+ │ ├── bar.rb
96
+ │ └── version.rb
97
+ └── foo-1.0.rb
98
+
99
+ Here you see a simplified version of a project called “Foo”’s project
100
+ structure. The only real difference from the standard is that the main
101
+ entry point into the library is named “foo-1.0.rb” instead of “foo.rb” and
102
+ that the root sub-directory of “lib” is similarly named “foo-1.0” instead
103
+ of “foo”. The difference is the inclusion of the API version. This must
104
+ be the major version of the project followed by a constant “.0”. The
105
+ reason for this is that it allows concurrent installations of different
106
+ major versions of the project and means that the wrong version will never
107
+ accidentally be loaded with require.
108
+
109
+ There’s a bigger difference in the content of the files.
110
+ ‹Lib/foo-1.0/version.rb› will contain our inventory instead of a String:
111
+
112
+ require 'inventory-1.0'
113
+
114
+ class Foo
115
+ Version = Foo.new(1, 4, 0){
116
+ def dependencies
117
+ super + Dependencies.new{
118
+ development 'baz', 1, 3, 0
119
+ runtime 'goo', 2, 0, 0
120
+ optional 'roo-loo', 3, 0, 0, :feature => 'roo-loo'
121
+ }
122
+ end
123
+
124
+ def package_libs
125
+ %w[bar.rb]
126
+ end
127
+ }
128
+ end
129
+
130
+ We’re introducing quite a few concepts at once, and we’ll look into each in
131
+ greater detail, but we begin by setting the ‹Version› constant to a new
132
+ instance of an Inventory with major, minor, and patch version atoms 1, 4,
133
+ and 0. Then we add a couple of dependencies and list the library files
134
+ that are included in this project.
135
+
136
+ The version numbers shouldn’t come as a surprise. These track the version
137
+ of the API that we’re shipping using {semantic versioning}². They also
138
+ allow the Inventory#to_s method to act as if you’d defined Version as
139
+ ‹'1.4.0'›.
140
+
141
+ We then extend the definition of ‹dependencies› by adding another set of
142
+ dependencies to ‹super›. ‹Super› includes a dependency on the version of
143
+ the inventory project that’s being used with this project, so you’ll never
144
+ have to list that yourself. The other three dependencies are all of
145
+ different kinds: development, runtime, and optional. A development
146
+ dependency is one that’s required while developing the project, for
147
+ example, a unit-testing framework, a documentation generator, and so on.
148
+ Runtime dependencies are requirements of the project to be able to run,
149
+ both during development and when installed. Finally, optional dependencies
150
+ are runtime dependencies that may or may not be required during execution.
151
+ The difference between runtime and optional is that the inventory won’t try
152
+ to automatically load an optional dependency, instead leaving that up to
153
+ you to do when and if it becomes necessary. By that logic, runtime
154
+ dependencies will be automatically loaded, which is a good reason for
155
+ having dependency information available at runtime.
156
+
157
+ The version numbers of dependencies also use semantic versioning, but note
158
+ that the patch atom is ignored unless the major atom is 0. You should
159
+ always only depend on the major and minor atoms.
160
+
161
+ As mentioned, runtime dependencies will be automatically loaded and the
162
+ feature they try to load is based on the name of the dependency with a
163
+ “-X.0” tacked on the end, where ‘X’ is the major version of the dependency.
164
+ Sometimes, this isn’t correct, in which case the :feature option may be
165
+ given to specify the name of the feature.
166
+
167
+ You may also override other parts of a dependency by passing in a block to
168
+ the dependency, much like we’re doing for inventories.
169
+
170
+ The rest of an inventory will list the various files included in the
171
+ project. This project only consists of one additional file to those that
172
+ an inventory automatically include (Rakefile, README, the main entry point,
173
+ and the version.rb file that defines the inventory itself), namely the
174
+ library file ‹bar.rb›. Library files will be loaded automatically when the
175
+ main entry point file loads the inventory. Library files that shouldn’t be
176
+ loaded may be listed under a different heading, namely “additional_libs”.
177
+ Both these sets of files will be used to generate a list of unit test files
178
+ automatically, so each library file will have a corresponding unit test
179
+ file in the inventory. We’ll discuss the different headings of an
180
+ inventory in more detail later on.
181
+
182
+ Now that we’ve written our inventory, let’s set it up so that it’s content
183
+ gets loaded when our main entry point gets loaded. We add the following
184
+ piece of code to ‹lib/foo-1.0.rb›:
185
+
186
+ module Foo
187
+ load File.expand_path('../foo-1.0/version.rb', __FILE__)
188
+ Version.load
189
+ end
190
+
191
+ That’s all there’s to it.
192
+
193
+ The inventory can also be used to great effect from a Rakefile using a
194
+ separate project called Inventory-Rake³. Using it’ll give us tasks for
195
+ cleaning up our project, compiling extensions, installing dependencies,
196
+ installing and uninstalling the project itself, and creating and pushing
197
+ distribution files to distribution points.
198
+
199
+ require 'inventory-rake-1.0'
200
+
201
+ load File.expand_path('../lib/foo-1.0/version.rb', __FILE__)
202
+
203
+ Inventory::Rake::Tasks.define Foo::Version, :gem => proc{ |_, s|
204
+ s.author = 'Your Name'
205
+ s.email = 'you@example.com'
206
+ s.homepage = 'https://example.com/'
207
+ }
208
+
209
+ Inventory::Rake::Tasks.unless_installing_dependencies do
210
+ require 'lookout-rake-3.0'
211
+ Lookout::Rake::Tasks::Test.new
212
+ end
213
+
214
+ It’s ‹Inventory::Rake::Tasks.define› that does the heavy lifting. It takes
215
+ our inventory and sets up the tasks mentioned above. We also do some
216
+ additional customization of the gem specification.
217
+
218
+ As we want to be able to use our Rakefile to install our dependencies for
219
+ us, the rest of the Rakefile is inside the conditional
220
+ #unless_installing_dependencies, which, as the name certainly implies,
221
+ executes its block unless the task being run is the one that installs our
222
+ dependencies. This becomes relevant when we set up Travis⁴ integration
223
+ next. The only conditional set-up we do in our Rakefile is creating our
224
+ test task via Lookout-Rake⁵, which also uses our inventory to find the unit
225
+ tests to run when executed.
226
+
227
+ Travis integration is straightforward. Simply put
228
+
229
+ before_script:
230
+ - gem install inventory-rake -v '~> VERSION' --no-rdoc --no-ri
231
+ - rake gem:deps:install
232
+
233
+ in the project’s ‹.travis.yml› file, replacing ‹VERSION› with the version
234
+ of Inventory-Rake that you require. This’ll make sure that Travis installs
235
+ all development, runtime, and optional dependencies that you’ve listed in
236
+ your inventory before running any tests.
237
+
238
+ You might also need to put
239
+
240
+ env:
241
+ - RUBYOPT=rubygems
242
+
243
+ in your ‹.travis.yml› file, depending on how things are set up.
244
+
245
+ ¹ Ruby project structure: http://guides.rubygems.org/make-your-own-gem/
246
+ ² Semantic versioning: http://semver.org/
247
+ ³ Inventory-Rake: http://disu.se/software/inventory-rake/
248
+ ⁴ Travis: http://travis-ci.org/
249
+ ⁵ Lookout-Rake: http://disu.se/software/lookout-rake/
250
+
251
+ § API
252
+
253
+ If the guide above doesn’t provide you with all the answers you seek, you
254
+ may refer to the API¹ for more answers.
255
+
256
+ ¹ See http://disu.se/software/inventory/api/inventory/
257
+
258
+ § Financing
259
+
260
+ Currently, most of my time is spent at my day job and in my rather busy
261
+ private life. Please motivate me to spend time on this piece of software
262
+ by donating some of your money to this project. Yeah, I realize that
263
+ requesting money to develop software is a bit, well, capitalistic of me.
264
+ But please realize that I live in a capitalistic society and I need money
265
+ to have other people give me the things that I need to continue living
266
+ under the rules of said society. So, if you feel that this piece of
267
+ software has helped you out enough to warrant a reward, please PayPal a
268
+ donation to now@disu.se¹. Thanks! Your support won’t go unnoticed!
269
+
270
+ ¹ Send a donation:
271
+ https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=now%40disu%2ese&item_name=Nikolai%20Weibull%20Software%20Services
272
+
273
+ § Reporting Bugs
274
+
275
+ Please report any bugs that you encounter to the {issue tracker}¹.
276
+
277
+ ¹ See https://github.com/now/inventory/issues
278
+
279
+ § Authors
280
+
281
+ Nikolai Weibull wrote the code, the tests, the documentation, and this
282
+ README.
62
283
  email: now@bitwi.se
63
284
  executables: []
64
285
  extensions: []
65
286
  extra_rdoc_files: []
66
287
  files:
67
- - lib/inventory/dependency.rb
68
- - lib/inventory/dependencies.rb
69
- - lib/inventory/dependencies/development.rb
70
- - lib/inventory/dependencies/optional.rb
71
- - lib/inventory/dependencies/runtime.rb
288
+ - lib/inventory-1.0/dependency.rb
289
+ - lib/inventory-1.0/dependencies.rb
290
+ - lib/inventory-1.0/dependencies/development.rb
291
+ - lib/inventory-1.0/dependencies/optional.rb
292
+ - lib/inventory-1.0/dependencies/runtime.rb
293
+ - lib/inventory-1.0/extension.rb
72
294
  - lib/inventory-1.0.rb
73
- - lib/inventory/version.rb
74
- - test/unit/inventory/dependency.rb
75
- - test/unit/inventory/dependencies.rb
76
- - test/unit/inventory/dependencies/development.rb
77
- - test/unit/inventory/dependencies/optional.rb
78
- - test/unit/inventory/dependencies/runtime.rb
295
+ - lib/inventory-1.0/version.rb
296
+ - test/unit/inventory-1.0/dependency.rb
297
+ - test/unit/inventory-1.0/dependencies.rb
298
+ - test/unit/inventory-1.0/dependencies/development.rb
299
+ - test/unit/inventory-1.0/dependencies/optional.rb
300
+ - test/unit/inventory-1.0/dependencies/runtime.rb
301
+ - test/unit/inventory-1.0/extension.rb
79
302
  - test/unit/inventory-1.0.rb
80
- - test/unit/inventory/version.rb
303
+ - test/unit/inventory-1.0/version.rb
81
304
  - README
82
305
  - Rakefile
83
306
  homepage: https://github.com/now/inventory
84
307
  licenses: []
308
+ metadata: {}
85
309
  post_install_message:
86
310
  rdoc_options: []
87
311
  require_paths:
88
312
  - lib
89
313
  required_ruby_version: !ruby/object:Gem::Requirement
90
- none: false
91
314
  requirements:
92
- - - ! '>='
315
+ - - '>='
93
316
  - !ruby/object:Gem::Version
94
317
  version: '0'
95
318
  required_rubygems_version: !ruby/object:Gem::Requirement
96
- none: false
97
319
  requirements:
98
- - - ! '>='
320
+ - - '>='
99
321
  - !ruby/object:Gem::Version
100
322
  version: '0'
101
323
  requirements: []
102
324
  rubyforge_project:
103
- rubygems_version: 1.8.11
325
+ rubygems_version: 2.0.0
104
326
  signing_key:
105
- specification_version: 3
106
- summary: Inventory allows you to create inventories of your Ruby projects.
327
+ specification_version: 4
328
+ summary: Inventory keeps track of the contents of your Ruby¹ projects.
107
329
  test_files: []