From 8f20c3c6892d738f4dcb66fc4ecf5ab433f5b6d0 Mon Sep 17 00:00:00 2001 From: TheNotary Date: Wed, 8 Jun 2016 20:26:20 -0700 Subject: [PATCH] adds cli subcommand for dumping configs in application.yml to STDOUT --- lib/figaro/cli.rb | 20 ++++++++++++++++++ lib/figaro/cli/configs_dump.rb | 37 ++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 lib/figaro/cli/configs_dump.rb diff --git a/lib/figaro/cli.rb b/lib/figaro/cli.rb index c5726152..b6c4f418 100644 --- a/lib/figaro/cli.rb +++ b/lib/figaro/cli.rb @@ -16,6 +16,26 @@ def install Install.start end + # figaro configs:dump + + desc "configs:dump", "Dump configs to STDOUT in an exportable format" + method_option "app_name", + aliases: ["-a"], + desc: "Specify a Dokku app name" + method_option "dokku_alias", + aliases: ["-z"], + desc: "Specify an alias you use to run the dokku/ paas command" + method_option "path", + aliases: ["-p"], + default: "config/application.yml", + desc: "Specify a configuration file path" + + define_method "configs:dump" do + require "figaro/cli/configs_dump" + ConfigsDump.run(options) + end + + # figaro heroku:set desc "heroku:set", "Send Figaro configuration to Heroku" diff --git a/lib/figaro/cli/configs_dump.rb b/lib/figaro/cli/configs_dump.rb new file mode 100644 index 00000000..1f25adbc --- /dev/null +++ b/lib/figaro/cli/configs_dump.rb @@ -0,0 +1,37 @@ +require "figaro/cli/task" + +module Figaro + class CLI < Thor + class ConfigsDump < Task + def run + puts command + end + + private + + def command + # system(configuration, "printf \"#{app_name} #{vars}\"") + # "printf \"config:set save_kittens #{vars} #{for_app} #{for_remote}\n\"" + + env_vars = configuration.map { |k,v| "#{k.to_s}=\"#{v.to_s.gsub(" ", "\\ ")}\"" unless v.nil? }.join(" ") + "#{dokku_alias} #{app_name} #{env_vars}" + end + + def app_name + options[:app_name] ? "config:set #{options[:app_name]}" : nil + end + + def dokku_alias + options[:dokku_alias] ? "#{options[:dokku_alias]}" : nil + end + + def vars + configuration.keys.map { |k| var(k) }.join(" ") + end + + def var(key) + Gem.win_platform? ? %(#{key}="%#{key}%") : %(#{key}="$#{key}") + end + end + end +end