inventory-rake 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.
- checksums.yaml +7 -0
- data/README +119 -8
- data/Rakefile +8 -2
- data/lib/inventory-rake-1.0.rb +11 -0
- data/lib/inventory-rake-1.0/tasks.rb +63 -0
- data/lib/{inventory/rake → inventory-rake-1.0}/tasks/check.rb +0 -0
- data/lib/inventory-rake-1.0/tasks/clean.rb +64 -0
- data/lib/inventory-rake-1.0/tasks/compile.rb +99 -0
- data/lib/{inventory/rake → inventory-rake-1.0}/tasks/gem.rb +116 -3
- data/lib/inventory-rake-1.0/tasks/inventory.rb +53 -0
- data/lib/inventory-rake-1.0/version.rb +34 -0
- data/lib/inventory/rake-1.0.rb +2 -8
- data/test/unit/{inventory/rake-1.0.rb → inventory-rake-1.0.rb} +0 -0
- data/test/unit/{inventory/rake → inventory-rake-1.0}/tasks.rb +0 -0
- data/test/unit/{inventory/rake → inventory-rake-1.0}/tasks/check.rb +0 -0
- data/test/unit/{inventory/rake → inventory-rake-1.0}/tasks/clean.rb +0 -0
- data/test/unit/{inventory/rake/tasks/gem.rb → inventory-rake-1.0/tasks/compile.rb} +0 -0
- data/test/unit/{inventory/rake/tasks/inventory.rb → inventory-rake-1.0/tasks/gem.rb} +0 -0
- data/test/unit/{inventory/rake/version.rb → inventory-rake-1.0/tasks/inventory.rb} +0 -0
- data/test/unit/inventory-rake-1.0/version.rb +4 -0
- metadata +213 -45
- data/lib/inventory/rake/tasks.rb +0 -27
- data/lib/inventory/rake/tasks/clean.rb +0 -35
- data/lib/inventory/rake/tasks/inventory.rb +0 -27
- data/lib/inventory/rake/version.rb +0 -31
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 427df0935a6abb01a0c8d70412f8944533fa4371
|
4
|
+
data.tar.gz: 3baaf45912f54c59b4192ae5c2d79d8b58da9889
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: df48e44bec0ee151e62278e5027359d686dc860725755125704a031dfa446da90621566d2ab86d7179f1d052757dcd6a5e64883ec794f333b4e6d60ddf6e502c
|
7
|
+
data.tar.gz: 641d02cd7e50060226b28d54a9c8c6d4a190a399cca87f7272b75372a7da82e2c3a2447f6bd7ff8a16390044d00014d877bbb2f433876bd4e43246d3fb505880
|
data/README
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
Inventory-Rake
|
2
2
|
|
3
|
-
Inventory-Rake provides Rake tasks for your Inventory
|
4
|
-
cleaning
|
5
|
-
|
3
|
+
Inventory-Rake provides Rake¹ tasks for your Inventory². This includes tasks
|
4
|
+
for cleaning up our project, compiling extensions, installing dependencies,
|
5
|
+
installing and uninstalling the project itself, and creating and pushing
|
6
|
+
distribution files to distribution points.
|
6
7
|
|
7
|
-
¹
|
8
|
+
¹ See http://rake.rubyforge.org/
|
9
|
+
² See http://disu.se/software/inventory/
|
8
10
|
|
9
11
|
§ Installation
|
10
12
|
|
@@ -15,12 +17,121 @@
|
|
15
17
|
§ Usage
|
16
18
|
|
17
19
|
Include the following code in your ‹Rakefile›, where ‹Package› is the
|
18
|
-
top-level module of your
|
20
|
+
top-level module of your project:
|
19
21
|
|
20
|
-
require 'inventory
|
22
|
+
require 'inventory-rake-3.0'
|
23
|
+
|
24
|
+
load File.expand_path('../lib/package/version.rb', __FILE__)
|
21
25
|
|
22
26
|
Inventory::Rake::Tasks.define Package::Version, :gem => proc{ |_, s|
|
23
27
|
s.author = 'Your Name'
|
24
|
-
s.email = '
|
25
|
-
s.homepage = '
|
28
|
+
s.email = 'you@example.com'
|
29
|
+
s.homepage = 'http://example.com/'
|
26
30
|
}
|
31
|
+
|
32
|
+
Inventory::Rake::Tasks.unless_installing_dependencies do
|
33
|
+
# Any additional tasks that your project’s dependencies provide
|
34
|
+
end
|
35
|
+
|
36
|
+
‹Inventory::Rake::Tasks.define› does the heavy lifting. It takes our
|
37
|
+
inventory and sets up the tasks mentioned above. We also do some
|
38
|
+
additional customization of the gem specification.
|
39
|
+
|
40
|
+
As we want to be able to use our Rakefile to install our dependencies for
|
41
|
+
us, the rest of the Rakefile is inside the conditional
|
42
|
+
#unless_installing_dependencies, which, as the name certainly implies,
|
43
|
+
executes its block unless the task being run is the one that installs our
|
44
|
+
dependencies. This becomes relevant if we want to, for example, set up
|
45
|
+
Travis¹ integration. To do so, simply add
|
46
|
+
|
47
|
+
before_script:
|
48
|
+
- gem install inventory-rake -v '~> VERSION' --no-rdoc --no-ri
|
49
|
+
- rake gem:deps:install
|
50
|
+
|
51
|
+
to your ‹.travis.yml› file. This’ll make sure that Travis installs all
|
52
|
+
development, runtime, and optional dependencies that you’ve listed in your
|
53
|
+
inventory before running any tests.
|
54
|
+
|
55
|
+
There’s more information in the {API documentation}² that you’ll likely
|
56
|
+
want to read up on if anything is unclear.
|
57
|
+
|
58
|
+
¹ See http://travis-ci.org/
|
59
|
+
² See http://disu.se/software/inventory/api/inventory-rake/
|
60
|
+
|
61
|
+
§ Tasks
|
62
|
+
|
63
|
+
The tasks that are created if you use Inventory-Rake are:
|
64
|
+
|
65
|
+
= check. = Check that the package meets its expectations.
|
66
|
+
= mostlyclean. = Delete targets built by rake that are ofter rebuilt.
|
67
|
+
= clean. = Delete targets built by rake; depends on mostlyclean.
|
68
|
+
= distclean. = Delete all files not meant for distribution; depends on clean.
|
69
|
+
= compile. = Compile all extensions; depends on each compile:name.
|
70
|
+
= compile:name. = Compile extension /name/; depends on
|
71
|
+
lib/path/so file.
|
72
|
+
= lib/path/so. = Installed dynamic library of extension /name/ inside
|
73
|
+
inventory path; depends on ext/name/so.
|
74
|
+
= ext/name/so. = Dynamic library of extension /name/; depends on
|
75
|
+
ext/name/Makefile and the source files of the extension.
|
76
|
+
= ext/name/Makefile. = Makefile for extension /name/; depends on inventory
|
77
|
+
path, ext/name/extconf.rb file, and ext/name/depend file.
|
78
|
+
= clean:name. = Clean files built for extension /name/; depended upon by
|
79
|
+
clean.
|
80
|
+
= spec. = Create specifications; depends on gem:spec.
|
81
|
+
= gem:spec. = Create gem specification; depends on gemspec.
|
82
|
+
= gemspec (file). = Gem specification file; depends on Rakefile, README, and
|
83
|
+
inventory path.
|
84
|
+
= dist. = Create files for distribution; depends on gem:dist.
|
85
|
+
= gem:dist. = Create gem for distribution; depends on inventory:check and gem
|
86
|
+
file.
|
87
|
+
= inventory:check. = Check that the inventory is correct by looking for files
|
88
|
+
not listed in the inventory that match the pattern and for files listed
|
89
|
+
in the inventory that don’t exist; depends on distclean.
|
90
|
+
= gem (file). = Gem file; depends on files included in gem.
|
91
|
+
= dist:check. = Check files before distribution; depends on dist and
|
92
|
+
gem:dist:check.
|
93
|
+
= gem:dist:check. = Check gem before distribution; depends on gem:dist.
|
94
|
+
= deps:install. = Install dependencies on the local system; depends on
|
95
|
+
gem:deps:install.
|
96
|
+
= gem:deps:install. = Install dependencies in ruby gem directory.
|
97
|
+
= deps:install:user. = Install dependencies for the current user; depends on
|
98
|
+
gem:deps:install:user.
|
99
|
+
= gem:deps:install:user. = Install dependencies in the user gem directory.
|
100
|
+
= install. = Install distribution files on the local system; depends on
|
101
|
+
gem:install.
|
102
|
+
= gem:install. = Install gem in ruby gem directory; depends on gem:dist.
|
103
|
+
= install:user. = Install distribution files for the current user; depends on
|
104
|
+
gem:install:user.
|
105
|
+
= gem:install:user. = Install gem in the user gem directory.
|
106
|
+
= uninstall. = Delete all files installed on the local system.
|
107
|
+
= gem:uninstall. = Uninstall gem from ruby gem directory.
|
108
|
+
= uninstall:user. = Delete all files installed for current user.
|
109
|
+
= gem:uninstall:user. = Uninstall gem from ruby gem directory.
|
110
|
+
= push. = Push distribution files to distribution hubs.
|
111
|
+
= gem:push. = Push gem to rubygems.org.
|
112
|
+
|
113
|
+
§ Financing
|
114
|
+
|
115
|
+
Currently, most of my time is spent at my day job and in my rather busy
|
116
|
+
private life. Please motivate me to spend time on this piece of software
|
117
|
+
by donating some of your money to this project. Yeah, I realize that
|
118
|
+
requesting money to develop software is a bit, well, capitalistic of me.
|
119
|
+
But please realize that I live in a capitalistic society and I need money
|
120
|
+
to have other people give me the things that I need to continue living
|
121
|
+
under the rules of said society. So, if you feel that this piece of
|
122
|
+
software has helped you out enough to warrant a reward, please PayPal a
|
123
|
+
donation to now@disu.se¹. Thanks! Your support won’t go unnoticed!
|
124
|
+
|
125
|
+
¹ Send a donation:
|
126
|
+
https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=now%40disu%2ese&item_name=Nikolai%20Weibull%20Software%20Services
|
127
|
+
|
128
|
+
§ Reporting Bugs
|
129
|
+
|
130
|
+
Please report any bugs that you encounter to the {issue tracker}¹.
|
131
|
+
|
132
|
+
¹ See https://github.com/now/inventory-rake/issues
|
133
|
+
|
134
|
+
§ Authors
|
135
|
+
|
136
|
+
Nikolai Weibull wrote the code, the tests, the manual pages, and this
|
137
|
+
README.
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
$:.unshift File.expand_path('../lib', __FILE__)
|
4
|
-
require 'inventory
|
4
|
+
require 'inventory-rake-1.0'
|
5
5
|
|
6
6
|
Inventory::Rake::Tasks.define Inventory::Rake::Version, :gem => proc{ |_, s|
|
7
7
|
s.author = 'Nikolai Weibull'
|
@@ -10,6 +10,12 @@ Inventory::Rake::Tasks.define Inventory::Rake::Version, :gem => proc{ |_, s|
|
|
10
10
|
}
|
11
11
|
|
12
12
|
Inventory::Rake::Tasks.unless_installing_dependencies do
|
13
|
-
require 'lookout
|
13
|
+
require 'lookout-rake-3.0'
|
14
14
|
Lookout::Rake::Tasks::Test.new
|
15
|
+
|
16
|
+
require 'inventory-rake-tasks-yard-1.0'
|
17
|
+
Inventory::Rake::Tasks::YARD.new do |t|
|
18
|
+
t.options += %w'--plugin yard-heuristics-1.0'
|
19
|
+
t.globals[:source_code_url] = 'https://github.com/now/%s/blob/v%s/%%s#L%%d' % [t.inventory.package, t.inventory]
|
20
|
+
end
|
15
21
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Namespace for [Inventory](http://disu.se/software/inventory/). The bulk of
|
4
|
+
# the library is in {Rake::Tasks}.
|
5
|
+
class Inventory; end
|
6
|
+
|
7
|
+
# Namespace for [Rake](http://rake.rubyforge.org/) integration of Inventory.
|
8
|
+
module Inventory::Rake
|
9
|
+
load File.expand_path('../inventory-rake-1.0/version.rb', __FILE__)
|
10
|
+
Version.load
|
11
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Namespace for Rake tasks using an Inventory.
|
4
|
+
module Inventory::Rake::Tasks
|
5
|
+
@mostlycleanfiles, @cleanfiles, @distcleanfiles = [], [], []
|
6
|
+
|
7
|
+
class << self
|
8
|
+
# @param [Inventory] value
|
9
|
+
# @return [Inventory] The default inventory to use for tasks
|
10
|
+
attr_accessor :inventory
|
11
|
+
|
12
|
+
# @return [Array<String>] The files to clean when running the “mostlyclean”
|
13
|
+
# task
|
14
|
+
attr_reader :mostlycleanfiles
|
15
|
+
|
16
|
+
# @return [Array<String>] The files to clean when running the “clean” task
|
17
|
+
attr_reader :cleanfiles
|
18
|
+
|
19
|
+
# @return [Array<String>] The files to clean when running the “distclean”
|
20
|
+
# task
|
21
|
+
attr_reader :distcleanfiles
|
22
|
+
|
23
|
+
# Sets the default {.inventory} to INVENTORY, then defines {Clean},
|
24
|
+
# {Compile}, {Inventory}, and {Gem} tasks.
|
25
|
+
#
|
26
|
+
# A task named “check” will already have been created. This task is meant
|
27
|
+
# to depend on tasks that check the package before distribution.
|
28
|
+
#
|
29
|
+
# @param [Inventory] inventory
|
30
|
+
# @param [Hash] options
|
31
|
+
# @option options [#to_proc] :gem (proc{}) Block to pass to
|
32
|
+
# {Gem#initialize}
|
33
|
+
# @return [self]
|
34
|
+
def define(inventory, options = {})
|
35
|
+
self.inventory = inventory
|
36
|
+
Clean.define
|
37
|
+
Compile.new :inventory => inventory
|
38
|
+
Inventory.new :inventory => inventory
|
39
|
+
Gem.new(:inventory => inventory, &options.fetch(:gem, proc{}))
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
# Yields if the top-level tasks that Rake’s running don’t include any of
|
44
|
+
#
|
45
|
+
# * deps:install
|
46
|
+
# * deps:install:user
|
47
|
+
# * gem:deps:install
|
48
|
+
# * gem:deps:install:user
|
49
|
+
#
|
50
|
+
# that is, Rake’s not being run to install the inventory’s dependencies.
|
51
|
+
#
|
52
|
+
# @yield [?]
|
53
|
+
# @return [self]
|
54
|
+
def unless_installing_dependencies
|
55
|
+
yield if (%w'deps:install
|
56
|
+
deps:install:user
|
57
|
+
gem:deps:install
|
58
|
+
gem:deps:install:user' &
|
59
|
+
Rake.application.top_level_tasks).empty?
|
60
|
+
self
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
File without changes
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Tasks for cleaning up a project directory.
|
4
|
+
class Inventory::Rake::Tasks::Clean
|
5
|
+
include Rake::DSL
|
6
|
+
|
7
|
+
class << self
|
8
|
+
include Rake::DSL
|
9
|
+
|
10
|
+
def define
|
11
|
+
# Defines the following tasks:
|
12
|
+
#
|
13
|
+
# <dl>
|
14
|
+
# <dt>mostlyclean</dt>
|
15
|
+
# <dd>Delete targets built by rake that are ofter rebuilt.</dd>
|
16
|
+
#
|
17
|
+
# <dt>clean</dt>
|
18
|
+
# <dd>Delete targets builty by rake; depends on mostlyclean.</dd>
|
19
|
+
#
|
20
|
+
# <dt>distclean</dt>
|
21
|
+
# <dd>Delete all files not meant for distribution; depends on
|
22
|
+
# clean.</dd>
|
23
|
+
# </dl>
|
24
|
+
desc 'Delete targets built by rake that are often rebuilt'
|
25
|
+
new :mostlyclean, Inventory::Rake::Tasks.mostlycleanfiles
|
26
|
+
|
27
|
+
desc 'Delete targets built by rake'
|
28
|
+
new :clean, Inventory::Rake::Tasks.cleanfiles
|
29
|
+
task :clean => :mostlyclean
|
30
|
+
|
31
|
+
desc 'Delete all files not meant for distribution'
|
32
|
+
new :distclean, Inventory::Rake::Tasks.distcleanfiles
|
33
|
+
task :distclean => :clean
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Sets up a cleaning task {#name} that’ll delete {#files}, optionally yields
|
38
|
+
# the task for further customization, then {#define}s the task.
|
39
|
+
#
|
40
|
+
# @param [Symbol] name
|
41
|
+
# @param [Array<String>] files
|
42
|
+
# @yield [?]
|
43
|
+
# @yieldparam [self] task
|
44
|
+
def initialize(name, files = [])
|
45
|
+
@name, @files = name, files
|
46
|
+
yield self if block_given?
|
47
|
+
define
|
48
|
+
end
|
49
|
+
|
50
|
+
# Defines the task {#name} that’ll delete {#files}.
|
51
|
+
def define
|
52
|
+
task name do
|
53
|
+
rm files, :force => true
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# @param [Symbol] value
|
58
|
+
# @return [Symbol] The name of the task
|
59
|
+
attr_accessor :name
|
60
|
+
|
61
|
+
# @param [Array<String>] value
|
62
|
+
# @return [Array<String>] The files to delete
|
63
|
+
attr_accessor :files
|
64
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Defines tasks for compiling and cleaning extensions.
|
4
|
+
class Inventory::Rake::Tasks::Compile
|
5
|
+
include Rake::DSL
|
6
|
+
|
7
|
+
# Sets up tasks based on INVENTORY, optionally yields the task object for
|
8
|
+
# further customization, then {#define}s the tasks.
|
9
|
+
#
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [Inventory] :inventory (Inventory::Rake::Tasks.inventory)
|
12
|
+
# The inventory to use
|
13
|
+
# @yield [?]
|
14
|
+
# @yieldparam [self] task
|
15
|
+
def initialize(options = {})
|
16
|
+
self.inventory = options.fetch(:inventory, Inventory::Rake::Tasks.inventory)
|
17
|
+
yield self if block_given?
|
18
|
+
define
|
19
|
+
end
|
20
|
+
|
21
|
+
# Defines the following task:
|
22
|
+
#
|
23
|
+
# <dl>
|
24
|
+
# <dt>compile</dt>
|
25
|
+
# <dd>Compile all extensions; depends on each compile:<em>name</em>.</dd>
|
26
|
+
# </dl>
|
27
|
+
#
|
28
|
+
# Then, for each extension in the inventory, define the following tasks:
|
29
|
+
#
|
30
|
+
# <dl>
|
31
|
+
# <dt>compile:<em>name</em></dt>
|
32
|
+
# <dd>Compile extension <em>name</em>; depends on
|
33
|
+
# lib/<em>path</em>/<em>so</em> file.</dd>
|
34
|
+
#
|
35
|
+
# <dt>lib/<em>path</em>/<em>so</em></dt>
|
36
|
+
# <dd>Installed dynamic library of extension <em>name</em> inside inventory
|
37
|
+
# path; depends on ext/<em>name</em>/<em>so</em>.</dd>
|
38
|
+
#
|
39
|
+
# <dt>ext/<em>name</em>/<em>so</em></dt>
|
40
|
+
# <dd>Dynamic library of extension <em>name</em>; depends on
|
41
|
+
# ext/<em>name</em>/Makefile and the source files of the extension.</dd>
|
42
|
+
#
|
43
|
+
# <dt>ext/<em>name</em>/Makefile</dt>
|
44
|
+
# <dd>Makefile for extension <em>name</em>; depends on inventory path,
|
45
|
+
# ext/<em>name</em>/extconf.rb file, and ext/<em>name</em>/depend file.</dd>
|
46
|
+
#
|
47
|
+
# <dt>clean:<em>name</em></dt>
|
48
|
+
# <dd>Clean files built for extension <em>name</em>; depended upon by
|
49
|
+
# clean.</dd>
|
50
|
+
# </dl>
|
51
|
+
#
|
52
|
+
# Finally, if defined, the test task is set to depend on the compile task.
|
53
|
+
def define
|
54
|
+
desc 'Compile extensions' unless Rake::Task.task_defined? :compile
|
55
|
+
task :compile
|
56
|
+
|
57
|
+
@inventory.extensions.each do |extension|
|
58
|
+
name = :"compile:#{extension}"
|
59
|
+
makefile = '%s/Makefile' % extension.directory
|
60
|
+
ext_so = '%s/%s.%s' % [extension.directory,
|
61
|
+
extension.name.delete('-'),
|
62
|
+
RbConfig::CONFIG['DLEXT']]
|
63
|
+
lib_so = 'lib/%s/%s' % [@inventory.package_path, File.basename(ext_so)]
|
64
|
+
|
65
|
+
task :compile => name
|
66
|
+
|
67
|
+
task name => lib_so
|
68
|
+
|
69
|
+
file lib_so => ext_so do
|
70
|
+
install ext_so, lib_so
|
71
|
+
end
|
72
|
+
|
73
|
+
file ext_so => [makefile] + extension.source_files do
|
74
|
+
sh 'make -C %s' % extension.directory
|
75
|
+
end
|
76
|
+
|
77
|
+
file makefile => [@inventory.path, extension.extconf, extension.depend] do
|
78
|
+
Dir.chdir extension.directory do
|
79
|
+
ENV['CFLAGS'] = '-Werror' unless ENV['CFLAGS']
|
80
|
+
ruby File.basename(extension.extconf)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
clean_name = :"clean:#{extension}"
|
85
|
+
desc 'Clean files built for extension %s' % extension
|
86
|
+
task clean_name do
|
87
|
+
sh 'make -C %s %s' % [extension.directory, rule]
|
88
|
+
end
|
89
|
+
|
90
|
+
task :clean => clean_name
|
91
|
+
end
|
92
|
+
|
93
|
+
task :test => :compile if Rake::Task.task_defined? :test
|
94
|
+
end
|
95
|
+
|
96
|
+
# @param [Inventory] value
|
97
|
+
# @return [Inventory] The inventory to use: VALUE
|
98
|
+
attr_writer :inventory
|
99
|
+
end
|
@@ -1,8 +1,30 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
+
# Defines [RubyGems](http://rubygems.org/)-related tasks. This includes tasks
|
4
|
+
# for generating a gem specification, creating a gem file, checking the gem
|
5
|
+
# file before distribution, installing gem dependencies, installing and
|
6
|
+
# uninstalling the gem locally, and pushing the gem to a distribution point.
|
3
7
|
class Inventory::Rake::Tasks::Gem
|
4
8
|
include Rake::DSL
|
5
9
|
|
10
|
+
# Sets up tasks based on INVENTORY and SPECIFICATION, optionally yields the
|
11
|
+
# task object and the gem specification for further customization, then
|
12
|
+
# {#define}s the tasks.
|
13
|
+
#
|
14
|
+
# The default for SPECIFICATION is to use the name, version, and files of the
|
15
|
+
# inventory, use all of `README` as the description, set the summary to the
|
16
|
+
# first sentence of the description, set the require paths to “lib”, add each
|
17
|
+
# extension of the inventory’s extconf to the extensions, and finally add
|
18
|
+
# inventory’s dependencies.
|
19
|
+
#
|
20
|
+
# @param [Hash] options
|
21
|
+
# @option options [Inventory] :inventory (Inventory::Rake::Tasks.inventory)
|
22
|
+
# The inventory to use
|
23
|
+
# @option options [Gem::Specification] :specification The specification to
|
24
|
+
# use
|
25
|
+
# @yield [?]
|
26
|
+
# @yieldparam [self] task
|
27
|
+
# @yieldparam [Gem::Specification] specification
|
6
28
|
def initialize(options = {})
|
7
29
|
self.inventory = options.fetch(:inventory, Inventory::Rake::Tasks.inventory)
|
8
30
|
self.specification = options.fetch(:specification,
|
@@ -19,12 +41,94 @@ class Inventory::Rake::Tasks::Gem
|
|
19
41
|
|
20
42
|
s.require_paths = @inventory.lib_directories
|
21
43
|
|
44
|
+
s.extensions = @inventory.extensions.map(&:extconf)
|
45
|
+
|
22
46
|
@inventory.dependencies.add_to_gem_specification s
|
23
47
|
})
|
24
48
|
yield self, @specification if block_given?
|
25
49
|
define
|
26
50
|
end
|
27
51
|
|
52
|
+
# Defines the following tasks:
|
53
|
+
#
|
54
|
+
# <dl>
|
55
|
+
# <dt>spec</dt>
|
56
|
+
# <dd>Create specifications; depends on gem:spec.</dd>
|
57
|
+
#
|
58
|
+
# <dt>gem:spec</dt>
|
59
|
+
# <dd>Create gem specification; depends on <em>gemspec</em>.</dd>
|
60
|
+
#
|
61
|
+
# <dt>gemspec (file)</dt>
|
62
|
+
# <dd>Gem specification file; depends on Rakefile, README, and inventory
|
63
|
+
# path.</dd>
|
64
|
+
#
|
65
|
+
# <dt>dist</dt>
|
66
|
+
# <dd>Create files for distribution; depends on gem:dist.</dd>
|
67
|
+
#
|
68
|
+
# <dt>gem:dist</dt>
|
69
|
+
# <dd>Create gem for distribution; depends on inventory:check and
|
70
|
+
# <em>gem</em> file.</dd>
|
71
|
+
#
|
72
|
+
# <dt>gem (file)</dt>
|
73
|
+
# <dd>Gem file; depends on files included in gem.</dd>
|
74
|
+
#
|
75
|
+
# <dt>dist:check</dt>
|
76
|
+
# <dd>Check files before distribution; depends on dist and
|
77
|
+
# gem:dist:check.</dd>
|
78
|
+
#
|
79
|
+
# <dt>gem:dist:check</dt>
|
80
|
+
# <dd>Check gem before distribution; depends on gem:dist.</dd>
|
81
|
+
#
|
82
|
+
# <dt>deps:install</dt>
|
83
|
+
# <dd>Install dependencies on the local system; depends on
|
84
|
+
# gem:deps:install.</dd>
|
85
|
+
#
|
86
|
+
# <dt>gem:deps:install</dt>
|
87
|
+
# <dd>Install dependencies in ruby gem directory.</dd>
|
88
|
+
#
|
89
|
+
# <dt>deps:install:user</dt>
|
90
|
+
# <dd>Install dependencies for the current user; depends on
|
91
|
+
# gem:deps:install:user.</dd>
|
92
|
+
#
|
93
|
+
# <dt>gem:deps:install:user</dt>
|
94
|
+
# <dd>Install dependencies in the user gem directory.</dd>
|
95
|
+
#
|
96
|
+
# <dt>install</dt>
|
97
|
+
# <dd>Install distribution files on the local system; depends on
|
98
|
+
# gem:install.</dd>
|
99
|
+
#
|
100
|
+
# <dt>gem:install</dt>
|
101
|
+
# <dd>Install <em>gem</em> in ruby gem directory; depends on gem:dist.</dd>
|
102
|
+
#
|
103
|
+
# <dt>install:user</dt>
|
104
|
+
# <dd>Install distribution files for the current user; depends on
|
105
|
+
# gem:install:user.</dd>
|
106
|
+
#
|
107
|
+
# <dt>gem:install:user</dt>
|
108
|
+
# <dd>Install <em>gem</em> in the user gem directory.</dd>
|
109
|
+
#
|
110
|
+
# <dt>uninstall</dt>
|
111
|
+
# <dd>Delete all files installed on the local system.</dd>
|
112
|
+
#
|
113
|
+
# <dt>gem:uninstall</dt>
|
114
|
+
# <dd>Uninstall <em>gem</em> from ruby gem directory.</dd>
|
115
|
+
#
|
116
|
+
# <dt>uninstall:user</dt>
|
117
|
+
# <dd>Delete all files installed for current user.</dd>
|
118
|
+
#
|
119
|
+
# <dt>gem:uninstall:user</dt>
|
120
|
+
# <dd>Uninstall <em>gem</em> from ruby gem directory.</dd>
|
121
|
+
#
|
122
|
+
# <dt>push</dt>
|
123
|
+
# <dd>Push distribution files to distribution hubs.</dd>
|
124
|
+
#
|
125
|
+
# <dt>gem:push</dt>
|
126
|
+
# <dd>Push <em>gem</em> to rubygems.org.</dd>
|
127
|
+
# </dl>
|
128
|
+
#
|
129
|
+
# The gemspec will be added to {Inventory::Rake::Tasks.cleanfiles}.
|
130
|
+
#
|
131
|
+
# @return [self]
|
28
132
|
def define
|
29
133
|
desc 'Create specifications' unless Rake::Task.task_defined? :spec
|
30
134
|
task :spec => :'gem:spec'
|
@@ -54,8 +158,9 @@ class Inventory::Rake::Tasks::Gem
|
|
54
158
|
task :'gem:dist' => [:'inventory:check', @specification.file_name]
|
55
159
|
file @specification.file_name => @specification.files do
|
56
160
|
require 'rubygems' unless defined? Gem
|
161
|
+
require 'rubygems/package' unless defined? Gem::Package
|
57
162
|
rake_output_message 'gem build %s' % gemspec if verbose
|
58
|
-
Gem::
|
163
|
+
Gem::Package.build @specification
|
59
164
|
end
|
60
165
|
|
61
166
|
desc 'Check files before distribution' unless
|
@@ -96,7 +201,7 @@ class Inventory::Rake::Tasks::Gem
|
|
96
201
|
Rake::Task.task_defined? :'deps:install:user'
|
97
202
|
task :'deps:install:user' => :'gem:deps:install:user'
|
98
203
|
|
99
|
-
desc 'Install dependencies
|
204
|
+
desc 'Install dependencies in the current user’s ruby gem directory'
|
100
205
|
task :'gem:deps:install:user' do
|
101
206
|
require 'rubygems' unless defined? Gem
|
102
207
|
require 'rubygems/dependency_installer' unless defined? Gem::DependencyInstaller
|
@@ -185,7 +290,15 @@ class Inventory::Rake::Tasks::Gem
|
|
185
290
|
task :'gem:push' => :'gem:dist:check' do
|
186
291
|
sh 'gem push -%s-verbose %s' % [verbose ? '' : '-no', @specification.file_name]
|
187
292
|
end
|
293
|
+
|
294
|
+
self
|
188
295
|
end
|
189
296
|
|
190
|
-
|
297
|
+
# @param [Inventory] value
|
298
|
+
# @return [Inventory] The inventory to use: VALUE
|
299
|
+
attr_writer :inventory
|
300
|
+
|
301
|
+
# @param [Gem::Specification] value
|
302
|
+
# @return [Gem::Specification] The specification to use: VALUE
|
303
|
+
attr_writer :specification
|
191
304
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# Tasks related to the inventory.
|
4
|
+
class Inventory::Rake::Tasks::Inventory
|
5
|
+
include Rake::DSL
|
6
|
+
|
7
|
+
# Sets up tasks based on INVENTORY, optionally yields the task object for
|
8
|
+
# further customization, then {#define}s the tasks.
|
9
|
+
#
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [Inventory] :inventory (Inventory::Rake::Tasks.inventory)
|
12
|
+
# The inventory to use
|
13
|
+
# @option options [String] :pattern
|
14
|
+
# ('{ext/**/*.{[ch],rb},{lib/test}/**/*.rb}') The pattern to use when
|
15
|
+
# looking for files not listed in inventory
|
16
|
+
# @yield [?]
|
17
|
+
# @yieldparam [self] task
|
18
|
+
def initialize(options = {})
|
19
|
+
self.inventory = options.fetch(:inventory, Inventory::Rake::Tasks.inventory)
|
20
|
+
self.pattern = options.fetch(:pattern, '{ext/**/*.{[ch],rb},{lib,test}/**/*.rb}')
|
21
|
+
yield self if block_given?
|
22
|
+
define
|
23
|
+
end
|
24
|
+
|
25
|
+
# Defines the following task:
|
26
|
+
#
|
27
|
+
# <dl>
|
28
|
+
# <dt>inventory:check</dt>
|
29
|
+
# <dd>Check that the inventory is correct by looking for files not listed
|
30
|
+
# in the inventory that match the pattern and for files listed in the
|
31
|
+
# inventory that don’t exist; depends on distclean.</dd>
|
32
|
+
# </dl>
|
33
|
+
def define
|
34
|
+
desc 'Check that the inventory is correct'
|
35
|
+
task :'inventory:check' => :distclean do
|
36
|
+
diff = ((Dir[@pattern] -
|
37
|
+
@inventory.extensions.map(&:source_files) -
|
38
|
+
@inventory.lib_files -
|
39
|
+
@inventory.unit_test_files).map{ |e| '%s: file not listed in inventory' % e } +
|
40
|
+
@inventory.files.reject{ |e| File.exist? e }.map{ |e| '%s: file listed in inventory does not exist' % e })
|
41
|
+
fail diff.join("\n") unless diff.empty?
|
42
|
+
# TODO: puts 'inventory checks out' if verbose
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# @param [Inventory] value
|
47
|
+
# @return [Inventory] The inventory to use: VALUE
|
48
|
+
attr_writer :inventory
|
49
|
+
|
50
|
+
# @param [String] value
|
51
|
+
# @return [String] The pattern to use: VALUE
|
52
|
+
attr_writer :pattern
|
53
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'inventory-1.0'
|
4
|
+
|
5
|
+
module Inventory::Rake
|
6
|
+
Version = Inventory.new(1, 4, 0){
|
7
|
+
def dependencies
|
8
|
+
super + Inventory::Dependencies.new{
|
9
|
+
development 'lookout', 3, 0, 0
|
10
|
+
development 'lookout-rake', 3, 0, 0
|
11
|
+
development 'yard', 0, 8, 0
|
12
|
+
development 'yard-heuristics', 1, 1, 0
|
13
|
+
runtime 'rake', 0, 9, 2, :feature => 'rake'
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def package_libs
|
18
|
+
%w[tasks.rb
|
19
|
+
tasks/check.rb
|
20
|
+
tasks/clean.rb
|
21
|
+
tasks/compile.rb
|
22
|
+
tasks/gem.rb
|
23
|
+
tasks/inventory.rb]
|
24
|
+
end
|
25
|
+
|
26
|
+
def additional_libs
|
27
|
+
super + %w[inventory/rake-1.0.rb]
|
28
|
+
end
|
29
|
+
|
30
|
+
def unit_tests
|
31
|
+
super - %w[inventory/rake-1.0.rb]
|
32
|
+
end
|
33
|
+
}
|
34
|
+
end
|
data/lib/inventory/rake-1.0.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# Namespace for Rake integration of Inventory.
|
7
|
-
module Inventory::Rake
|
8
|
-
load File.expand_path('../rake/version.rb', __FILE__)
|
9
|
-
Version.load
|
10
|
-
end
|
3
|
+
warn "requiring 'inventory/rake-1.0' is deprecated; require 'inventory-rake-1.0' instead"
|
4
|
+
require 'inventory-rake-1.0'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,89 +1,259 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inventory-rake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
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:
|
11
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: inventory
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '1.
|
19
|
+
version: '1.4'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
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:
|
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:
|
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:
|
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:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: yard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.8.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.8.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard-heuristics
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.1'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.1'
|
47
83
|
- !ruby/object:Gem::Dependency
|
48
84
|
name: rake
|
49
|
-
requirement:
|
50
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
51
86
|
requirements:
|
52
87
|
- - ~>
|
53
88
|
- !ruby/object:Gem::Version
|
54
89
|
version: 0.9.2
|
55
90
|
type: :runtime
|
56
91
|
prerelease: false
|
57
|
-
version_requirements:
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.9.2
|
97
|
+
description: |2
|
98
|
+
Inventory-Rake
|
99
|
+
|
100
|
+
Inventory-Rake provides Rake¹ tasks for your Inventory². This includes tasks
|
101
|
+
for cleaning up our project, compiling extensions, installing dependencies,
|
102
|
+
installing and uninstalling the project itself, and creating and pushing
|
103
|
+
distribution files to distribution points.
|
104
|
+
|
105
|
+
¹ See http://rake.rubyforge.org/
|
106
|
+
² See http://disu.se/software/inventory/
|
107
|
+
|
108
|
+
§ Installation
|
109
|
+
|
110
|
+
Install Inventory-Rake with
|
111
|
+
|
112
|
+
% gem install inventory-rake
|
113
|
+
|
114
|
+
§ Usage
|
115
|
+
|
116
|
+
Include the following code in your ‹Rakefile›, where ‹Package› is the
|
117
|
+
top-level module of your project:
|
118
|
+
|
119
|
+
require 'inventory-rake-3.0'
|
120
|
+
|
121
|
+
load File.expand_path('../lib/package/version.rb', __FILE__)
|
122
|
+
|
123
|
+
Inventory::Rake::Tasks.define Package::Version, :gem => proc{ |_, s|
|
124
|
+
s.author = 'Your Name'
|
125
|
+
s.email = 'you@example.com'
|
126
|
+
s.homepage = 'http://example.com/'
|
127
|
+
}
|
128
|
+
|
129
|
+
Inventory::Rake::Tasks.unless_installing_dependencies do
|
130
|
+
# Any additional tasks that your project’s dependencies provide
|
131
|
+
end
|
132
|
+
|
133
|
+
‹Inventory::Rake::Tasks.define› does the heavy lifting. It takes our
|
134
|
+
inventory and sets up the tasks mentioned above. We also do some
|
135
|
+
additional customization of the gem specification.
|
136
|
+
|
137
|
+
As we want to be able to use our Rakefile to install our dependencies for
|
138
|
+
us, the rest of the Rakefile is inside the conditional
|
139
|
+
#unless_installing_dependencies, which, as the name certainly implies,
|
140
|
+
executes its block unless the task being run is the one that installs our
|
141
|
+
dependencies. This becomes relevant if we want to, for example, set up
|
142
|
+
Travis¹ integration. To do so, simply add
|
143
|
+
|
144
|
+
before_script:
|
145
|
+
- gem install inventory-rake -v '~> VERSION' --no-rdoc --no-ri
|
146
|
+
- rake gem:deps:install
|
147
|
+
|
148
|
+
to your ‹.travis.yml› file. This’ll make sure that Travis installs all
|
149
|
+
development, runtime, and optional dependencies that you’ve listed in your
|
150
|
+
inventory before running any tests.
|
151
|
+
|
152
|
+
There’s more information in the {API documentation}² that you’ll likely
|
153
|
+
want to read up on if anything is unclear.
|
154
|
+
|
155
|
+
¹ See http://travis-ci.org/
|
156
|
+
² See http://disu.se/software/inventory/api/inventory-rake/
|
157
|
+
|
158
|
+
§ Tasks
|
159
|
+
|
160
|
+
The tasks that are created if you use Inventory-Rake are:
|
161
|
+
|
162
|
+
= check. = Check that the package meets its expectations.
|
163
|
+
= mostlyclean. = Delete targets built by rake that are ofter rebuilt.
|
164
|
+
= clean. = Delete targets built by rake; depends on mostlyclean.
|
165
|
+
= distclean. = Delete all files not meant for distribution; depends on clean.
|
166
|
+
= compile. = Compile all extensions; depends on each compile:name.
|
167
|
+
= compile:name. = Compile extension /name/; depends on
|
168
|
+
lib/path/so file.
|
169
|
+
= lib/path/so. = Installed dynamic library of extension /name/ inside
|
170
|
+
inventory path; depends on ext/name/so.
|
171
|
+
= ext/name/so. = Dynamic library of extension /name/; depends on
|
172
|
+
ext/name/Makefile and the source files of the extension.
|
173
|
+
= ext/name/Makefile. = Makefile for extension /name/; depends on inventory
|
174
|
+
path, ext/name/extconf.rb file, and ext/name/depend file.
|
175
|
+
= clean:name. = Clean files built for extension /name/; depended upon by
|
176
|
+
clean.
|
177
|
+
= spec. = Create specifications; depends on gem:spec.
|
178
|
+
= gem:spec. = Create gem specification; depends on gemspec.
|
179
|
+
= gemspec (file). = Gem specification file; depends on Rakefile, README, and
|
180
|
+
inventory path.
|
181
|
+
= dist. = Create files for distribution; depends on gem:dist.
|
182
|
+
= gem:dist. = Create gem for distribution; depends on inventory:check and gem
|
183
|
+
file.
|
184
|
+
= inventory:check. = Check that the inventory is correct by looking for files
|
185
|
+
not listed in the inventory that match the pattern and for files listed
|
186
|
+
in the inventory that don’t exist; depends on distclean.
|
187
|
+
= gem (file). = Gem file; depends on files included in gem.
|
188
|
+
= dist:check. = Check files before distribution; depends on dist and
|
189
|
+
gem:dist:check.
|
190
|
+
= gem:dist:check. = Check gem before distribution; depends on gem:dist.
|
191
|
+
= deps:install. = Install dependencies on the local system; depends on
|
192
|
+
gem:deps:install.
|
193
|
+
= gem:deps:install. = Install dependencies in ruby gem directory.
|
194
|
+
= deps:install:user. = Install dependencies for the current user; depends on
|
195
|
+
gem:deps:install:user.
|
196
|
+
= gem:deps:install:user. = Install dependencies in the user gem directory.
|
197
|
+
= install. = Install distribution files on the local system; depends on
|
198
|
+
gem:install.
|
199
|
+
= gem:install. = Install gem in ruby gem directory; depends on gem:dist.
|
200
|
+
= install:user. = Install distribution files for the current user; depends on
|
201
|
+
gem:install:user.
|
202
|
+
= gem:install:user. = Install gem in the user gem directory.
|
203
|
+
= uninstall. = Delete all files installed on the local system.
|
204
|
+
= gem:uninstall. = Uninstall gem from ruby gem directory.
|
205
|
+
= uninstall:user. = Delete all files installed for current user.
|
206
|
+
= gem:uninstall:user. = Uninstall gem from ruby gem directory.
|
207
|
+
= push. = Push distribution files to distribution hubs.
|
208
|
+
= gem:push. = Push gem to rubygems.org.
|
209
|
+
|
210
|
+
§ Financing
|
211
|
+
|
212
|
+
Currently, most of my time is spent at my day job and in my rather busy
|
213
|
+
private life. Please motivate me to spend time on this piece of software
|
214
|
+
by donating some of your money to this project. Yeah, I realize that
|
215
|
+
requesting money to develop software is a bit, well, capitalistic of me.
|
216
|
+
But please realize that I live in a capitalistic society and I need money
|
217
|
+
to have other people give me the things that I need to continue living
|
218
|
+
under the rules of said society. So, if you feel that this piece of
|
219
|
+
software has helped you out enough to warrant a reward, please PayPal a
|
220
|
+
donation to now@disu.se¹. Thanks! Your support won’t go unnoticed!
|
221
|
+
|
222
|
+
¹ Send a donation:
|
223
|
+
https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=now%40disu%2ese&item_name=Nikolai%20Weibull%20Software%20Services
|
224
|
+
|
225
|
+
§ Reporting Bugs
|
226
|
+
|
227
|
+
Please report any bugs that you encounter to the {issue tracker}¹.
|
228
|
+
|
229
|
+
¹ See https://github.com/now/inventory-rake/issues
|
230
|
+
|
231
|
+
§ Authors
|
232
|
+
|
233
|
+
Nikolai Weibull wrote the code, the tests, the manual pages, and this
|
234
|
+
README.
|
68
235
|
email: now@bitwi.se
|
69
236
|
executables: []
|
70
237
|
extensions: []
|
71
238
|
extra_rdoc_files: []
|
72
239
|
files:
|
73
|
-
- lib/inventory
|
74
|
-
- lib/inventory
|
75
|
-
- lib/inventory
|
76
|
-
- lib/inventory
|
77
|
-
- lib/inventory
|
240
|
+
- lib/inventory-rake-1.0/tasks.rb
|
241
|
+
- lib/inventory-rake-1.0/tasks/check.rb
|
242
|
+
- lib/inventory-rake-1.0/tasks/clean.rb
|
243
|
+
- lib/inventory-rake-1.0/tasks/compile.rb
|
244
|
+
- lib/inventory-rake-1.0/tasks/gem.rb
|
245
|
+
- lib/inventory-rake-1.0/tasks/inventory.rb
|
246
|
+
- lib/inventory-rake-1.0.rb
|
247
|
+
- lib/inventory-rake-1.0/version.rb
|
78
248
|
- lib/inventory/rake-1.0.rb
|
79
|
-
-
|
80
|
-
- test/unit/inventory
|
81
|
-
- test/unit/inventory
|
82
|
-
- test/unit/inventory
|
83
|
-
- test/unit/inventory
|
84
|
-
- test/unit/inventory
|
85
|
-
- test/unit/inventory
|
86
|
-
- test/unit/inventory
|
249
|
+
- test/unit/inventory-rake-1.0/tasks.rb
|
250
|
+
- test/unit/inventory-rake-1.0/tasks/check.rb
|
251
|
+
- test/unit/inventory-rake-1.0/tasks/clean.rb
|
252
|
+
- test/unit/inventory-rake-1.0/tasks/compile.rb
|
253
|
+
- test/unit/inventory-rake-1.0/tasks/gem.rb
|
254
|
+
- test/unit/inventory-rake-1.0/tasks/inventory.rb
|
255
|
+
- test/unit/inventory-rake-1.0.rb
|
256
|
+
- test/unit/inventory-rake-1.0/version.rb
|
87
257
|
- README
|
88
258
|
- Rakefile
|
89
259
|
homepage: https://github.com/now/inventory-rake
|
@@ -94,21 +264,19 @@ rdoc_options: []
|
|
94
264
|
require_paths:
|
95
265
|
- lib
|
96
266
|
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
267
|
requirements:
|
99
|
-
- -
|
268
|
+
- - '>='
|
100
269
|
- !ruby/object:Gem::Version
|
101
270
|
version: '0'
|
102
271
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
272
|
requirements:
|
105
|
-
- -
|
273
|
+
- - '>='
|
106
274
|
- !ruby/object:Gem::Version
|
107
275
|
version: '0'
|
108
276
|
requirements: []
|
109
277
|
rubyforge_project:
|
110
|
-
rubygems_version:
|
278
|
+
rubygems_version: 2.0.0
|
111
279
|
signing_key:
|
112
280
|
specification_version: 4
|
113
|
-
summary: Inventory-Rake provides Rake tasks for your Inventory
|
281
|
+
summary: Inventory-Rake provides Rake¹ tasks for your Inventory².
|
114
282
|
test_files: []
|
data/lib/inventory/rake/tasks.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
# Namespace for Rake tasks.
|
4
|
-
module Inventory::Rake::Tasks
|
5
|
-
@mostlycleanfiles, @cleanfiles, @distcleanfiles = [], [], []
|
6
|
-
|
7
|
-
class << self
|
8
|
-
attr_accessor :inventory
|
9
|
-
|
10
|
-
attr_reader :mostlycleanfiles, :cleanfiles, :distcleanfiles
|
11
|
-
|
12
|
-
def define(inventory, options = {})
|
13
|
-
self.inventory = inventory
|
14
|
-
Clean.define
|
15
|
-
Inventory.new(:inventory => inventory)
|
16
|
-
Gem.new(:inventory => inventory, &(options.fetch(:gem, proc{ })))
|
17
|
-
end
|
18
|
-
|
19
|
-
def unless_installing_dependencies
|
20
|
-
yield if (%w'deps:install
|
21
|
-
deps:install:user
|
22
|
-
gem:deps:install
|
23
|
-
gem:deps:install:user' &
|
24
|
-
Rake.application.top_level_tasks).empty?
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
class Inventory::Rake::Tasks::Clean
|
4
|
-
include Rake::DSL
|
5
|
-
|
6
|
-
class << self
|
7
|
-
include Rake::DSL
|
8
|
-
|
9
|
-
def define
|
10
|
-
desc 'Delete targets built by rake that are often rebuilt'
|
11
|
-
new :mostlyclean, Inventory::Rake::Tasks.mostlycleanfiles
|
12
|
-
|
13
|
-
desc 'Delete targets built by rake'
|
14
|
-
new :clean, Inventory::Rake::Tasks.cleanfiles
|
15
|
-
task :clean => :mostlyclean
|
16
|
-
|
17
|
-
desc 'Delete targets built by extconf.rb'
|
18
|
-
new :distclean, Inventory::Rake::Tasks.distcleanfiles
|
19
|
-
task :distclean => :clean
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def initialize(name, files = [])
|
24
|
-
@name, @files = name, files
|
25
|
-
define
|
26
|
-
end
|
27
|
-
|
28
|
-
def define
|
29
|
-
task name do
|
30
|
-
rm files, :force => true
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
attr_accessor :name, :files
|
35
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
class Inventory::Rake::Tasks::Inventory
|
4
|
-
include Rake::DSL
|
5
|
-
|
6
|
-
def initialize(options = {})
|
7
|
-
self.inventory = options.fetch(:inventory, Inventory::Rake::Tasks.inventory)
|
8
|
-
yield self if block_given?
|
9
|
-
define
|
10
|
-
end
|
11
|
-
|
12
|
-
def define
|
13
|
-
desc 'Check that the inventory is correct'
|
14
|
-
task :'inventory:check' do
|
15
|
-
# TODO: Use directories from Inventory instead of hard-coding lib and
|
16
|
-
# test/unit. We want to check ext too?
|
17
|
-
diff = ((Dir['{lib,test/unit}/**/*.rb'] -
|
18
|
-
@inventory.lib_files -
|
19
|
-
@inventory.unit_test_files).map{ |e| 'file not listed in inventory: %s' % e } +
|
20
|
-
@inventory.files.reject{ |e| File.exist? e }.map{ |e| 'file listed in inventory does not exist: %s' % e })
|
21
|
-
fail diff.join("\n") unless diff.empty?
|
22
|
-
# TODO: puts 'inventory checks out' if verbose
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
attr_writer :inventory
|
27
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'inventory-1.0'
|
4
|
-
|
5
|
-
module Inventory::Rake
|
6
|
-
Version = Inventory.new(1, 3, 0){
|
7
|
-
def dependencies
|
8
|
-
super + Inventory::Dependencies.new{
|
9
|
-
development 'lookout', 3, 0, 0
|
10
|
-
development 'lookout-rake', 3, 0, 0
|
11
|
-
optional 'rake', 0, 9, 2
|
12
|
-
}
|
13
|
-
end
|
14
|
-
|
15
|
-
def requires
|
16
|
-
%w'
|
17
|
-
rake
|
18
|
-
'
|
19
|
-
end
|
20
|
-
|
21
|
-
def libs
|
22
|
-
%w'
|
23
|
-
inventory/rake/tasks.rb
|
24
|
-
inventory/rake/tasks/check.rb
|
25
|
-
inventory/rake/tasks/clean.rb
|
26
|
-
inventory/rake/tasks/gem.rb
|
27
|
-
inventory/rake/tasks/inventory.rb
|
28
|
-
'
|
29
|
-
end
|
30
|
-
}
|
31
|
-
end
|