From 456ed17724729cf25d4281a7404128e01796cbb7 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Tue, 21 Jan 2014 17:31:32 +0000 Subject: [PATCH] Implement `get' task keyword, fetch from registry --- features/tasks/registry.feature | 13 +++++++++++++ lib/producer/core/task/dsl.rb | 4 ++++ spec/producer/core/task/dsl_spec.rb | 8 ++++++++ 3 files changed, 25 insertions(+) create mode 100644 features/tasks/registry.feature diff --git a/features/tasks/registry.feature b/features/tasks/registry.feature new file mode 100644 index 0000000..dc1270a --- /dev/null +++ b/features/tasks/registry.feature @@ -0,0 +1,13 @@ +Feature: access to registry from task DSL + + Scenario: `get' keyword fetches a value from the registry + Given a recipe with: + """ + set :some_key, 'some_value' + + task :output_some_key do + echo get :some_key + end + """ + When I successfully execute the recipe + Then the output must contain "some_value" diff --git a/lib/producer/core/task/dsl.rb b/lib/producer/core/task/dsl.rb index e00e2aa..d82dad8 100644 --- a/lib/producer/core/task/dsl.rb +++ b/lib/producer/core/task/dsl.rb @@ -37,6 +37,10 @@ module Producer def ask(question, choices, prompter: Prompter) prompter.new(env.input, env.output).prompt(question, choices) end + + def get(key) + env[key] + end end end end diff --git a/spec/producer/core/task/dsl_spec.rb b/spec/producer/core/task/dsl_spec.rb index b27ea21..f5119e6 100644 --- a/spec/producer/core/task/dsl_spec.rb +++ b/spec/producer/core/task/dsl_spec.rb @@ -102,5 +102,13 @@ module Producer::Core expect(ask).to eq :choice end end + + describe '#get' do + let(:env) { Env.new(registry: { some_key: :some_value }) } + + it 'fetches a value from the registry at given index' do + expect(dsl.get :some_key).to eq :some_value + end + end end end