#!/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

