diy_rails 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/lib/diy_rails/version.rb +1 -1
  3. data/lib/diy_rails.rb +7 -3
  4. metadata +12 -151
  5. data/vendor/bundle/ruby/3.0.0/bin/rackup +0 -29
  6. data/vendor/bundle/ruby/3.0.0/bin/rake +0 -29
  7. data/vendor/bundle/ruby/3.0.0/cache/rack-2.2.4.gem +0 -0
  8. data/vendor/bundle/ruby/3.0.0/cache/rake-13.0.6.gem +0 -0
  9. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/CHANGELOG.md +0 -708
  10. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/CONTRIBUTING.md +0 -136
  11. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/MIT-LICENSE +0 -20
  12. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/README.rdoc +0 -306
  13. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/Rakefile +0 -130
  14. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/SPEC.rdoc +0 -288
  15. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/bin/rackup +0 -5
  16. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rack.png +0 -0
  17. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rack.svg +0 -150
  18. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rack_logo.svg +0 -164
  19. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rdoc.css +0 -412
  20. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/lobster.ru +0 -6
  21. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/protectedlobster.rb +0 -16
  22. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/protectedlobster.ru +0 -10
  23. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/abstract/handler.rb +0 -39
  24. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/abstract/request.rb +0 -47
  25. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/basic.rb +0 -61
  26. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/md5.rb +0 -131
  27. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/nonce.rb +0 -54
  28. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/params.rb +0 -54
  29. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/request.rb +0 -43
  30. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/body_proxy.rb +0 -45
  31. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/builder.rb +0 -257
  32. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/cascade.rb +0 -68
  33. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/chunked.rb +0 -117
  34. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/common_logger.rb +0 -83
  35. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/conditional_get.rb +0 -83
  36. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/config.rb +0 -22
  37. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/content_length.rb +0 -38
  38. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/content_type.rb +0 -30
  39. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/core_ext/regexp.rb +0 -14
  40. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/deflater.rb +0 -144
  41. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/directory.rb +0 -199
  42. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/etag.rb +0 -77
  43. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/events.rb +0 -153
  44. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/file.rb +0 -7
  45. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/files.rb +0 -218
  46. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/cgi.rb +0 -59
  47. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/fastcgi.rb +0 -100
  48. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/lsws.rb +0 -61
  49. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/scgi.rb +0 -71
  50. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/thin.rb +0 -36
  51. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/webrick.rb +0 -129
  52. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler.rb +0 -104
  53. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/head.rb +0 -25
  54. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lint.rb +0 -806
  55. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lobster.rb +0 -70
  56. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lock.rb +0 -32
  57. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/logger.rb +0 -20
  58. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/media_type.rb +0 -43
  59. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/method_override.rb +0 -52
  60. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/mime.rb +0 -685
  61. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/mock.rb +0 -273
  62. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/generator.rb +0 -97
  63. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/parser.rb +0 -365
  64. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/uploaded_file.rb +0 -41
  65. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart.rb +0 -64
  66. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/null_logger.rb +0 -39
  67. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/query_parser.rb +0 -221
  68. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/recursive.rb +0 -64
  69. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/reloader.rb +0 -114
  70. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/request.rb +0 -659
  71. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/response.rb +0 -318
  72. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/rewindable_input.rb +0 -94
  73. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/runtime.rb +0 -34
  74. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/sendfile.rb +0 -162
  75. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb +0 -466
  76. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/abstract/id.rb +0 -523
  77. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/cookie.rb +0 -203
  78. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/memcache.rb +0 -10
  79. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/pool.rb +0 -85
  80. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/show_exceptions.rb +0 -390
  81. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/show_status.rb +0 -113
  82. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/static.rb +0 -187
  83. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/tempfile_reaper.rb +0 -22
  84. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/urlmap.rb +0 -97
  85. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/utils.rb +0 -616
  86. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/version.rb +0 -29
  87. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack.rb +0 -141
  88. data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/rack.gemspec +0 -46
  89. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/History.rdoc +0 -2403
  90. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/MIT-LICENSE +0 -21
  91. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/README.rdoc +0 -155
  92. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/command_line_usage.rdoc +0 -158
  93. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/Rakefile1 +0 -38
  94. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/Rakefile2 +0 -35
  95. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/a.c +0 -6
  96. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/b.c +0 -6
  97. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/main.c +0 -11
  98. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/glossary.rdoc +0 -42
  99. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/jamis.rb +0 -592
  100. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/proto_rake.rdoc +0 -127
  101. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rake.1 +0 -156
  102. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rakefile.rdoc +0 -622
  103. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rational.rdoc +0 -151
  104. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake +0 -27
  105. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/application.rb +0 -831
  106. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/backtrace.rb +0 -24
  107. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/clean.rb +0 -78
  108. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/cloneable.rb +0 -17
  109. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/cpu_counter.rb +0 -107
  110. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/default_loader.rb +0 -15
  111. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb +0 -195
  112. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/early_time.rb +0 -22
  113. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/ext/core.rb +0 -26
  114. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/ext/string.rb +0 -176
  115. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_creation_task.rb +0 -25
  116. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_list.rb +0 -435
  117. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_task.rb +0 -54
  118. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_utils.rb +0 -134
  119. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_utils_ext.rb +0 -134
  120. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/invocation_chain.rb +0 -57
  121. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/invocation_exception_mixin.rb +0 -17
  122. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/late_time.rb +0 -18
  123. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/linked_list.rb +0 -112
  124. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/loaders/makefile.rb +0 -54
  125. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/multi_task.rb +0 -14
  126. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/name_space.rb +0 -38
  127. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/packagetask.rb +0 -222
  128. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/phony.rb +0 -16
  129. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/private_reader.rb +0 -21
  130. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/promise.rb +0 -100
  131. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/pseudo_status.rb +0 -30
  132. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rake_module.rb +0 -67
  133. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb +0 -27
  134. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rule_recursion_overflow_error.rb +0 -20
  135. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/scope.rb +0 -43
  136. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task.rb +0 -434
  137. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_argument_error.rb +0 -8
  138. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_arguments.rb +0 -109
  139. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_manager.rb +0 -331
  140. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/tasklib.rb +0 -12
  141. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/testtask.rb +0 -189
  142. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/thread_history_display.rb +0 -49
  143. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/thread_pool.rb +0 -163
  144. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/trace_output.rb +0 -23
  145. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/version.rb +0 -10
  146. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/win32.rb +0 -51
  147. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake.rb +0 -71
  148. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/rake.gemspec +0 -100
  149. data/vendor/bundle/ruby/3.0.0/specifications/rack-2.2.4.gemspec +0 -41
  150. data/vendor/bundle/ruby/3.0.0/specifications/rake-13.0.6.gemspec +0 -26
@@ -1,435 +0,0 @@
1
- # frozen_string_literal: true
2
- require "rake/cloneable"
3
- require "rake/file_utils_ext"
4
- require "rake/ext/string"
5
-
6
- module Rake
7
-
8
- ##
9
- # A FileList is essentially an array with a few helper methods defined to
10
- # make file manipulation a bit easier.
11
- #
12
- # FileLists are lazy. When given a list of glob patterns for possible files
13
- # to be included in the file list, instead of searching the file structures
14
- # to find the files, a FileList holds the pattern for latter use.
15
- #
16
- # This allows us to define a number of FileList to match any number of
17
- # files, but only search out the actual files when then FileList itself is
18
- # actually used. The key is that the first time an element of the
19
- # FileList/Array is requested, the pending patterns are resolved into a real
20
- # list of file names.
21
- #
22
- class FileList
23
-
24
- include Cloneable
25
-
26
- # == Method Delegation
27
- #
28
- # The lazy evaluation magic of FileLists happens by implementing all the
29
- # array specific methods to call +resolve+ before delegating the heavy
30
- # lifting to an embedded array object (@items).
31
- #
32
- # In addition, there are two kinds of delegation calls. The regular kind
33
- # delegates to the @items array and returns the result directly. Well,
34
- # almost directly. It checks if the returned value is the @items object
35
- # itself, and if so will return the FileList object instead.
36
- #
37
- # The second kind of delegation call is used in methods that normally
38
- # return a new Array object. We want to capture the return value of these
39
- # methods and wrap them in a new FileList object. We enumerate these
40
- # methods in the +SPECIAL_RETURN+ list below.
41
-
42
- # List of array methods (that are not in +Object+) that need to be
43
- # delegated.
44
- ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map(&:to_s)
45
-
46
- # List of additional methods that must be delegated.
47
- MUST_DEFINE = %w[inspect <=>]
48
-
49
- # List of methods that should not be delegated here (we define special
50
- # versions of them explicitly below).
51
- MUST_NOT_DEFINE = %w[to_a to_ary partition * <<]
52
-
53
- # List of delegated methods that return new array values which need
54
- # wrapping.
55
- SPECIAL_RETURN = %w[
56
- map collect sort sort_by select find_all reject grep
57
- compact flatten uniq values_at
58
- + - & |
59
- ]
60
-
61
- DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).map(&:to_s).sort.uniq
62
-
63
- # Now do the delegation.
64
- DELEGATING_METHODS.each do |sym|
65
- if SPECIAL_RETURN.include?(sym)
66
- ln = __LINE__ + 1
67
- class_eval %{
68
- def #{sym}(*args, &block)
69
- resolve
70
- result = @items.send(:#{sym}, *args, &block)
71
- self.class.new.import(result)
72
- end
73
- }, __FILE__, ln
74
- else
75
- ln = __LINE__ + 1
76
- class_eval %{
77
- def #{sym}(*args, &block)
78
- resolve
79
- result = @items.send(:#{sym}, *args, &block)
80
- result.object_id == @items.object_id ? self : result
81
- end
82
- }, __FILE__, ln
83
- end
84
- end
85
-
86
- GLOB_PATTERN = %r{[*?\[\{]}
87
-
88
- # Create a file list from the globbable patterns given. If you wish to
89
- # perform multiple includes or excludes at object build time, use the
90
- # "yield self" pattern.
91
- #
92
- # Example:
93
- # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb')
94
- #
95
- # pkg_files = FileList.new('lib/**/*') do |fl|
96
- # fl.exclude(/\bCVS\b/)
97
- # end
98
- #
99
- def initialize(*patterns)
100
- @pending_add = []
101
- @pending = false
102
- @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
103
- @exclude_procs = DEFAULT_IGNORE_PROCS.dup
104
- @items = []
105
- patterns.each { |pattern| include(pattern) }
106
- yield self if block_given?
107
- end
108
-
109
- # Add file names defined by glob patterns to the file list. If an array
110
- # is given, add each element of the array.
111
- #
112
- # Example:
113
- # file_list.include("*.java", "*.cfg")
114
- # file_list.include %w( math.c lib.h *.o )
115
- #
116
- def include(*filenames)
117
- # TODO: check for pending
118
- filenames.each do |fn|
119
- if fn.respond_to? :to_ary
120
- include(*fn.to_ary)
121
- else
122
- @pending_add << Rake.from_pathname(fn)
123
- end
124
- end
125
- @pending = true
126
- self
127
- end
128
- alias :add :include
129
-
130
- # Register a list of file name patterns that should be excluded from the
131
- # list. Patterns may be regular expressions, glob patterns or regular
132
- # strings. In addition, a block given to exclude will remove entries that
133
- # return true when given to the block.
134
- #
135
- # Note that glob patterns are expanded against the file system. If a file
136
- # is explicitly added to a file list, but does not exist in the file
137
- # system, then an glob pattern in the exclude list will not exclude the
138
- # file.
139
- #
140
- # Examples:
141
- # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c']
142
- # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c']
143
- #
144
- # If "a.c" is a file, then ...
145
- # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c']
146
- #
147
- # If "a.c" is not a file, then ...
148
- # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c']
149
- #
150
- def exclude(*patterns, &block)
151
- patterns.each do |pat|
152
- if pat.respond_to? :to_ary
153
- exclude(*pat.to_ary)
154
- else
155
- @exclude_patterns << Rake.from_pathname(pat)
156
- end
157
- end
158
- @exclude_procs << block if block_given?
159
- resolve_exclude unless @pending
160
- self
161
- end
162
-
163
- # Clear all the exclude patterns so that we exclude nothing.
164
- def clear_exclude
165
- @exclude_patterns = []
166
- @exclude_procs = []
167
- self
168
- end
169
-
170
- # A FileList is equal through array equality.
171
- def ==(array)
172
- to_ary == array
173
- end
174
-
175
- # Return the internal array object.
176
- def to_a
177
- resolve
178
- @items
179
- end
180
-
181
- # Return the internal array object.
182
- def to_ary
183
- to_a
184
- end
185
-
186
- # Lie about our class.
187
- def is_a?(klass)
188
- klass == Array || super(klass)
189
- end
190
- alias kind_of? is_a?
191
-
192
- # Redefine * to return either a string or a new file list.
193
- def *(other)
194
- result = @items * other
195
- case result
196
- when Array
197
- self.class.new.import(result)
198
- else
199
- result
200
- end
201
- end
202
-
203
- def <<(obj)
204
- resolve
205
- @items << Rake.from_pathname(obj)
206
- self
207
- end
208
-
209
- # Resolve all the pending adds now.
210
- def resolve
211
- if @pending
212
- @pending = false
213
- @pending_add.each do |fn| resolve_add(fn) end
214
- @pending_add = []
215
- resolve_exclude
216
- end
217
- self
218
- end
219
-
220
- def resolve_add(fn) # :nodoc:
221
- case fn
222
- when GLOB_PATTERN
223
- add_matching(fn)
224
- else
225
- self << fn
226
- end
227
- end
228
- private :resolve_add
229
-
230
- def resolve_exclude # :nodoc:
231
- reject! { |fn| excluded_from_list?(fn) }
232
- self
233
- end
234
- private :resolve_exclude
235
-
236
- # Return a new FileList with the results of running +sub+ against each
237
- # element of the original list.
238
- #
239
- # Example:
240
- # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o']
241
- #
242
- def sub(pat, rep)
243
- inject(self.class.new) { |res, fn| res << fn.sub(pat, rep) }
244
- end
245
-
246
- # Return a new FileList with the results of running +gsub+ against each
247
- # element of the original list.
248
- #
249
- # Example:
250
- # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\")
251
- # => ['lib\\test\\file', 'x\\y']
252
- #
253
- def gsub(pat, rep)
254
- inject(self.class.new) { |res, fn| res << fn.gsub(pat, rep) }
255
- end
256
-
257
- # Same as +sub+ except that the original file list is modified.
258
- def sub!(pat, rep)
259
- each_with_index { |fn, i| self[i] = fn.sub(pat, rep) }
260
- self
261
- end
262
-
263
- # Same as +gsub+ except that the original file list is modified.
264
- def gsub!(pat, rep)
265
- each_with_index { |fn, i| self[i] = fn.gsub(pat, rep) }
266
- self
267
- end
268
-
269
- # Apply the pathmap spec to each of the included file names, returning a
270
- # new file list with the modified paths. (See String#pathmap for
271
- # details.)
272
- def pathmap(spec=nil, &block)
273
- collect { |fn| fn.pathmap(spec, &block) }
274
- end
275
-
276
- # Return a new FileList with <tt>String#ext</tt> method applied to
277
- # each member of the array.
278
- #
279
- # This method is a shortcut for:
280
- #
281
- # array.collect { |item| item.ext(newext) }
282
- #
283
- # +ext+ is a user added method for the Array class.
284
- def ext(newext="")
285
- collect { |fn| fn.ext(newext) }
286
- end
287
-
288
- # Grep each of the files in the filelist using the given pattern. If a
289
- # block is given, call the block on each matching line, passing the file
290
- # name, line number, and the matching line of text. If no block is given,
291
- # a standard emacs style file:linenumber:line message will be printed to
292
- # standard out. Returns the number of matched items.
293
- def egrep(pattern, *options)
294
- matched = 0
295
- each do |fn|
296
- begin
297
- File.open(fn, "r", *options) do |inf|
298
- count = 0
299
- inf.each do |line|
300
- count += 1
301
- if pattern.match(line)
302
- matched += 1
303
- if block_given?
304
- yield fn, count, line
305
- else
306
- puts "#{fn}:#{count}:#{line}"
307
- end
308
- end
309
- end
310
- end
311
- rescue StandardError => ex
312
- $stderr.puts "Error while processing '#{fn}': #{ex}"
313
- end
314
- end
315
- matched
316
- end
317
-
318
- # Return a new file list that only contains file names from the current
319
- # file list that exist on the file system.
320
- def existing
321
- select { |fn| File.exist?(fn) }.uniq
322
- end
323
-
324
- # Modify the current file list so that it contains only file name that
325
- # exist on the file system.
326
- def existing!
327
- resolve
328
- @items = @items.select { |fn| File.exist?(fn) }.uniq
329
- self
330
- end
331
-
332
- # FileList version of partition. Needed because the nested arrays should
333
- # be FileLists in this version.
334
- def partition(&block) # :nodoc:
335
- resolve
336
- result = @items.partition(&block)
337
- [
338
- self.class.new.import(result[0]),
339
- self.class.new.import(result[1]),
340
- ]
341
- end
342
-
343
- # Convert a FileList to a string by joining all elements with a space.
344
- def to_s
345
- resolve
346
- self.join(" ")
347
- end
348
-
349
- # Add matching glob patterns.
350
- def add_matching(pattern)
351
- self.class.glob(pattern).each do |fn|
352
- self << fn unless excluded_from_list?(fn)
353
- end
354
- end
355
- private :add_matching
356
-
357
- # Should the given file name be excluded from the list?
358
- #
359
- # NOTE: This method was formerly named "exclude?", but Rails
360
- # introduced an exclude? method as an array method and setup a
361
- # conflict with file list. We renamed the method to avoid
362
- # confusion. If you were using "FileList#exclude?" in your user
363
- # code, you will need to update.
364
- def excluded_from_list?(fn)
365
- return true if @exclude_patterns.any? do |pat|
366
- case pat
367
- when Regexp
368
- fn =~ pat
369
- when GLOB_PATTERN
370
- flags = File::FNM_PATHNAME
371
- # Ruby <= 1.9.3 does not support File::FNM_EXTGLOB
372
- flags |= File::FNM_EXTGLOB if defined? File::FNM_EXTGLOB
373
- File.fnmatch?(pat, fn, flags)
374
- else
375
- fn == pat
376
- end
377
- end
378
- @exclude_procs.any? { |p| p.call(fn) }
379
- end
380
-
381
- DEFAULT_IGNORE_PATTERNS = [
382
- /(^|[\/\\])CVS([\/\\]|$)/,
383
- /(^|[\/\\])\.svn([\/\\]|$)/,
384
- /\.bak$/,
385
- /~$/
386
- ]
387
- DEFAULT_IGNORE_PROCS = [
388
- proc { |fn| fn =~ /(^|[\/\\])core$/ && !File.directory?(fn) }
389
- ]
390
-
391
- def import(array) # :nodoc:
392
- @items = array
393
- self
394
- end
395
-
396
- class << self
397
- # Create a new file list including the files listed. Similar to:
398
- #
399
- # FileList.new(*args)
400
- def [](*args)
401
- new(*args)
402
- end
403
-
404
- # Get a sorted list of files matching the pattern. This method
405
- # should be preferred to Dir[pattern] and Dir.glob(pattern) because
406
- # the files returned are guaranteed to be sorted.
407
- def glob(pattern, *args)
408
- Dir.glob(pattern, *args).sort
409
- end
410
- end
411
- end
412
- end
413
-
414
- module Rake
415
- class << self
416
-
417
- # Yield each file or directory component.
418
- def each_dir_parent(dir) # :nodoc:
419
- old_length = nil
420
- while dir != "." && dir.length != old_length
421
- yield(dir)
422
- old_length = dir.length
423
- dir = File.dirname(dir)
424
- end
425
- end
426
-
427
- # Convert Pathname and Pathname-like objects to strings;
428
- # leave everything else alone
429
- def from_pathname(path) # :nodoc:
430
- path = path.to_path if path.respond_to?(:to_path)
431
- path = path.to_str if path.respond_to?(:to_str)
432
- path
433
- end
434
- end
435
- end # module Rake
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
- require "rake/task"
3
- require "rake/early_time"
4
-
5
- module Rake
6
-
7
- # A FileTask is a task that includes time based dependencies. If any of a
8
- # FileTask's prerequisites have a timestamp that is later than the file
9
- # represented by this task, then the file must be rebuilt (using the
10
- # supplied actions).
11
- #
12
- class FileTask < Task
13
-
14
- # Is this file task needed? Yes if it doesn't exist, or if its time stamp
15
- # is out of date.
16
- def needed?
17
- !File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all
18
- end
19
-
20
- # Time stamp for file task.
21
- def timestamp
22
- if File.exist?(name)
23
- File.mtime(name.to_s)
24
- else
25
- Rake::LATE
26
- end
27
- end
28
-
29
- private
30
-
31
- # Are there any prerequisites with a later time than the given time stamp?
32
- def out_of_date?(stamp)
33
- all_prerequisite_tasks.any? { |prereq|
34
- prereq_task = application[prereq, @scope]
35
- if prereq_task.instance_of?(Rake::FileTask)
36
- prereq_task.timestamp > stamp || @application.options.build_all
37
- else
38
- prereq_task.timestamp > stamp
39
- end
40
- }
41
- end
42
-
43
- # ----------------------------------------------------------------
44
- # Task class methods.
45
- #
46
- class << self
47
- # Apply the scope to the task name according to the rules for this kind
48
- # of task. File based tasks ignore the scope when creating the name.
49
- def scope_name(scope, task_name)
50
- Rake.from_pathname(task_name)
51
- end
52
- end
53
- end
54
- end
@@ -1,134 +0,0 @@
1
- # frozen_string_literal: true
2
- require "rbconfig"
3
- require "fileutils"
4
-
5
- #--
6
- # This a FileUtils extension that defines several additional commands to be
7
- # added to the FileUtils utility functions.
8
- module FileUtils
9
- # Path to the currently running Ruby program
10
- RUBY = ENV["RUBY"] || File.join(
11
- RbConfig::CONFIG["bindir"],
12
- RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"]).
13
- sub(/.*\s.*/m, '"\&"')
14
-
15
- # Run the system command +cmd+. If multiple arguments are given the command
16
- # is run directly (without the shell, same semantics as Kernel::exec and
17
- # Kernel::system).
18
- #
19
- # It is recommended you use the multiple argument form over interpolating
20
- # user input for both usability and security reasons. With the multiple
21
- # argument form you can easily process files with spaces or other shell
22
- # reserved characters in them. With the multiple argument form your rake
23
- # tasks are not vulnerable to users providing an argument like
24
- # <code>; rm # -rf /</code>.
25
- #
26
- # If a block is given, upon command completion the block is called with an
27
- # OK flag (true on a zero exit status) and a Process::Status object.
28
- # Without a block a RuntimeError is raised when the command exits non-zero.
29
- #
30
- # Examples:
31
- #
32
- # sh 'ls -ltr'
33
- #
34
- # sh 'ls', 'file with spaces'
35
- #
36
- # # check exit status after command runs
37
- # sh %{grep pattern file} do |ok, res|
38
- # if !ok
39
- # puts "pattern not found (status = #{res.exitstatus})"
40
- # end
41
- # end
42
- #
43
- def sh(*cmd, &block)
44
- options = (Hash === cmd.last) ? cmd.pop : {}
45
- shell_runner = block_given? ? block : create_shell_runner(cmd)
46
-
47
- set_verbose_option(options)
48
- verbose = options.delete :verbose
49
- noop = options.delete(:noop) || Rake::FileUtilsExt.nowrite_flag
50
-
51
- Rake.rake_output_message sh_show_command cmd if verbose
52
-
53
- unless noop
54
- res = (Hash === cmd.last) ? system(*cmd) : system(*cmd, options)
55
- status = $?
56
- status = Rake::PseudoStatus.new(1) if !res && status.nil?
57
- shell_runner.call(res, status)
58
- end
59
- end
60
-
61
- def create_shell_runner(cmd) # :nodoc:
62
- show_command = sh_show_command cmd
63
- show_command = show_command[0, 42] + "..." unless $trace
64
-
65
- lambda do |ok, status|
66
- ok or
67
- fail "Command failed with status (#{status.exitstatus}): " +
68
- "[#{show_command}]"
69
- end
70
- end
71
- private :create_shell_runner
72
-
73
- def sh_show_command(cmd) # :nodoc:
74
- cmd = cmd.dup
75
-
76
- if Hash === cmd.first
77
- env = cmd.first
78
- env = env.map { |name, value| "#{name}=#{value}" }.join " "
79
- cmd[0] = env
80
- end
81
-
82
- cmd.join " "
83
- end
84
- private :sh_show_command
85
-
86
- def set_verbose_option(options) # :nodoc:
87
- unless options.key? :verbose
88
- options[:verbose] =
89
- (Rake::FileUtilsExt.verbose_flag == Rake::FileUtilsExt::DEFAULT) ||
90
- Rake::FileUtilsExt.verbose_flag
91
- end
92
- end
93
- private :set_verbose_option
94
-
95
- # Run a Ruby interpreter with the given arguments.
96
- #
97
- # Example:
98
- # ruby %{-pe '$_.upcase!' <README}
99
- #
100
- def ruby(*args, **options, &block)
101
- if args.length > 1
102
- sh(RUBY, *args, **options, &block)
103
- else
104
- sh("#{RUBY} #{args.first}", **options, &block)
105
- end
106
- end
107
-
108
- LN_SUPPORTED = [true]
109
-
110
- # Attempt to do a normal file link, but fall back to a copy if the link
111
- # fails.
112
- def safe_ln(*args, **options)
113
- if LN_SUPPORTED[0]
114
- begin
115
- return options.empty? ? ln(*args) : ln(*args, **options)
116
- rescue StandardError, NotImplementedError
117
- LN_SUPPORTED[0] = false
118
- end
119
- end
120
- options.empty? ? cp(*args) : cp(*args, **options)
121
- end
122
-
123
- # Split a file path into individual directory names.
124
- #
125
- # Example:
126
- # split_all("a/b/c") => ['a', 'b', 'c']
127
- #
128
- def split_all(path)
129
- head, tail = File.split(path)
130
- return [tail] if head == "." || tail == "/"
131
- return [head, tail] if head == "/"
132
- return split_all(head) + [tail]
133
- end
134
- end