makerakeworkwell 1.0.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.
data.tar.gz.sig ADDED
@@ -0,0 +1 @@
1
+ ��n=f�OJ�>�&���݇5x��D$:��N/�1՛��9�a.}�dj��%g{n��]�����d�ix�q�� ���F=�%"D�����.�?��
data/.autotest ADDED
@@ -0,0 +1,26 @@
1
+ # -*- ruby -*-
2
+
3
+ require "autotest/restart"
4
+
5
+ Autotest.add_hook :initialize do |at|
6
+ at.testlib = "minitest/autorun"
7
+ at.add_exception "tmp"
8
+
9
+ # at.extra_files << "../some/external/dependency.rb"
10
+ #
11
+ # at.libs << ":../some/external"
12
+ #
13
+ # at.add_exception "vendor"
14
+ #
15
+ # at.add_mapping(/dependency.rb/) do |f, _|
16
+ # at.files_matching(/test_.*rb$/)
17
+ # end
18
+ #
19
+ # %w(TestA TestB).each do |klass|
20
+ # at.extra_class_map[klass] = "test/test_misc.rb"
21
+ # end
22
+ end
23
+
24
+ # Autotest.add_hook :run_command do |at|
25
+ # system "rake build"
26
+ # end
data/.gemtest ADDED
File without changes
data/History.txt ADDED
@@ -0,0 +1,6 @@
1
+ === 1.0.0 / 2012-05-25
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
data/Manifest.txt ADDED
@@ -0,0 +1,7 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ lib/make/rake/work/well.rb
7
+ test/test_makerakeworkwell.rb
data/README.txt ADDED
@@ -0,0 +1,120 @@
1
+ = make
2
+ = rake
3
+ = work
4
+ = well
5
+
6
+ home :: https://github.com/seattlerb/makerakeworkwell
7
+ rdoc :: http://docs.seattlerb.org/makerakeworkwell
8
+
9
+ == DESCRIPTION:
10
+
11
+ make/rake/work/well provides two simple modifications to rake that
12
+ make working with file tasks cleaner, easier, and faster.
13
+
14
+ == Rationale:
15
+
16
+ === FileTask
17
+
18
+ After extensive discussion with Jim, I believe we've agreed to
19
+ disagree on what rake is and how it should work. To Jim, rake is a
20
+ build tool (ie, a make replacement), plain and simple. I think it's
21
+ grown past that. To me, rake is a task execution engine with built in
22
+ dependency management and a whole lot of helpers to make writing said
23
+ tasks clean and easy. Whether there are files involved or not is less
24
+ of a concern in my mind, but when there are files involved, they often
25
+ seem to be problematic.
26
+
27
+ As such, make/rake/work/well patches rake to work with files in the
28
+ way that works best for my brain. Specifically, I think that every
29
+ file should map directly to their own dependencies and targets should
30
+ follow the entire tree of dependencies to see if they should rebuild
31
+ or not. For example:
32
+
33
+ target1 ---> source1 --+--> required1 ---> required2
34
+ |
35
+ target2 ---> source2 --+
36
+
37
+ If required2 changes, target1 and target2 should be rebuilt.
38
+
39
+ Jim would rather see the dependencies modeled in the old-school make
40
+ way:
41
+
42
+ target1 --+--> source1
43
+ |
44
+ +--> required1
45
+ |
46
+ +--> required2
47
+
48
+ target2 --+--> source2
49
+ |
50
+ +--> required1
51
+ |
52
+ +--> required2
53
+
54
+ This requires a manual expansion of the transitive closure of the
55
+ dependencies. This flattens everything, causes a lot of fan-out, and
56
+ makes it harder to see how things interrelate.
57
+
58
+ My patches to rake replace FileTask#needed? and FileTask#timestamp to
59
+ cause the scenario described above to work correctly. It uses caching
60
+ to prevent a lot of extra fstats from happening and winds up
61
+ performing at least fast as rake.
62
+
63
+ I've been using this for the last 6 months in zenweb for very large
64
+ dependency graphs and it has been working great for me.
65
+
66
+ === Phony
67
+
68
+ It also defines a :phony task that you can use as a dependency. Rake
69
+ has very strange notions on how file and non-file based tasks should
70
+ interact. Specifically, file tasks use the timestamp of their
71
+ dependencies to determine whether they should build. Task defines its
72
+ timestamp to be the max its dependencies or Time.now if there are
73
+ none. That forces a file task depending on a non-file-task to always
74
+ build.
75
+
76
+ Depending on phony reverses this. This allows file-based tasks
77
+ to use non-file-based tasks as prerequisites without forcing them to
78
+ rebuild. For example:
79
+
80
+ task :isolate => :phony
81
+
82
+ file "lib/ruby18_parser.rb" => :isolate
83
+ file "lib/ruby19_parser.rb" => :isolate
84
+
85
+ I've been using this in ruby_parser for the last 6 months and it
86
+ cleaned up a bunch of confusion as to why my files kept rebuilding
87
+ over and over.
88
+
89
+ == REQUIREMENTS:
90
+
91
+ * rake
92
+
93
+ == INSTALL:
94
+
95
+ * sudo gem install makerakeworkwell
96
+
97
+ == LICENSE:
98
+
99
+ (The MIT License)
100
+
101
+ Copyright (c) Ryan Davis, seattle.rb
102
+
103
+ Permission is hereby granted, free of charge, to any person obtaining
104
+ a copy of this software and associated documentation files (the
105
+ 'Software'), to deal in the Software without restriction, including
106
+ without limitation the rights to use, copy, modify, merge, publish,
107
+ distribute, sublicense, and/or sell copies of the Software, and to
108
+ permit persons to whom the Software is furnished to do so, subject to
109
+ the following conditions:
110
+
111
+ The above copyright notice and this permission notice shall be
112
+ included in all copies or substantial portions of the Software.
113
+
114
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
115
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
116
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
117
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
118
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
119
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
120
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ # -*- ruby -*-
2
+
3
+ require "rubygems"
4
+ require "hoe"
5
+
6
+ Hoe.plugin :isolate
7
+ Hoe.plugin :seattlerb
8
+
9
+ Hoe.spec "makerakeworkwell" do
10
+ developer "Ryan Davis", "ryand-ruby@zenspider.com"
11
+
12
+ dependency "rake", "~> 0.9.2"
13
+ end
14
+
15
+ task :docs do
16
+ fonts = '"Courier New", Courier, monospace'
17
+ sh %(echo 'h1 { font-family: #{fonts}; }' >> doc/rdoc.css)
18
+ end
19
+
20
+ # vim: syntax=ruby
@@ -0,0 +1,45 @@
1
+
2
+ gem "rake", "~> 0.9.2"
3
+
4
+ require 'rake'
5
+
6
+ module MakeRakeWorkWell
7
+ VERSION = "1.0.0"
8
+ end
9
+
10
+ module Rake
11
+ class FileTask
12
+ alias old_needed? needed?
13
+ alias old_timestamp timestamp
14
+
15
+ def needed?
16
+ ! File.exist?(name) || timestamp > real_timestamp
17
+ end
18
+
19
+ def real_timestamp
20
+ File.exist?(name) && File.mtime(name.to_s) || Rake::EARLY
21
+ end
22
+
23
+ def timestamp
24
+ @timestamp ||=
25
+ if File.exist?(name)
26
+ a = File.mtime(name.to_s)
27
+ b = super unless prerequisites.empty?
28
+ [a, b].compact.max
29
+ else
30
+ Rake::EARLY
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ ##
37
+ # Defines a :phony task that you can use as a dependency. This allows
38
+ # file-based tasks to use non-file-based tasks as prerequisites
39
+ # without forcing them to rebuild.
40
+ #
41
+ # See FileTask#out_of_date? and Task#timestamp for more info.
42
+
43
+ def (Rake::Task.define_task(:phony)).timestamp
44
+ Time.at 0
45
+ end
@@ -0,0 +1,8 @@
1
+ require "minitest/autorun"
2
+ require "make/rake/work/well"
3
+
4
+ class TestMakerakeworkwell < MiniTest::Unit::TestCase
5
+ def test_sanity
6
+ flunk "write tests or I will kneecap you"
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: makerakeworkwell
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Ryan Davis
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain:
17
+ - |
18
+ -----BEGIN CERTIFICATE-----
19
+ MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
20
+ ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
21
+ GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
22
+ AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
23
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
24
+ b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
25
+ taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
26
+ oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
27
+ GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
28
+ qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
29
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
30
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
31
+ AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
32
+ vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
33
+ w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
34
+ l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
35
+ n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
36
+ FBHgymkyj/AOSqKRIpXPhjC6
37
+ -----END CERTIFICATE-----
38
+
39
+ date: 2012-05-25 00:00:00 Z
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ prerelease: false
44
+ requirement: &id001 !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ hash: 63
50
+ segments:
51
+ - 0
52
+ - 9
53
+ - 2
54
+ version: 0.9.2
55
+ type: :runtime
56
+ version_requirements: *id001
57
+ - !ruby/object:Gem::Dependency
58
+ name: minitest
59
+ prerelease: false
60
+ requirement: &id002 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ hash: 7
66
+ segments:
67
+ - 3
68
+ - 0
69
+ version: "3.0"
70
+ type: :development
71
+ version_requirements: *id002
72
+ - !ruby/object:Gem::Dependency
73
+ name: rdoc
74
+ prerelease: false
75
+ requirement: &id003 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ hash: 19
81
+ segments:
82
+ - 3
83
+ - 10
84
+ version: "3.10"
85
+ type: :development
86
+ version_requirements: *id003
87
+ - !ruby/object:Gem::Dependency
88
+ name: hoe
89
+ prerelease: false
90
+ requirement: &id004 !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ hash: 7
96
+ segments:
97
+ - 3
98
+ - 0
99
+ version: "3.0"
100
+ type: :development
101
+ version_requirements: *id004
102
+ description: |-
103
+ make/rake/work/well provides two simple modifications to rake that
104
+ make working with file tasks cleaner, easier, and faster.
105
+ email:
106
+ - ryand-ruby@zenspider.com
107
+ executables: []
108
+
109
+ extensions: []
110
+
111
+ extra_rdoc_files:
112
+ - History.txt
113
+ - Manifest.txt
114
+ - README.txt
115
+ files:
116
+ - .autotest
117
+ - History.txt
118
+ - Manifest.txt
119
+ - README.txt
120
+ - Rakefile
121
+ - lib/make/rake/work/well.rb
122
+ - test/test_makerakeworkwell.rb
123
+ - .gemtest
124
+ homepage:
125
+ licenses: []
126
+
127
+ post_install_message:
128
+ rdoc_options:
129
+ - --main
130
+ - README.txt
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ hash: 3
139
+ segments:
140
+ - 0
141
+ version: "0"
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ hash: 3
148
+ segments:
149
+ - 0
150
+ version: "0"
151
+ requirements: []
152
+
153
+ rubyforge_project: makerakeworkwell
154
+ rubygems_version: 1.8.17
155
+ signing_key:
156
+ specification_version: 3
157
+ summary: make/rake/work/well provides two simple modifications to rake that make working with file tasks cleaner, easier, and faster.
158
+ test_files:
159
+ - test/test_makerakeworkwell.rb
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ >�ᤱ�Y��,��JR���,5o�B!%��J<��X �N��Xf�-Fc�����c