add ,env script to parse and export environment variables
This commit is contained in:
68
,env
Executable file
68
,env
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
help = %[
|
||||
,env [OPTIONS] [file]
|
||||
|
||||
Show all environment variables in .env file. Not touching shell.
|
||||
|
||||
Please execute "eval $(,env)" if you what export to shell.
|
||||
|
||||
OPTIONS
|
||||
|
||||
-h --help
|
||||
print help info
|
||||
|
||||
--unset
|
||||
unset all environments in target file
|
||||
|
||||
file
|
||||
default is .env
|
||||
]
|
||||
|
||||
file = ".env"
|
||||
is_unset = false
|
||||
|
||||
for arg in ARGV
|
||||
case arg
|
||||
when "-h", "--help"
|
||||
puts help
|
||||
exit
|
||||
when "--unset"
|
||||
is_unset = true
|
||||
else
|
||||
file = arg
|
||||
end
|
||||
end
|
||||
|
||||
unless File.exist? file
|
||||
puts "#{file} not exists"
|
||||
exit 1
|
||||
end
|
||||
|
||||
def simple_parse_env(line)
|
||||
line = line.strip
|
||||
return [nil, nil] if line.empty? || line.start_with?('#')
|
||||
|
||||
key, value = line.split('=', 2)
|
||||
return [nil, nil] unless value # 如果没有等号则忽略
|
||||
|
||||
value = value.split('#', 2).first.strip
|
||||
|
||||
value = value.gsub(/\A['"]|['"]\z/, '')
|
||||
|
||||
[key.strip, value]
|
||||
end
|
||||
|
||||
File.foreach(file) do |line|
|
||||
unless line.start_with? "#"
|
||||
key, value = simple_parse_env(line)
|
||||
if key and value
|
||||
if is_unset
|
||||
puts "export #{key}="
|
||||
else
|
||||
puts "export #{key}=#{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user