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