summaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
Diffstat (limited to 'libexec')
-rwxr-xr-xlibexec/bundle31
-rwxr-xr-xlibexec/bundler2
-rwxr-xr-xlibexec/erb184
-rwxr-xr-xlibexec/irb11
-rwxr-xr-xlibexec/racc306
-rwxr-xr-xlibexec/rdoc44
-rwxr-xr-xlibexec/ri12
-rwxr-xr-xlibexec/syntax_suggest7
8 files changed, 197 insertions, 400 deletions
diff --git a/libexec/bundle b/libexec/bundle
index 1168e5a361..92387bc2cf 100755
--- a/libexec/bundle
+++ b/libexec/bundle
@@ -10,41 +10,20 @@ end
base_path = File.expand_path("../lib", __dir__)
if File.exist?(base_path)
- require_relative "../lib/bundler"
-else
- require "bundler"
+ $LOAD_PATH.unshift(base_path)
end
-# Workaround for non-activated bundler spec due to missing https://github.com/rubygems/rubygems/commit/4e306d7bcdee924b8d80ca9db6125aa59ee4e5a3
-gem "bundler", Bundler::VERSION if Gem.rubygems_version < Gem::Version.new("2.6.2")
-
-# Check if an older version of bundler is installed
-$LOAD_PATH.each do |path|
- next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
- err = String.new
- err << "Looks like you have a version of bundler that's older than 0.9.\n"
- err << "Please remove your old versions.\n"
- err << "An easy way to do this is by running `gem cleanup bundler`."
- abort(err)
-end
+require "bundler"
-if File.exist?(base_path)
- require_relative "../lib/bundler/friendly_errors"
-else
- require "bundler/friendly_errors"
-end
+require "bundler/friendly_errors"
Bundler.with_friendly_errors do
- if File.exist?(base_path)
- require_relative "../lib/bundler/cli"
- else
- require "bundler/cli"
- end
+ require "bundler/cli"
# Allow any command to use --help flag to show help for that command
help_flags = %w[--help -h]
help_flag_used = ARGV.any? {|a| help_flags.include? a }
args = help_flag_used ? Bundler::CLI.reformatted_help_args(ARGV) : ARGV
- Bundler::CLI.start(args, :debug => true)
+ Bundler::CLI.start(args, debug: true)
end
diff --git a/libexec/bundler b/libexec/bundler
index d9131fe834..a6826a8c89 100755
--- a/libexec/bundler
+++ b/libexec/bundler
@@ -1,4 +1,4 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
-load File.expand_path("../bundle", __FILE__)
+load File.expand_path("bundle", __dir__)
diff --git a/libexec/erb b/libexec/erb
new file mode 100755
index 0000000000..de7d5888c3
--- /dev/null
+++ b/libexec/erb
@@ -0,0 +1,184 @@
+#!/usr/bin/env ruby
+# Tiny eRuby --- ERB2
+# Copyright (c) 1999-2000,2002 Masatoshi SEKI
+# You can redistribute it and/or modify it under the same terms as Ruby.
+
+require 'erb'
+
+class ERB
+ module Main
+ def ARGV.switch
+ return nil if self.empty?
+ arg = self.shift
+ return nil if arg == '--'
+ case arg
+ when /\A-(.)(.*)/
+ if $1 == '-'
+ arg, @maybe_arg = arg.split(/=/, 2)
+ return arg
+ end
+ raise 'unknown switch "-"' if $2[0] == ?- and $1 != 'T'
+ if $2.size > 0
+ self.unshift "-#{$2}"
+ @maybe_arg = $2
+ else
+ @maybe_arg = nil
+ end
+ "-#{$1}"
+ when /\A(\w+)=/
+ arg
+ else
+ self.unshift arg
+ nil
+ end
+ end
+
+ def ARGV.req_arg
+ (@maybe_arg || self.shift || raise('missing argument')).tap {
+ @maybe_arg = nil
+ }
+ end
+
+ def trim_mode_opt(trim_mode, disable_percent)
+ return trim_mode if disable_percent
+ case trim_mode
+ when 0
+ return '%'
+ when 1
+ return '%>'
+ when 2
+ return '%<>'
+ when '-'
+ return '%-'
+ end
+ end
+ module_function :trim_mode_opt
+
+ def run(factory=ERB)
+ trim_mode = 0
+ disable_percent = false
+ variables = {}
+ begin
+ while switch = ARGV.switch
+ case switch
+ when '-x' # ruby source
+ output = true
+ when '-n' # line number
+ number = true
+ when '-v' # verbose
+ $VERBOSE = true
+ when '--version' # version
+ STDERR.puts factory.version
+ exit
+ when '-d', '--debug' # debug
+ $DEBUG = true
+ when '-r' # require
+ require ARGV.req_arg
+ when '-T' # trim mode
+ arg = ARGV.req_arg
+ if arg == '-'
+ trim_mode = arg
+ next
+ end
+ raise "invalid trim mode #{arg.dump}" unless arg =~ /\A[0-2]\z/
+ trim_mode = arg.to_i
+ when '-E', '--encoding'
+ arg = ARGV.req_arg
+ set_encoding(*arg.split(/:/, 2))
+ when '-U'
+ set_encoding(Encoding::UTF_8, Encoding::UTF_8)
+ when '-P'
+ disable_percent = true
+ when '--help'
+ raise ''
+ when /\A-/
+ raise "Unknown switch: #{switch.dump}"
+ else
+ var, val = *switch.split('=', 2)
+ (variables ||= {})[var] = val
+ end
+ end
+ rescue # usage
+ message = $!.to_s
+ STDERR.puts message unless message.empty?
+ STDERR.puts 'Usage:'
+ STDERR.puts " #{File.basename($0)} [options] [filepaths]"
+ STDERR.puts <<EOU
+
+Options:
+ -d --debug Set $DEBUG to enable debugging.
+ -E ex[:in] --encoding ex[:in]
+ Set default external and internal encodings.
+ -h --help Print this text and exit.
+ -n Print generated Ruby source code with line numbers;
+ ignored if given without option -x.
+ -P Disable execution tag shorthand (for lines beginning with '%').
+ -r library Load the named library.
+ -T trim_mode Specify trim_mode:
+ '0' means '%'; '1' means '%>'; '2' means '<>'; '-' means '%-'.
+ -U Set default encoding to UTF-8.
+ -v Set $VERBOSE to enable debugging,
+ --version Print ERB version string and exit.
+ -x Print generated Ruby source code.
+ -- Treat all following words as filepaths (not options).
+ name=value Set the variable named name to the given string value.
+
+Filepaths:
+ The erb program reads the text from all files at the filepaths as a single ERB template:
+ plain text, possibly with embedded ERB tags;
+ filepaths may be repeated.
+
+ The pseudo-filepath '-' (hyphen character) specifies the standard input.
+
+ If no filepaths are given, the sole input is the standard input.
+
+See details and examples at https://docs.ruby-lang.org/en/master/erb_executable_md.html
+EOU
+ exit 1
+ end
+
+ $<.set_encoding(Encoding::UTF_8, nil)
+ src = $<.read
+ filename = $FILENAME
+ exit 2 unless src
+ trim = trim_mode_opt(trim_mode, disable_percent)
+ erb = factory.new(src, trim_mode: trim)
+ erb.filename = filename
+ if output
+ if number
+ erb.src.each_line.with_index do |line, l|
+ puts "%3d %s"%[l+1, line]
+ end
+ else
+ puts erb.src
+ end
+ else
+ bind = TOPLEVEL_BINDING
+ if variables
+ enc = erb.encoding
+ for var, val in variables do
+ val = val.encode(enc) if val
+ bind.local_variable_set(var, val)
+ end
+ end
+ erb.run(bind)
+ end
+ end
+ module_function :run
+
+ def set_encoding(extern, intern = nil)
+ verbose, $VERBOSE = $VERBOSE, nil
+ Encoding.default_external = extern unless extern.nil? || extern == ""
+ Encoding.default_internal = intern unless intern.nil? || intern == ""
+ [$stdin, $stdout, $stderr].each do |io|
+ io.set_encoding(extern, intern)
+ end
+ ensure
+ $VERBOSE = verbose
+ end
+ module_function :set_encoding
+ class << self; private :set_encoding; end
+ end
+end
+
+ERB::Main.run
diff --git a/libexec/irb b/libexec/irb
deleted file mode 100755
index c64ee85fbd..0000000000
--- a/libexec/irb
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env ruby
-#
-# irb.rb - interactive ruby
-# $Release Version: 0.9.6 $
-# $Revision$
-# by Keiju ISHITSUKA(keiju@ruby-lang.org)
-#
-
-require "irb"
-
-IRB.start(__FILE__)
diff --git a/libexec/racc b/libexec/racc
deleted file mode 100755
index 70e1032bfc..0000000000
--- a/libexec/racc
+++ /dev/null
@@ -1,306 +0,0 @@
-#!/usr/bin/env ruby
-#
-# $Id$
-#
-# Copyright (c) 1999-2006 Minero Aoki
-#
-# This program is free software.
-# You can distribute/modify this program under the same terms of ruby.
-# see the file "COPYING".
-
-require 'racc/static'
-require 'optparse'
-
-def main
- output = nil
- debug_parser = false
- make_logfile = false
- logfilename = nil
- make_executable = false
- rubypath = nil
- embed_runtime = false
- debug_flags = Racc::DebugFlags.new
- line_convert = true
- line_convert_all = false
- omit_action_call = true
- superclass = nil
- check_only = false
- verbose = false
- profiler = RaccProfiler.new(false)
-
- parser = OptionParser.new
- parser.banner = "Usage: #{File.basename($0)} [options] <input>"
- parser.on('-o', '--output-file=PATH',
- 'output file name [<input>.tab.rb]') {|name|
- output = name
- }
- parser.on('-t', '--debug', 'Outputs debugging parser.') {|fl|
- debug_parser = fl
- }
- parser.on('-g', 'Equivalent to -t (obsolete).') {|fl|
- $stderr.puts "racc -g is obsolete. Use racc -t instead." if $VERBOSE
- debug_parser = fl
- }
- parser.on('-v', '--verbose',
- 'Creates <filename>.output log file.') {|fl|
- make_logfile = fl
- }
- parser.on('-O', '--log-file=PATH',
- 'Log file name [<input>.output]') {|path|
- make_logfile = true
- logfilename = path
- }
- parser.on('-e', '--executable [RUBYPATH]', 'Makes executable parser.') {|path|
- executable = true
- rubypath = (path == 'ruby' ? nil : path)
- }
- parser.on('-E', '--embedded', "Embeds Racc runtime in output.") {
- embed_runtime = true
- }
- parser.on('--line-convert-all', 'Converts line numbers of user codes.') {
- line_convert_all = true
- }
- parser.on('-l', '--no-line-convert', 'Never convert line numbers.') {
- line_convert = false
- line_convert_all = false
- }
- parser.on('-a', '--no-omit-actions', 'Never omit actions.') {
- omit_action_call = false
- }
- parser.on('--superclass=CLASSNAME',
- 'Uses CLASSNAME instead of Racc::Parser.') {|name|
- superclass = name
- }
- parser.on('--runtime=FEATURE',
- "Uses FEATURE instead of 'racc/parser'") {|feat|
- runtime = feature
- }
- parser.on('-C', '--check-only', 'Checks syntax and quit immediately.') {|fl|
- check_only = fl
- }
- parser.on('-S', '--output-status', 'Outputs internal status time to time.') {
- verbose = true
- }
- parser.on('-P', 'Enables generator profile') {
- profiler = RaccProfiler.new(true)
- }
- parser.on('-D flags', "Flags for Racc debugging (do not use).") {|flags|
- debug_flags = Racc::DebugFlags.parse_option_string(flags)
- }
- #parser.on('--no-extensions', 'Run Racc without any Ruby extension.') {
- # Racc.const_set :Racc_No_Extensions, true
- #}
- parser.on('--version', 'Prints version and quit.') {
- puts "racc version #{Racc::Version}"
- exit 0
- }
- parser.on('--runtime-version', 'Prints runtime version and quit.') {
- printf "racc runtime version %s (rev. %s); %s\n",
- Racc::Parser::Racc_Runtime_Version,
- Racc::Parser::Racc_Runtime_Revision,
- if Racc::Parser.racc_runtime_type == 'ruby'
- sprintf('ruby core version %s (rev. %s)',
- Racc::Parser::Racc_Runtime_Core_Version_R,
- Racc::Parser::Racc_Runtime_Core_Revision_R)
- else
- sprintf('c core version %s (rev. %s)',
- Racc::Parser::Racc_Runtime_Core_Version_C,
- Racc::Parser::Racc_Runtime_Core_Revision_C)
- end
- exit 0
- }
- parser.on('--copyright', 'Prints copyright and quit.') {
- puts Racc::Copyright
- exit 0
- }
- parser.on('--help', 'Prints this message and quit.') {
- puts parser.help
- exit 1
- }
- begin
- parser.parse!
- rescue OptionParser::ParseError => err
- $stderr.puts err.message
- $stderr.puts parser.help
- exit 1
- end
- if ARGV.empty?
- $stderr.puts 'no input'
- exit 1
- end
- if ARGV.size > 1
- $stderr.puts 'too many input'
- exit 1
- end
- input = ARGV[0]
-
- begin
- $stderr.puts 'Parsing grammar file...' if verbose
- result = profiler.section('parse') {
- parser = Racc::GrammarFileParser.new(debug_flags)
- parser.parse(File.read(input), File.basename(input))
- }
- if check_only
- $stderr.puts 'syntax ok'
- exit 0
- end
-
- $stderr.puts 'Generating LALR states...' if verbose
- states = profiler.section('nfa') {
- Racc::States.new(result.grammar).nfa
- }
-
- $stderr.puts "Resolving #{states.size} states..." if verbose
- profiler.section('dfa') {
- states.dfa
- }
-
- $stderr.puts 'Creating parser file...' if verbose
- params = result.params.dup
- # Overwrites parameters given by a grammar file with command line options.
- params.superclass = superclass if superclass
- params.omit_action_call = true if omit_action_call
- # From command line option
- if make_executable
- params.make_executable = true
- params.interpreter = rubypath
- end
- params.debug_parser = debug_parser
- params.convert_line = line_convert
- params.convert_line_all = line_convert_all
- params.embed_runtime = embed_runtime
- profiler.section('generation') {
- generator = Racc::ParserFileGenerator.new(states, params)
- generator.generate_parser_file(output || make_filename(input, '.tab.rb'))
- }
-
- if make_logfile
- profiler.section('logging') {
- $stderr.puts 'Creating log file...' if verbose
- logfilename ||= make_filename(output || File.basename(input), '.output')
- File.open(logfilename, 'w') {|f|
- Racc::LogFileGenerator.new(states, debug_flags).output f
- }
- }
- end
- if debug_flags.status_logging
- log_useless states.grammar
- log_conflict states
- else
- report_useless states.grammar
- report_conflict states
- end
-
- profiler.report
- rescue Racc::Error, Errno::ENOENT, Errno::EPERM => err
- raise if $DEBUG or debug_flags.any?
- lineno = err.message.slice(/\A\d+:/).to_s
- $stderr.puts "#{File.basename $0}: #{input}:#{lineno} #{err.message.strip}"
- exit 1
- end
-end
-
-def make_filename(path, suffix)
- path.sub(/(?:\..*?)?\z/, suffix)
-end
-
-def report_conflict(states)
- if states.should_report_srconflict?
- $stderr.puts "#{states.n_srconflicts} shift/reduce conflicts"
- end
- if states.rrconflict_exist?
- $stderr.puts "#{states.n_rrconflicts} reduce/reduce conflicts"
- end
-end
-
-def log_conflict(states)
- logging('w') {|f|
- f.puts "ex#{states.grammar.n_expected_srconflicts}"
- if states.should_report_srconflict?
- f.puts "sr#{states.n_srconflicts}"
- end
- if states.rrconflict_exist?
- f.puts "rr#{states.n_rrconflicts}"
- end
- }
-end
-
-def report_useless(grammar)
- if grammar.useless_nonterminal_exist?
- $stderr.puts "#{grammar.n_useless_nonterminals} useless nonterminals"
- end
- if grammar.useless_rule_exist?
- $stderr.puts "#{grammar.n_useless_rules} useless rules"
- end
- if grammar.start.useless?
- $stderr.puts 'fatal: start symbol does not derive any sentence'
- end
-end
-
-def log_useless(grammar)
- logging('a') {|f|
- if grammar.useless_nonterminal_exist?
- f.puts "un#{grammar.n_useless_nonterminals}"
- end
- if grammar.useless_rule_exist?
- f.puts "ur#{grammar.n_useless_rules}"
- end
- }
-end
-
-def logging(mode, &block)
- File.open("log/#{File.basename(ARGV[0])}", mode, &block)
-end
-
-class RaccProfiler
- def initialize(really)
- @really = really
- @log = []
- unless ::Process.respond_to?(:times)
- # Ruby 1.6
- @class = ::Time
- else
- @class = ::Process
- end
- end
-
- def section(name)
- if @really
- t1 = @class.times.utime
- result = yield
- t2 = @class.times.utime
- @log.push [name, t2 - t1]
- result
- else
- yield
- end
- end
-
- def report
- return unless @really
- f = $stderr
- total = cumulative_time()
- f.puts '--task-----------+--sec------+---%-'
- @log.each do |name, time|
- f.printf "%-19s %s %3d%%\n", name, pjust(time,4,4), (time/total*100).to_i
- end
- f.puts '-----------------+-----------+-----'
- f.printf "%-20s%s\n", 'total', pjust(total,4,4)
- end
-
- private
-
- def cumulative_time
- t = @log.inject(0) {|sum, (name, time)| sum + time }
- t == 0 ? 0.01 : t
- end
-
- def pjust(num, i, j)
- m = /(\d+)(\.\d+)?/.match(num.to_s)
- str = m[1].rjust(i)
- str.concat m[2].ljust(j+1)[0,j+1] if m[2]
- str
- end
-end
-
-main
diff --git a/libexec/rdoc b/libexec/rdoc
deleted file mode 100755
index aaa23292df..0000000000
--- a/libexec/rdoc
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env ruby
-#
-# RDoc: Documentation tool for source code
-# (see lib/rdoc/rdoc.rb for more information)
-#
-# Copyright (c) 2003 Dave Thomas
-# Released under the same terms as Ruby
-
-begin
- gem 'rdoc'
-rescue NameError => e # --disable-gems
- raise unless e.name == :gem
-rescue Gem::LoadError
-end
-
-require 'rdoc/rdoc'
-
-begin
- r = RDoc::RDoc.new
- r.document ARGV
-rescue Errno::ENOSPC
- $stderr.puts 'Ran out of space creating documentation'
- $stderr.puts
- $stderr.puts 'Please free up some space and try again'
-rescue SystemExit
- raise
-rescue Exception => e
- if $DEBUG_RDOC then
- $stderr.puts e.message
- $stderr.puts "#{e.backtrace.join "\n\t"}"
- $stderr.puts
- elsif Interrupt === e then
- $stderr.puts
- $stderr.puts 'Interrupted'
- else
- $stderr.puts "uh-oh! RDoc had a problem:"
- $stderr.puts e.message
- $stderr.puts
- $stderr.puts "run with --debug for full backtrace"
- end
-
- exit 1
-end
-
diff --git a/libexec/ri b/libexec/ri
deleted file mode 100755
index 7fbed0c099..0000000000
--- a/libexec/ri
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env ruby
-
-begin
- gem 'rdoc'
-rescue NameError => e # --disable-gems
- raise unless e.name == :gem
-rescue Gem::LoadError
-end
-
-require 'rdoc/ri/driver'
-
-RDoc::RI::Driver.run ARGV
diff --git a/libexec/syntax_suggest b/libexec/syntax_suggest
new file mode 100755
index 0000000000..3dc8eb94d1
--- /dev/null
+++ b/libexec/syntax_suggest
@@ -0,0 +1,7 @@
+#!/usr/bin/env ruby
+
+require "syntax_suggest/api"
+
+SyntaxSuggest::Cli.new(
+ argv: ARGV
+).call