From f7f6b2eb71e3c04f84e7e500bd54933353a79d87 Mon Sep 17 00:00:00 2001 From: Ryan Schlesinger Date: Fri, 29 Aug 2014 20:50:26 -0700 Subject: [PATCH] Add print cli command --- lib/figaro/cli.rb | 14 ++++++++++++ lib/figaro/cli/print.rb | 15 +++++++++++++ spec/figaro/cli/print_spec.rb | 40 +++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 lib/figaro/cli/print.rb create mode 100644 spec/figaro/cli/print_spec.rb diff --git a/lib/figaro/cli.rb b/lib/figaro/cli.rb index a3a5f54c..c945e208 100644 --- a/lib/figaro/cli.rb +++ b/lib/figaro/cli.rb @@ -16,6 +16,20 @@ def install Install.start end + # figaro print + + desc "print ENVIRONMENT", "Print the specified environment's variables" + + method_option "path", + aliases: ["-p"], + default: "config/application.yml", + desc: "Specify a configuration file path" + + define_method "print" do |environment| + require 'figaro/cli/print' + Print.run(options.merge(environment: environment)) + end + # figaro heroku:set desc "heroku:set", "Send Figaro configuration to Heroku" diff --git a/lib/figaro/cli/print.rb b/lib/figaro/cli/print.rb new file mode 100644 index 00000000..d12b6475 --- /dev/null +++ b/lib/figaro/cli/print.rb @@ -0,0 +1,15 @@ +require "figaro/cli/task" + +module Figaro + class CLI < Thor + class Print < Task + def run + puts vars + end + + def vars + configuration.map{ |k,v| %(#{k}=#{v}) }.join("\n") + end + end + end +end diff --git a/spec/figaro/cli/print_spec.rb b/spec/figaro/cli/print_spec.rb new file mode 100644 index 00000000..3b21266c --- /dev/null +++ b/spec/figaro/cli/print_spec.rb @@ -0,0 +1,40 @@ +describe 'figaro print ' do + before do + create_dir("example") + cd("example") + write_file("config/application.yml", <<-EOF) +foo: bar +production: + foo: baz +test: + bar: boink +EOF + end + + it 'respects path' do + write_file("env.yml", "different: path") + + cmd = 'figaro print production -p env.yml' + run_simple cmd + expect(output_from(cmd)).to eq("different=path\n") + end + + it 'requires the environment to be specified' do + cmd = 'figaro print' + run_simple cmd + expect(output_from(cmd)).to include('figaro print ENVIRONMENT') + end + + it 'prints out the production environment' do + cmd = 'figaro print production' + run_simple cmd + expect(output_from(cmd)).to eq("foo=baz\n") + end + + it 'prints out the test environment' do + cmd = 'figaro print test' + run_simple cmd + + expect(output_from(cmd)).to eq("foo=bar\nbar=boink\n") + end +end