class Rerun::Options
Constants
- DEFAULTS
- DEFAULT_DIRS
- DEFAULT_PATTERN
If you change the default pattern, please update the README.md file – the list appears twice therein, which at the time of this comment are lines 17 and 119
Public Class Methods
parse(args: ARGV, config_file: nil)
click to toggle source
# File lib/rerun/options.rb, line 33 def self.parse args: ARGV, config_file: nil default_options = DEFAULTS.dup options = { ignore: [] } if config_file && File.exist?(config_file) require 'shellwords' config_args = File.read(config_file).shellsplit args = config_args + args end option_parser = OptionParser.new("", 24, ' ') do |o| o.banner = "Usage: rerun [options] [--] cmd" o.separator "" o.separator "Launches an app, and restarts it when the filesystem changes." o.separator "See http://github.com/alexch/rerun for more info." o.separator "Version: #{$spec.version}" o.separator "" o.separator "Options:" o.on("-d dir", "--dir dir", "directory to watch, default = \"#{DEFAULT_DIRS}\". Specify multiple paths with ',' or separate '-d dir' option pairs.") do |dir| elements = dir.split(",") options[:dir] = (options[:dir] || []) + elements end # todo: rename to "--watch" o.on("-p pattern", "--pattern pattern", "file glob to watch, default = \"#{DEFAULTS[:pattern]}\"") do |pattern| options[:pattern] = pattern end o.on("-i pattern", "--ignore pattern", "file glob to ignore (can be set many times). To ignore a directory, you must append '/*' e.g. --ignore 'coverage/*'") do |pattern| options[:ignore] += [pattern] end o.on("-s signal", "--signal signal", "terminate process using this signal. To try several signals in series, use a comma-delimited list. Default: \"#{DEFAULTS[:signal]}\"") do |signal| options[:signal] = signal end o.on("-w sec", "--wait sec", "after asking the process to terminate, wait this long (in seconds) before either aborting, or trying the next signal in series. Default: #{DEFAULTS[:wait]} sec") o.on("-r", "--restart", "expect process to restart itself, so just send a signal and continue watching. Uses the HUP signal unless overridden using --signal") do |signal| options[:restart] = true default_options[:signal] = "HUP" end o.on("-x", "--exit", "expect the program to exit. With this option, rerun checks the return value; without it, rerun checks that the process is running.") do |value| options[:exit] = value end o.on("-c", "--clear", "clear screen before each run") do |value| options[:clear] = value end o.on("-b", "--background", "disable on-the-fly commands, allowing the process to be backgrounded") do |value| options[:background] = value end o.on("-n name", "--name name", "name of app used in logs and notifications, default = \"#{DEFAULTS[:name]}\"") do |name| options[:name] = name end o.on("--[no-]force-polling", "use polling instead of a native filesystem scan (useful for Vagrant)") do |value| options[:force_polling] = value end o.on("--no-growl", "don't use growl [OBSOLETE]") do options[:growl] = false $stderr.puts "--no-growl is obsolete; use --no-notify instead" return end o.on("--[no-]notify [notifier]", "send messages through a desktop notification application. Supports growl (requires growlnotify), osx (requires terminal-notifier gem), and notify-send on GNU/Linux (notify-send must be installed)") do |notifier| notifier = true if notifier.nil? options[:notify] = notifier end o.on("-q", "--[no-]quiet", "don't output any logs") do |value| options[:quiet] = value end o.on("--[no-]verbose", "log extra stuff like PIDs (unless you also specified `--quiet`") do |value| options[:verbose] = value end o.on_tail("-h", "--help", "--usage", "show this message and immediately exit") do puts o return end o.on_tail("--version", "show version and immediately exit") do puts $spec.version return end o.on_tail "" o.on_tail "On top of --pattern and --ignore, we ignore any changes to files and dirs starting with a dot." end option_parser.parse! args options = default_options.merge(options) options[:cmd] = args.join(" ").strip # todo: better arg word handling puts option_parser if args.empty? options end