diy_rails 0.1.0 → 0.2.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 +4 -4
- data/Gemfile.lock +5 -2
- data/lib/diy_rails/array.rb +5 -0
- data/lib/diy_rails/routing.rb +10 -0
- data/lib/diy_rails/version.rb +1 -1
- data/lib/diy_rails.rb +25 -3
- metadata +28 -151
- data/vendor/bundle/ruby/3.0.0/bin/rackup +0 -29
- data/vendor/bundle/ruby/3.0.0/bin/rake +0 -29
- data/vendor/bundle/ruby/3.0.0/cache/rack-2.2.4.gem +0 -0
- data/vendor/bundle/ruby/3.0.0/cache/rake-13.0.6.gem +0 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/CHANGELOG.md +0 -708
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/CONTRIBUTING.md +0 -136
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/MIT-LICENSE +0 -20
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/README.rdoc +0 -306
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/Rakefile +0 -130
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/SPEC.rdoc +0 -288
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/bin/rackup +0 -5
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rack.png +0 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rack.svg +0 -150
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rack_logo.svg +0 -164
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rdoc.css +0 -412
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/lobster.ru +0 -6
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/protectedlobster.rb +0 -16
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/protectedlobster.ru +0 -10
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/abstract/handler.rb +0 -39
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/abstract/request.rb +0 -47
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/basic.rb +0 -61
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/md5.rb +0 -131
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/nonce.rb +0 -54
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/params.rb +0 -54
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/request.rb +0 -43
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/body_proxy.rb +0 -45
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/builder.rb +0 -257
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/cascade.rb +0 -68
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/chunked.rb +0 -117
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/common_logger.rb +0 -83
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/conditional_get.rb +0 -83
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/config.rb +0 -22
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/content_length.rb +0 -38
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/content_type.rb +0 -30
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/core_ext/regexp.rb +0 -14
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/deflater.rb +0 -144
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/directory.rb +0 -199
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/etag.rb +0 -77
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/events.rb +0 -153
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/file.rb +0 -7
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/files.rb +0 -218
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/cgi.rb +0 -59
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/fastcgi.rb +0 -100
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/lsws.rb +0 -61
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/scgi.rb +0 -71
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/thin.rb +0 -36
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/webrick.rb +0 -129
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler.rb +0 -104
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/head.rb +0 -25
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lint.rb +0 -806
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lobster.rb +0 -70
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lock.rb +0 -32
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/logger.rb +0 -20
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/media_type.rb +0 -43
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/method_override.rb +0 -52
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/mime.rb +0 -685
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/mock.rb +0 -273
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/generator.rb +0 -97
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/parser.rb +0 -365
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/uploaded_file.rb +0 -41
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart.rb +0 -64
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/null_logger.rb +0 -39
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/query_parser.rb +0 -221
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/recursive.rb +0 -64
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/reloader.rb +0 -114
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/request.rb +0 -659
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/response.rb +0 -318
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/rewindable_input.rb +0 -94
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/runtime.rb +0 -34
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/sendfile.rb +0 -162
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb +0 -466
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/abstract/id.rb +0 -523
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/cookie.rb +0 -203
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/memcache.rb +0 -10
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/pool.rb +0 -85
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/show_exceptions.rb +0 -390
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/show_status.rb +0 -113
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/static.rb +0 -187
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/tempfile_reaper.rb +0 -22
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/urlmap.rb +0 -97
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/utils.rb +0 -616
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/version.rb +0 -29
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack.rb +0 -141
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/rack.gemspec +0 -46
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/History.rdoc +0 -2403
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/MIT-LICENSE +0 -21
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/README.rdoc +0 -155
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/command_line_usage.rdoc +0 -158
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/Rakefile1 +0 -38
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/Rakefile2 +0 -35
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/a.c +0 -6
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/b.c +0 -6
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/main.c +0 -11
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/glossary.rdoc +0 -42
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/jamis.rb +0 -592
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/proto_rake.rdoc +0 -127
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rake.1 +0 -156
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rakefile.rdoc +0 -622
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rational.rdoc +0 -151
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake +0 -27
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/application.rb +0 -831
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/backtrace.rb +0 -24
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/clean.rb +0 -78
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/cloneable.rb +0 -17
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/cpu_counter.rb +0 -107
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/default_loader.rb +0 -15
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb +0 -195
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/early_time.rb +0 -22
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/ext/core.rb +0 -26
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/ext/string.rb +0 -176
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_creation_task.rb +0 -25
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_list.rb +0 -435
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_task.rb +0 -54
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_utils.rb +0 -134
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_utils_ext.rb +0 -134
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/invocation_chain.rb +0 -57
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/invocation_exception_mixin.rb +0 -17
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/late_time.rb +0 -18
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/linked_list.rb +0 -112
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/loaders/makefile.rb +0 -54
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/multi_task.rb +0 -14
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/name_space.rb +0 -38
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/packagetask.rb +0 -222
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/phony.rb +0 -16
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/private_reader.rb +0 -21
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/promise.rb +0 -100
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/pseudo_status.rb +0 -30
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rake_module.rb +0 -67
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb +0 -27
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rule_recursion_overflow_error.rb +0 -20
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/scope.rb +0 -43
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task.rb +0 -434
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_argument_error.rb +0 -8
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_arguments.rb +0 -109
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_manager.rb +0 -331
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/tasklib.rb +0 -12
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/testtask.rb +0 -189
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/thread_history_display.rb +0 -49
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/thread_pool.rb +0 -163
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/trace_output.rb +0 -23
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/version.rb +0 -10
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/win32.rb +0 -51
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake.rb +0 -71
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/rake.gemspec +0 -100
- data/vendor/bundle/ruby/3.0.0/specifications/rack-2.2.4.gemspec +0 -41
- 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
|