diy_rails 0.1.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/Gemfile +8 -0
- data/Gemfile.lock +21 -0
- data/README.md +29 -0
- data/Rakefile +4 -0
- data/lib/diy_rails/version.rb +5 -0
- data/lib/diy_rails.rb +8 -0
- data/sig/diy_rails.rbs +4 -0
- data/vendor/bundle/ruby/3.0.0/bin/rackup +29 -0
- data/vendor/bundle/ruby/3.0.0/bin/rake +29 -0
- 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 +708 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/CONTRIBUTING.md +136 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/MIT-LICENSE +20 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/README.rdoc +306 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/Rakefile +130 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/SPEC.rdoc +288 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/bin/rackup +5 -0
- 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 +150 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rack_logo.svg +164 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/contrib/rdoc.css +412 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/lobster.ru +6 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/protectedlobster.rb +16 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/example/protectedlobster.ru +10 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/abstract/handler.rb +39 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/abstract/request.rb +47 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/basic.rb +61 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/md5.rb +131 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/nonce.rb +54 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/params.rb +54 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/auth/digest/request.rb +43 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/body_proxy.rb +45 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/builder.rb +257 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/cascade.rb +68 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/chunked.rb +117 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/common_logger.rb +83 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/conditional_get.rb +83 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/config.rb +22 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/content_length.rb +38 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/content_type.rb +30 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/core_ext/regexp.rb +14 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/deflater.rb +144 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/directory.rb +199 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/etag.rb +77 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/events.rb +153 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/file.rb +7 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/files.rb +218 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/cgi.rb +59 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/fastcgi.rb +100 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/lsws.rb +61 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/scgi.rb +71 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/thin.rb +36 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler/webrick.rb +129 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/handler.rb +104 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/head.rb +25 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lint.rb +806 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lobster.rb +70 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/lock.rb +32 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/logger.rb +20 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/media_type.rb +43 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/method_override.rb +52 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/mime.rb +685 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/mock.rb +273 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/generator.rb +97 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/parser.rb +365 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart/uploaded_file.rb +41 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/multipart.rb +64 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/null_logger.rb +39 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/query_parser.rb +221 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/recursive.rb +64 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/reloader.rb +114 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/request.rb +659 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/response.rb +318 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/rewindable_input.rb +94 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/runtime.rb +34 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/sendfile.rb +162 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/server.rb +466 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/abstract/id.rb +523 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/cookie.rb +203 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/memcache.rb +10 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/session/pool.rb +85 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/show_exceptions.rb +390 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/show_status.rb +113 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/static.rb +187 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/tempfile_reaper.rb +22 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/urlmap.rb +97 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/utils.rb +616 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack/version.rb +29 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/lib/rack.rb +141 -0
- data/vendor/bundle/ruby/3.0.0/gems/rack-2.2.4/rack.gemspec +46 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/History.rdoc +2403 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/README.rdoc +155 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rakefile.rdoc +622 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake +27 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/application.rb +831 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/backtrace.rb +24 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/cpu_counter.rb +107 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/dsl_definition.rb +195 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_task.rb +54 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_utils.rb +134 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/file_utils_ext.rb +134 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/packagetask.rb +222 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task.rb +434 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_arguments.rb +109 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/task_manager.rb +331 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/testtask.rb +189 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/thread_pool.rb +163 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake/win32.rb +51 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/lib/rake.rb +71 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/rake.gemspec +100 -0
- data/vendor/bundle/ruby/3.0.0/specifications/rack-2.2.4.gemspec +41 -0
- data/vendor/bundle/ruby/3.0.0/specifications/rake-13.0.6.gemspec +26 -0
- metadata +210 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Rake
|
3
|
+
module Backtrace # :nodoc: all
|
4
|
+
SYS_KEYS = RbConfig::CONFIG.keys.grep(/(?:[a-z]prefix|libdir)\z/)
|
5
|
+
SYS_PATHS = RbConfig::CONFIG.values_at(*SYS_KEYS).uniq +
|
6
|
+
[ File.join(File.dirname(__FILE__), "..") ]
|
7
|
+
|
8
|
+
SUPPRESSED_PATHS = SYS_PATHS.
|
9
|
+
map { |s| s.tr("\\", "/") }.
|
10
|
+
map { |f| File.expand_path(f) }.
|
11
|
+
reject { |s| s.nil? || s =~ /^ *$/ }
|
12
|
+
SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|")
|
13
|
+
SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if
|
14
|
+
Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == "jruby"
|
15
|
+
|
16
|
+
SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i
|
17
|
+
|
18
|
+
def self.collapse(backtrace)
|
19
|
+
pattern = Rake.application.options.suppress_backtrace_pattern ||
|
20
|
+
SUPPRESS_PATTERN
|
21
|
+
backtrace.reject { |elem| elem =~ pattern }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and
|
3
|
+
# two rake tasks (:clean and :clobber).
|
4
|
+
#
|
5
|
+
# [:clean] Clean up the project by deleting scratch files and backup
|
6
|
+
# files. Add files to the CLEAN file list to have the :clean
|
7
|
+
# target handle them.
|
8
|
+
#
|
9
|
+
# [:clobber] Clobber all generated and non-source files in a project.
|
10
|
+
# The task depends on :clean, so all the clean files will
|
11
|
+
# be deleted as well as files in the CLOBBER file list.
|
12
|
+
# The intent of this task is to return a project to its
|
13
|
+
# pristine, just unpacked state.
|
14
|
+
|
15
|
+
require "rake"
|
16
|
+
|
17
|
+
# :stopdoc:
|
18
|
+
|
19
|
+
module Rake
|
20
|
+
module Cleaner
|
21
|
+
extend FileUtils
|
22
|
+
|
23
|
+
module_function
|
24
|
+
|
25
|
+
def cleanup_files(file_names)
|
26
|
+
file_names.each do |file_name|
|
27
|
+
cleanup(file_name)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def cleanup(file_name, **opts)
|
32
|
+
begin
|
33
|
+
opts = { verbose: Rake.application.options.trace }.merge(opts)
|
34
|
+
rm_r file_name, **opts
|
35
|
+
rescue StandardError => ex
|
36
|
+
puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def file_already_gone?(file_name)
|
41
|
+
return false if File.exist?(file_name)
|
42
|
+
|
43
|
+
path = file_name
|
44
|
+
prev = nil
|
45
|
+
|
46
|
+
while path = File.dirname(path)
|
47
|
+
return false if cant_be_deleted?(path)
|
48
|
+
break if [prev, "."].include?(path)
|
49
|
+
prev = path
|
50
|
+
end
|
51
|
+
true
|
52
|
+
end
|
53
|
+
private_class_method :file_already_gone?
|
54
|
+
|
55
|
+
def cant_be_deleted?(path_name)
|
56
|
+
File.exist?(path_name) &&
|
57
|
+
(!File.readable?(path_name) || !File.executable?(path_name))
|
58
|
+
end
|
59
|
+
private_class_method :cant_be_deleted?
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"]
|
64
|
+
CLEAN.clear_exclude.exclude { |fn|
|
65
|
+
fn.pathmap("%f").downcase == "core" && File.directory?(fn)
|
66
|
+
}
|
67
|
+
|
68
|
+
desc "Remove any temporary products."
|
69
|
+
task :clean do
|
70
|
+
Rake::Cleaner.cleanup_files(CLEAN)
|
71
|
+
end
|
72
|
+
|
73
|
+
CLOBBER = ::Rake::FileList.new
|
74
|
+
|
75
|
+
desc "Remove any generated files."
|
76
|
+
task clobber: [:clean] do
|
77
|
+
Rake::Cleaner.cleanup_files(CLOBBER)
|
78
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Rake
|
3
|
+
##
|
4
|
+
# Mixin for creating easily cloned objects.
|
5
|
+
|
6
|
+
module Cloneable # :nodoc:
|
7
|
+
# The hook that is invoked by 'clone' and 'dup' methods.
|
8
|
+
def initialize_copy(source)
|
9
|
+
super
|
10
|
+
source.instance_variables.each do |var|
|
11
|
+
src_value = source.instance_variable_get(var)
|
12
|
+
value = src_value.clone rescue src_value
|
13
|
+
instance_variable_set(var, value)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
# Based on a script at:
|
5
|
+
# http://stackoverflow.com/questions/891537/ruby-detect-number-of-cpus-installed
|
6
|
+
class CpuCounter # :nodoc: all
|
7
|
+
def self.count
|
8
|
+
new.count_with_default
|
9
|
+
end
|
10
|
+
|
11
|
+
def count_with_default(default=4)
|
12
|
+
count || default
|
13
|
+
rescue StandardError
|
14
|
+
default
|
15
|
+
end
|
16
|
+
|
17
|
+
begin
|
18
|
+
require "etc"
|
19
|
+
rescue LoadError
|
20
|
+
else
|
21
|
+
if Etc.respond_to?(:nprocessors)
|
22
|
+
def count
|
23
|
+
return Etc.nprocessors
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
unless Rake::CpuCounter.method_defined?(:count)
|
31
|
+
Rake::CpuCounter.class_eval <<-'end;', __FILE__, __LINE__+1
|
32
|
+
require 'rbconfig'
|
33
|
+
|
34
|
+
def count
|
35
|
+
if RUBY_PLATFORM == 'java'
|
36
|
+
count_via_java_runtime
|
37
|
+
else
|
38
|
+
case RbConfig::CONFIG['host_os']
|
39
|
+
when /linux/
|
40
|
+
count_via_cpuinfo
|
41
|
+
when /darwin|bsd/
|
42
|
+
count_via_sysctl
|
43
|
+
when /mswin|mingw/
|
44
|
+
count_via_win32
|
45
|
+
else
|
46
|
+
# Try everything
|
47
|
+
count_via_win32 ||
|
48
|
+
count_via_sysctl ||
|
49
|
+
count_via_cpuinfo
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def count_via_java_runtime
|
55
|
+
Java::Java.lang.Runtime.getRuntime.availableProcessors
|
56
|
+
rescue StandardError
|
57
|
+
nil
|
58
|
+
end
|
59
|
+
|
60
|
+
def count_via_win32
|
61
|
+
require 'win32ole'
|
62
|
+
wmi = WIN32OLE.connect("winmgmts://")
|
63
|
+
cpu = wmi.ExecQuery("select NumberOfCores from Win32_Processor") # TODO count hyper-threaded in this
|
64
|
+
cpu.to_enum.first.NumberOfCores
|
65
|
+
rescue StandardError, LoadError
|
66
|
+
nil
|
67
|
+
end
|
68
|
+
|
69
|
+
def count_via_cpuinfo
|
70
|
+
open('/proc/cpuinfo') { |f| f.readlines }.grep(/processor/).size
|
71
|
+
rescue StandardError
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
|
75
|
+
def count_via_sysctl
|
76
|
+
run 'sysctl', '-n', 'hw.ncpu'
|
77
|
+
end
|
78
|
+
|
79
|
+
def run(command, *args)
|
80
|
+
cmd = resolve_command(command)
|
81
|
+
if cmd
|
82
|
+
IO.popen [cmd, *args] do |io|
|
83
|
+
io.read.to_i
|
84
|
+
end
|
85
|
+
else
|
86
|
+
nil
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def resolve_command(command)
|
91
|
+
look_for_command("/usr/sbin", command) ||
|
92
|
+
look_for_command("/sbin", command) ||
|
93
|
+
in_path_command(command)
|
94
|
+
end
|
95
|
+
|
96
|
+
def look_for_command(dir, command)
|
97
|
+
path = File.join(dir, command)
|
98
|
+
File.exist?(path) ? path : nil
|
99
|
+
end
|
100
|
+
|
101
|
+
def in_path_command(command)
|
102
|
+
IO.popen ['which', command] do |io|
|
103
|
+
io.eof? ? nil : command
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end;
|
107
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
# Default Rakefile loader used by +import+.
|
5
|
+
class DefaultLoader
|
6
|
+
|
7
|
+
##
|
8
|
+
# Loads a rakefile into the current application from +fn+
|
9
|
+
|
10
|
+
def load(fn)
|
11
|
+
Rake.load_rakefile(File.expand_path(fn))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,195 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Rake DSL functions.
|
3
|
+
require "rake/file_utils_ext"
|
4
|
+
|
5
|
+
module Rake
|
6
|
+
|
7
|
+
##
|
8
|
+
# DSL is a module that provides #task, #desc, #namespace, etc. Use this
|
9
|
+
# when you'd like to use rake outside the top level scope.
|
10
|
+
#
|
11
|
+
# For a Rakefile you run from the command line this module is automatically
|
12
|
+
# included.
|
13
|
+
|
14
|
+
module DSL
|
15
|
+
|
16
|
+
#--
|
17
|
+
# Include the FileUtils file manipulation functions in the top
|
18
|
+
# level module, but mark them private so that they don't
|
19
|
+
# unintentionally define methods on other objects.
|
20
|
+
#++
|
21
|
+
|
22
|
+
include FileUtilsExt
|
23
|
+
private(*FileUtils.instance_methods(false))
|
24
|
+
private(*FileUtilsExt.instance_methods(false))
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# :call-seq:
|
29
|
+
# task(task_name)
|
30
|
+
# task(task_name: dependencies)
|
31
|
+
# task(task_name, arguments => dependencies)
|
32
|
+
#
|
33
|
+
# Declare a basic task. The +task_name+ is always the first argument. If
|
34
|
+
# the task name contains a ":" it is defined in that namespace.
|
35
|
+
#
|
36
|
+
# The +dependencies+ may be a single task name or an Array of task names.
|
37
|
+
# The +argument+ (a single name) or +arguments+ (an Array of names) define
|
38
|
+
# the arguments provided to the task.
|
39
|
+
#
|
40
|
+
# The task, argument and dependency names may be either symbols or
|
41
|
+
# strings.
|
42
|
+
#
|
43
|
+
# A task with a single dependency:
|
44
|
+
#
|
45
|
+
# task clobber: %w[clean] do
|
46
|
+
# rm_rf "html"
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# A task with an argument and a dependency:
|
50
|
+
#
|
51
|
+
# task :package, [:version] => :test do |t, args|
|
52
|
+
# # ...
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# To invoke this task from the command line:
|
56
|
+
#
|
57
|
+
# $ rake package[1.2.3]
|
58
|
+
#
|
59
|
+
def task(*args, &block) # :doc:
|
60
|
+
Rake::Task.define_task(*args, &block)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Declare a file task.
|
64
|
+
#
|
65
|
+
# Example:
|
66
|
+
# file "config.cfg" => ["config.template"] do
|
67
|
+
# open("config.cfg", "w") do |outfile|
|
68
|
+
# open("config.template") do |infile|
|
69
|
+
# while line = infile.gets
|
70
|
+
# outfile.puts line
|
71
|
+
# end
|
72
|
+
# end
|
73
|
+
# end
|
74
|
+
# end
|
75
|
+
#
|
76
|
+
def file(*args, &block) # :doc:
|
77
|
+
Rake::FileTask.define_task(*args, &block)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Declare a file creation task.
|
81
|
+
# (Mainly used for the directory command).
|
82
|
+
def file_create(*args, &block)
|
83
|
+
Rake::FileCreationTask.define_task(*args, &block)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Declare a set of files tasks to create the given directories on
|
87
|
+
# demand.
|
88
|
+
#
|
89
|
+
# Example:
|
90
|
+
# directory "testdata/doc"
|
91
|
+
#
|
92
|
+
def directory(*args, &block) # :doc:
|
93
|
+
result = file_create(*args, &block)
|
94
|
+
dir, _ = *Rake.application.resolve_args(args)
|
95
|
+
dir = Rake.from_pathname(dir)
|
96
|
+
Rake.each_dir_parent(dir) do |d|
|
97
|
+
file_create d do |t|
|
98
|
+
mkdir_p t.name unless File.exist?(t.name)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
result
|
102
|
+
end
|
103
|
+
|
104
|
+
# Declare a task that performs its prerequisites in
|
105
|
+
# parallel. Multitasks does *not* guarantee that its prerequisites
|
106
|
+
# will execute in any given order (which is obvious when you think
|
107
|
+
# about it)
|
108
|
+
#
|
109
|
+
# Example:
|
110
|
+
# multitask deploy: %w[deploy_gem deploy_rdoc]
|
111
|
+
#
|
112
|
+
def multitask(*args, &block) # :doc:
|
113
|
+
Rake::MultiTask.define_task(*args, &block)
|
114
|
+
end
|
115
|
+
|
116
|
+
# Create a new rake namespace and use it for evaluating the given
|
117
|
+
# block. Returns a NameSpace object that can be used to lookup
|
118
|
+
# tasks defined in the namespace.
|
119
|
+
#
|
120
|
+
# Example:
|
121
|
+
#
|
122
|
+
# ns = namespace "nested" do
|
123
|
+
# # the "nested:run" task
|
124
|
+
# task :run
|
125
|
+
# end
|
126
|
+
# task_run = ns[:run] # find :run in the given namespace.
|
127
|
+
#
|
128
|
+
# Tasks can also be defined in a namespace by using a ":" in the task
|
129
|
+
# name:
|
130
|
+
#
|
131
|
+
# task "nested:test" do
|
132
|
+
# # ...
|
133
|
+
# end
|
134
|
+
#
|
135
|
+
def namespace(name=nil, &block) # :doc:
|
136
|
+
name = name.to_s if name.kind_of?(Symbol)
|
137
|
+
name = name.to_str if name.respond_to?(:to_str)
|
138
|
+
unless name.kind_of?(String) || name.nil?
|
139
|
+
raise ArgumentError, "Expected a String or Symbol for a namespace name"
|
140
|
+
end
|
141
|
+
Rake.application.in_namespace(name, &block)
|
142
|
+
end
|
143
|
+
|
144
|
+
# Declare a rule for auto-tasks.
|
145
|
+
#
|
146
|
+
# Example:
|
147
|
+
# rule '.o' => '.c' do |t|
|
148
|
+
# sh 'cc', '-o', t.name, t.source
|
149
|
+
# end
|
150
|
+
#
|
151
|
+
def rule(*args, &block) # :doc:
|
152
|
+
Rake::Task.create_rule(*args, &block)
|
153
|
+
end
|
154
|
+
|
155
|
+
# Describes the next rake task. Duplicate descriptions are discarded.
|
156
|
+
# Descriptions are shown with <code>rake -T</code> (up to the first
|
157
|
+
# sentence) and <code>rake -D</code> (the entire description).
|
158
|
+
#
|
159
|
+
# Example:
|
160
|
+
# desc "Run the Unit Tests"
|
161
|
+
# task test: [:build]
|
162
|
+
# # ... run tests
|
163
|
+
# end
|
164
|
+
#
|
165
|
+
def desc(description) # :doc:
|
166
|
+
Rake.application.last_description = description
|
167
|
+
end
|
168
|
+
|
169
|
+
# Import the partial Rakefiles +fn+. Imported files are loaded
|
170
|
+
# _after_ the current file is completely loaded. This allows the
|
171
|
+
# import statement to appear anywhere in the importing file, and yet
|
172
|
+
# allowing the imported files to depend on objects defined in the
|
173
|
+
# importing file.
|
174
|
+
#
|
175
|
+
# A common use of the import statement is to include files
|
176
|
+
# containing dependency declarations.
|
177
|
+
#
|
178
|
+
# See also the --rakelibdir command line option.
|
179
|
+
#
|
180
|
+
# Example:
|
181
|
+
# import ".depend", "my_rules"
|
182
|
+
#
|
183
|
+
def import(*fns) # :doc:
|
184
|
+
fns.each do |fn|
|
185
|
+
Rake.application.add_import(fn)
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
extend FileUtilsExt
|
190
|
+
end
|
191
|
+
|
192
|
+
# Extend the main object with the DSL commands. This allows top-level
|
193
|
+
# calls to task, etc. to work from a Rakefile without polluting the
|
194
|
+
# object inheritance tree.
|
195
|
+
self.extend Rake::DSL
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Rake
|
3
|
+
|
4
|
+
# EarlyTime is a fake timestamp that occurs _before_ any other time value.
|
5
|
+
class EarlyTime
|
6
|
+
include Comparable
|
7
|
+
include Singleton
|
8
|
+
|
9
|
+
##
|
10
|
+
# The EarlyTime always comes before +other+!
|
11
|
+
|
12
|
+
def <=>(other)
|
13
|
+
-1
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s # :nodoc:
|
17
|
+
"<EARLY TIME>"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
EARLY = EarlyTime.instance
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Module
|
3
|
+
# Check for an existing method in the current class before extending. If
|
4
|
+
# the method already exists, then a warning is printed and the extension is
|
5
|
+
# not added. Otherwise the block is yielded and any definitions in the
|
6
|
+
# block will take effect.
|
7
|
+
#
|
8
|
+
# Usage:
|
9
|
+
#
|
10
|
+
# class String
|
11
|
+
# rake_extension("xyz") do
|
12
|
+
# def xyz
|
13
|
+
# ...
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
def rake_extension(method) # :nodoc:
|
19
|
+
if method_defined?(method)
|
20
|
+
$stderr.puts "WARNING: Possible conflict with Rake extension: " +
|
21
|
+
"#{self}##{method} already exists"
|
22
|
+
else
|
23
|
+
yield
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,176 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "rake/ext/core"
|
3
|
+
|
4
|
+
class String
|
5
|
+
|
6
|
+
rake_extension("ext") do
|
7
|
+
# Replace the file extension with +newext+. If there is no extension on
|
8
|
+
# the string, append the new extension to the end. If the new extension
|
9
|
+
# is not given, or is the empty string, remove any existing extension.
|
10
|
+
#
|
11
|
+
# +ext+ is a user added method for the String class.
|
12
|
+
#
|
13
|
+
# This String extension comes from Rake
|
14
|
+
def ext(newext="")
|
15
|
+
return self.dup if [".", ".."].include? self
|
16
|
+
if newext != ""
|
17
|
+
newext = "." + newext unless newext =~ /^\./
|
18
|
+
end
|
19
|
+
self.chomp(File.extname(self)) << newext
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
rake_extension("pathmap") do
|
24
|
+
# Explode a path into individual components. Used by +pathmap+.
|
25
|
+
#
|
26
|
+
# This String extension comes from Rake
|
27
|
+
def pathmap_explode
|
28
|
+
head, tail = File.split(self)
|
29
|
+
return [self] if head == self
|
30
|
+
return [tail] if head == "." || tail == "/"
|
31
|
+
return [head, tail] if head == "/"
|
32
|
+
return head.pathmap_explode + [tail]
|
33
|
+
end
|
34
|
+
protected :pathmap_explode
|
35
|
+
|
36
|
+
# Extract a partial path from the path. Include +n+ directories from the
|
37
|
+
# front end (left hand side) if +n+ is positive. Include |+n+|
|
38
|
+
# directories from the back end (right hand side) if +n+ is negative.
|
39
|
+
#
|
40
|
+
# This String extension comes from Rake
|
41
|
+
def pathmap_partial(n)
|
42
|
+
dirs = File.dirname(self).pathmap_explode
|
43
|
+
partial_dirs =
|
44
|
+
if n > 0
|
45
|
+
dirs[0...n]
|
46
|
+
elsif n < 0
|
47
|
+
dirs.reverse[0...-n].reverse
|
48
|
+
else
|
49
|
+
"."
|
50
|
+
end
|
51
|
+
File.join(partial_dirs)
|
52
|
+
end
|
53
|
+
protected :pathmap_partial
|
54
|
+
|
55
|
+
# Perform the pathmap replacement operations on the given path. The
|
56
|
+
# patterns take the form 'pat1,rep1;pat2,rep2...'.
|
57
|
+
#
|
58
|
+
# This String extension comes from Rake
|
59
|
+
def pathmap_replace(patterns, &block)
|
60
|
+
result = self
|
61
|
+
patterns.split(";").each do |pair|
|
62
|
+
pattern, replacement = pair.split(",")
|
63
|
+
pattern = Regexp.new(pattern)
|
64
|
+
if replacement == "*" && block_given?
|
65
|
+
result = result.sub(pattern, &block)
|
66
|
+
elsif replacement
|
67
|
+
result = result.sub(pattern, replacement)
|
68
|
+
else
|
69
|
+
result = result.sub(pattern, "")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
result
|
73
|
+
end
|
74
|
+
protected :pathmap_replace
|
75
|
+
|
76
|
+
# Map the path according to the given specification. The specification
|
77
|
+
# controls the details of the mapping. The following special patterns are
|
78
|
+
# recognized:
|
79
|
+
#
|
80
|
+
# <tt>%p</tt> :: The complete path.
|
81
|
+
# <tt>%f</tt> :: The base file name of the path, with its file extension,
|
82
|
+
# but without any directories.
|
83
|
+
# <tt>%n</tt> :: The file name of the path without its file extension.
|
84
|
+
# <tt>%d</tt> :: The directory list of the path.
|
85
|
+
# <tt>%x</tt> :: The file extension of the path. An empty string if there
|
86
|
+
# is no extension.
|
87
|
+
# <tt>%X</tt> :: Everything *but* the file extension.
|
88
|
+
# <tt>%s</tt> :: The alternate file separator if defined, otherwise use #
|
89
|
+
# the standard file separator.
|
90
|
+
# <tt>%%</tt> :: A percent sign.
|
91
|
+
#
|
92
|
+
# The <tt>%d</tt> specifier can also have a numeric prefix (e.g. '%2d').
|
93
|
+
# If the number is positive, only return (up to) +n+ directories in the
|
94
|
+
# path, starting from the left hand side. If +n+ is negative, return (up
|
95
|
+
# to) +n+ directories from the right hand side of the path.
|
96
|
+
#
|
97
|
+
# Examples:
|
98
|
+
#
|
99
|
+
# 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b'
|
100
|
+
# 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d'
|
101
|
+
#
|
102
|
+
# Also the <tt>%d</tt>, <tt>%p</tt>, <tt>%f</tt>, <tt>%n</tt>,
|
103
|
+
# <tt>%x</tt>, and <tt>%X</tt> operators can take a pattern/replacement
|
104
|
+
# argument to perform simple string substitutions on a particular part of
|
105
|
+
# the path. The pattern and replacement are separated by a comma and are
|
106
|
+
# enclosed by curly braces. The replacement spec comes after the %
|
107
|
+
# character but before the operator letter. (e.g. "%{old,new}d").
|
108
|
+
# Multiple replacement specs should be separated by semi-colons (e.g.
|
109
|
+
# "%{old,new;src,bin}d").
|
110
|
+
#
|
111
|
+
# Regular expressions may be used for the pattern, and back refs may be
|
112
|
+
# used in the replacement text. Curly braces, commas and semi-colons are
|
113
|
+
# excluded from both the pattern and replacement text (let's keep parsing
|
114
|
+
# reasonable).
|
115
|
+
#
|
116
|
+
# For example:
|
117
|
+
#
|
118
|
+
# "src/org/onestepback/proj/A.java".pathmap("%{^src,class}X.class")
|
119
|
+
#
|
120
|
+
# returns:
|
121
|
+
#
|
122
|
+
# "class/org/onestepback/proj/A.class"
|
123
|
+
#
|
124
|
+
# If the replacement text is '*', then a block may be provided to perform
|
125
|
+
# some arbitrary calculation for the replacement.
|
126
|
+
#
|
127
|
+
# For example:
|
128
|
+
#
|
129
|
+
# "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext|
|
130
|
+
# ext.downcase
|
131
|
+
# }
|
132
|
+
#
|
133
|
+
# Returns:
|
134
|
+
#
|
135
|
+
# "/path/to/file.txt"
|
136
|
+
#
|
137
|
+
# This String extension comes from Rake
|
138
|
+
def pathmap(spec=nil, &block)
|
139
|
+
return self if spec.nil?
|
140
|
+
result = "".dup
|
141
|
+
spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag|
|
142
|
+
case frag
|
143
|
+
when "%f"
|
144
|
+
result << File.basename(self)
|
145
|
+
when "%n"
|
146
|
+
result << File.basename(self).ext
|
147
|
+
when "%d"
|
148
|
+
result << File.dirname(self)
|
149
|
+
when "%x"
|
150
|
+
result << File.extname(self)
|
151
|
+
when "%X"
|
152
|
+
result << self.ext
|
153
|
+
when "%p"
|
154
|
+
result << self
|
155
|
+
when "%s"
|
156
|
+
result << (File::ALT_SEPARATOR || File::SEPARATOR)
|
157
|
+
when "%-"
|
158
|
+
# do nothing
|
159
|
+
when "%%"
|
160
|
+
result << "%"
|
161
|
+
when /%(-?\d+)d/
|
162
|
+
result << pathmap_partial($1.to_i)
|
163
|
+
when /^%\{([^}]*)\}(\d*[dpfnxX])/
|
164
|
+
patterns, operator = $1, $2
|
165
|
+
result << pathmap("%" + operator).pathmap_replace(patterns, &block)
|
166
|
+
when /^%/
|
167
|
+
fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'"
|
168
|
+
else
|
169
|
+
result << frag
|
170
|
+
end
|
171
|
+
end
|
172
|
+
result
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "rake/file_task"
|
3
|
+
require "rake/early_time"
|
4
|
+
|
5
|
+
module Rake
|
6
|
+
|
7
|
+
# A FileCreationTask is a file task that when used as a dependency will be
|
8
|
+
# needed if and only if the file has not been created. Once created, it is
|
9
|
+
# not re-triggered if any of its dependencies are newer, nor does trigger
|
10
|
+
# any rebuilds of tasks that depend on it whenever it is updated.
|
11
|
+
#
|
12
|
+
class FileCreationTask < FileTask
|
13
|
+
# Is this file task needed? Yes if it doesn't exist.
|
14
|
+
def needed?
|
15
|
+
!File.exist?(name)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Time stamp for file creation task. This time stamp is earlier
|
19
|
+
# than any other time stamp.
|
20
|
+
def timestamp
|
21
|
+
Rake::EARLY
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|