cli.rb 711 B

123456789101112131415161718192021222324252627282930313233343536
  1. require "dotenv"
  2. module Dotenv
  3. # The CLI is a class responsible of handling all the command line interface
  4. # logic.
  5. class CLI
  6. attr_reader :argv
  7. def initialize(argv = [])
  8. @argv = argv.dup
  9. end
  10. def run
  11. filenames = parse_filenames || []
  12. begin
  13. Dotenv.load!(*filenames)
  14. rescue Errno::ENOENT => e
  15. abort e.message
  16. else
  17. exec(*argv) unless argv.empty?
  18. end
  19. end
  20. private
  21. def parse_filenames
  22. pos = argv.index("-f")
  23. return nil unless pos
  24. # drop the -f
  25. argv.delete_at pos
  26. # parse one or more comma-separated .env files
  27. require "csv"
  28. CSV.parse_line argv.delete_at(pos)
  29. end
  30. end
  31. end