mirror of
https://github.com/NixOS/mobile-nixos.git
synced 2024-12-12 15:24:14 +03:00
51 lines
1.0 KiB
Ruby
51 lines
1.0 KiB
Ruby
# Extremely minimal and naïve arguments parsing.
|
|
module Args
|
|
@@parsed = nil
|
|
|
|
def self.get(key, default = nil)
|
|
parse[:values][key] or default
|
|
end
|
|
|
|
def self.unused()
|
|
parsed[:unused]
|
|
end
|
|
|
|
def self.parse()
|
|
return @@parsed if @@parsed
|
|
|
|
argv = ARGV.dup
|
|
unused = []
|
|
|
|
# Default values.
|
|
# `nil` means it expects a parameter.
|
|
# `false` means it's a boolean toggle without parameter.
|
|
values = {}
|
|
while argv.length > 0
|
|
arg = argv.shift
|
|
if arg.match(/^--help$/)
|
|
# Assumes the programmer will add it
|
|
begin
|
|
print_help
|
|
rescue
|
|
$stderr.puts "Sorry, no help defined."
|
|
end
|
|
exit 0
|
|
elsif arg.match(/^--/)
|
|
key = arg.sub(/^--/, "").gsub("-", "_").to_sym
|
|
if argv.length > 0 && !argv[0].match(/^--/)
|
|
values[key] = argv.shift
|
|
else
|
|
values[key] = true
|
|
end
|
|
else
|
|
unused << arg
|
|
end
|
|
end
|
|
|
|
@@parsed = {
|
|
unused: unused,
|
|
values: values,
|
|
}
|
|
end
|
|
end
|