masamune 0.11.1 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 06ac5ed8ef2f9949a444065bef219d2efd144b94
4
- data.tar.gz: bf620007bd3016250133cda30feb6c03182ab1d4
3
+ metadata.gz: dfbc2a3764c6ed9c4a5cb1b82bfa0f7ca22aac53
4
+ data.tar.gz: fd95120e7e1a26b847af62c09ce7b0fdcc30b736
5
5
  SHA512:
6
- metadata.gz: 589c931738aec24331ada2bab69a52175be9d27dc8a11e3a695ca7abbd38762582a5e3c93dafc61a6bbc7fac7f76d19ed6206a55a8e333795e6c113f0d64761c
7
- data.tar.gz: cb8d8062f36d5ebc0bc72c3a8f3ba3c8acff5afa2f14186ddcf8b6844ca77cc9fc333b3802cab27443843ec8c8ed191e10f1274aea196b5be4c1acce7c8e8fbf
6
+ metadata.gz: 601caddfc1aadb966c05010a0f833cfc70051a965d60cda3c59ceacde696109536bf02c422695ee2ec0d159b74f55ceda83cc863d2b2a6c03ce4156010f07a25
7
+ data.tar.gz: e35f201ff313c4a3d9a98a069ace3cc8ba2e1d425d93ae7ffbbda802fdca968a892b19ce078f2c03bf24ca1e1549b4fe456d30ba66a7dfe8a8f86c69627e66d7
@@ -54,6 +54,7 @@ module Masamune::Actions
54
54
  included do |base|
55
55
  base.class_option :jobflow, :aliases => '-j', :desc => 'Elastic MapReduce jobflow ID (Hint: elastic-mapreduce --list)' if defined?(base.class_option)
56
56
  base.after_initialize(:early) do |thor, options|
57
+ next unless options[:initialize]
57
58
  next if thor.configuration.elastic_mapreduce.empty?
58
59
  next unless thor.configuration.elastic_mapreduce.fetch(:enabled, true)
59
60
  jobflow = thor.resolve_jobflow(options[:jobflow] || thor.configuration.elastic_mapreduce[:jobflow])
@@ -46,7 +46,7 @@ module Masamune::Actions
46
46
  end if block_given?
47
47
 
48
48
  command = Masamune::Commands::Shell.new(klass.new(self), {fail_fast: false}.merge(opts))
49
- opts.fetch(:interactive, true) ? command.execute : command.replace(opts)
49
+ opts.fetch(:interactive, false) ? command.replace(opts) : command.execute
50
50
  end
51
51
  end
52
52
  end
@@ -63,12 +63,15 @@ module Masamune::Actions
63
63
 
64
64
  included do |base|
65
65
  base.after_initialize do |thor, options|
66
+ next unless options[:initialize]
66
67
  thor.create_hive_database_if_not_exists
67
- if options[:dry_run]
68
- raise ::Thor::InvocationError, 'Dry run of hive failed' unless thor.hive(exec: 'SHOW TABLES;', safe: true, fail_fast: false).success?
69
- end
70
68
  thor.load_hive_schema
71
69
  end if defined?(base.after_initialize)
70
+
71
+ base.after_initialize(:later) do |thor, options|
72
+ next unless options[:dry_run]
73
+ raise ::Thor::InvocationError, 'Dry run of hive failed' unless thor.hive(exec: 'SHOW TABLES;', safe: true, fail_fast: false).success?
74
+ end if defined?(base.after_initialize)
72
75
  end
73
76
  end
74
77
  end
@@ -40,7 +40,7 @@ module Masamune::Actions
40
40
  bail_fast task_group, opts if opts[:version]
41
41
  Parallel.each(task_group, in_processes: max_tasks) do |task_name|
42
42
  begin
43
- execute(thor_wrapper, task_name, *task_args(opts), interactive: false, detach: false)
43
+ execute(thor_wrapper, task_name, *task_args(opts), interactive: true, detach: false)
44
44
  rescue SystemExit
45
45
  end
46
46
  end
@@ -67,6 +67,7 @@ module Masamune::Actions
67
67
 
68
68
  included do |base|
69
69
  base.after_initialize do |thor, options|
70
+ next unless options[:initialize]
70
71
  thor.create_postgres_database_if_not_exists
71
72
  thor.load_postgres_setup_files
72
73
  thor.load_postgres_schema
data/lib/masamune/thor.rb CHANGED
@@ -101,6 +101,7 @@ module Masamune
101
101
  class_option :config, :desc => 'Configuration file'
102
102
  class_option :version, :desc => 'Print version and exit', :type => :boolean
103
103
  class_option :lock, :desc => 'Optional job lock name', :type => :string
104
+ class_option :initialize, :aliases => '--init', :desc => 'Initialize configured data stores', :type => :boolean, :default => false
104
105
  class_option :'--', :desc => 'Extra pass through arguments'
105
106
  def initialize(_args=[], _options={}, _config={})
106
107
  self.environment.parent = self
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Masamune
24
- VERSION = '0.11.1'
24
+ VERSION = '0.11.2'
25
25
  end
@@ -51,7 +51,7 @@ describe Masamune::Actions::ElasticMapreduce do
51
51
  end
52
52
 
53
53
  describe '.after_initialize' do
54
- let(:options) { {} }
54
+ let(:options) { {initialize: true} }
55
55
 
56
56
  subject(:after_initialize_invoke) do
57
57
  instance.after_initialize_invoke(options)
@@ -72,9 +72,18 @@ describe Masamune::Actions::ElasticMapreduce do
72
72
  it { expect { subject }.to raise_error Thor::RequiredArgumentMissingError, /No value provided for required options '--jobflow'/ }
73
73
  end
74
74
 
75
- context 'when jobflow does not exist' do
75
+ context 'when jobflow is present without initialize' do
76
76
  let(:configuration) { {enabled: true} }
77
77
  let(:options) { {jobflow: 'j-XYZ'} }
78
+ before do
79
+ expect(instance).to_not receive(:elastic_mapreduce)
80
+ end
81
+ it { expect { subject }.to_not raise_error }
82
+ end
83
+
84
+ context 'when jobflow does not exist' do
85
+ let(:configuration) { {enabled: true} }
86
+ let(:options) { {initialize: true, jobflow: 'j-XYZ'} }
78
87
  before do
79
88
  mock_command(/\Aelastic-mapreduce/, mock_failure)
80
89
  end
@@ -83,7 +92,7 @@ describe Masamune::Actions::ElasticMapreduce do
83
92
 
84
93
  context 'when jobflow exists' do
85
94
  let(:configuration) { {enabled: true} }
86
- let(:options) { {jobflow: 'j-XYZ'} }
95
+ let(:options) { {initialize: true, jobflow: 'j-XYZ'} }
87
96
  before do
88
97
  mock_command(/\Aelastic-mapreduce/, mock_success)
89
98
  end
@@ -95,7 +104,7 @@ describe Masamune::Actions::ElasticMapreduce do
95
104
 
96
105
  context 'when jobflow is symbolic' do
97
106
  let(:configuration) { {enabled: true, jobflows: {'build' => 'j-XYZ'}} }
98
- let(:options) { {jobflow: 'build', } }
107
+ let(:options) { {initialize: true, jobflow: 'build', } }
99
108
  before do
100
109
  mock_command(/\Aelastic-mapreduce/, mock_success)
101
110
  end
@@ -68,13 +68,22 @@ describe Masamune::Actions::Hive do
68
68
  end
69
69
 
70
70
  describe '.after_initialize' do
71
- let(:options) { {} }
71
+ let(:options) { {initialize: true} }
72
72
  let(:configuration) { {database: 'test'} }
73
73
 
74
74
  subject(:after_initialize_invoke) do
75
75
  instance.after_initialize_invoke(options)
76
76
  end
77
77
 
78
+ context 'without --initialize' do
79
+ let(:options) { {} }
80
+ before do
81
+ expect(instance).to_not receive(:hive)
82
+ after_initialize_invoke
83
+ end
84
+ it 'should not call hive' do; end
85
+ end
86
+
78
87
  context 'with default database' do
79
88
  let(:configuration) { {database: 'default'} }
80
89
  before do
@@ -103,12 +112,12 @@ describe Masamune::Actions::Hive do
103
112
  it 'should call hive with create database' do; end
104
113
  end
105
114
 
106
- context 'with dryrun' do
107
- let(:options) { {dry_run: true} }
115
+ context 'with dry_run' do
116
+ let(:options) { {initialize: true, dry_run: true} }
108
117
  before do
109
118
  expect(instance).to receive(:hive).with(exec: 'CREATE DATABASE IF NOT EXISTS test;', :database => nil).once.and_return(mock_success)
110
- expect(instance).to receive(:hive).with(exec: 'SHOW TABLES;', safe: true, fail_fast: false).once.and_return(mock_success)
111
119
  expect(instance).to receive(:hive).with(file: an_instance_of(String)).once.and_return(mock_success)
120
+ expect(instance).to receive(:hive).with(exec: 'SHOW TABLES;', safe: true, fail_fast: false).once.and_return(mock_success)
112
121
  after_initialize_invoke
113
122
  end
114
123
  it 'should call hive with show tables' do; end
@@ -58,7 +58,7 @@ describe Masamune::Actions::Postgres do
58
58
  end
59
59
 
60
60
  describe '.after_initialize' do
61
- let(:options) { {} }
61
+ let(:options) { {initialize: true} }
62
62
  let(:setup_files) { [] }
63
63
  let(:schema_files) { [] }
64
64
  let(:configuration) { {database: 'test', setup_files: setup_files, schema_files: schema_files} }
@@ -67,6 +67,16 @@ describe Masamune::Actions::Postgres do
67
67
  instance.after_initialize_invoke(options)
68
68
  end
69
69
 
70
+ context 'without --initialize' do
71
+ let(:options) { {} }
72
+ before do
73
+ expect(instance).to_not receive(:postgres_admin)
74
+ expect(instance).to_not receive(:postgres)
75
+ after_initialize_invoke
76
+ end
77
+ it 'should not call postgres_admin or postgres' do; end
78
+ end
79
+
70
80
  context 'when database does not exist' do
71
81
  before do
72
82
  expect(postgres_helper).to receive(:database_exists?).and_return(false)
@@ -34,42 +34,45 @@ describe Masamune::Tasks::HiveThor do
34
34
  it_behaves_like 'command usage'
35
35
  end
36
36
 
37
- context 'with command options' do
38
- before do
37
+ context 'with --file and --initialize' do
38
+ let(:options) { ['--file=zombo.hql', '--initialize'] }
39
+ it do
39
40
  expect_any_instance_of(described_class).to receive(:hive).with(exec: 'CREATE DATABASE IF NOT EXISTS masamune;', database: nil).and_return(mock_success)
40
41
  expect_any_instance_of(described_class).to receive(:hive).with(file: instance_of(String)).and_return(mock_success)
42
+ expect_any_instance_of(described_class).to receive(:hive).with(hash_including(file: File.expand_path('zombo.hql'))).once.and_return(mock_success)
43
+ cli_invocation
41
44
  end
45
+ end
42
46
 
43
- context 'with --file' do
44
- let(:options) { ['--file=zombo.hql'] }
45
- it do
46
- expect_any_instance_of(described_class).to receive(:hive).with(hash_including(file: File.expand_path('zombo.hql'))).once.and_return(mock_success)
47
- cli_invocation
48
- end
47
+ context 'with --file' do
48
+ let(:options) { ['--file=zombo.hql'] }
49
+ it do
50
+ expect_any_instance_of(described_class).to receive(:hive).with(hash_including(file: File.expand_path('zombo.hql'))).once.and_return(mock_success)
51
+ cli_invocation
49
52
  end
53
+ end
50
54
 
51
- context 'with --output' do
52
- let(:options) { ['--output=report.txt'] }
53
- it do
54
- expect_any_instance_of(described_class).to receive(:hive).with(hash_including(output: File.expand_path('report.txt'))).once.and_return(mock_success)
55
- cli_invocation
56
- end
55
+ context 'with --output' do
56
+ let(:options) { ['--output=report.txt'] }
57
+ it do
58
+ expect_any_instance_of(described_class).to receive(:hive).with(hash_including(output: File.expand_path('report.txt'))).once.and_return(mock_success)
59
+ cli_invocation
57
60
  end
61
+ end
58
62
 
59
- context 'with --variables=YEAR:2015 MONTH:1' do
60
- let(:options) { ['--variables=YEAR:2015', 'MONTH:1'] }
61
- it do
62
- expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1'})).once.and_return(mock_success)
63
- cli_invocation
64
- end
63
+ context 'with --variables=YEAR:2015 MONTH:1' do
64
+ let(:options) { ['--variables=YEAR:2015', 'MONTH:1'] }
65
+ it do
66
+ expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1'})).once.and_return(mock_success)
67
+ cli_invocation
65
68
  end
69
+ end
66
70
 
67
- context 'with -X YEAR:2015 MONTH:1' do
68
- let(:options) { ['-X', 'YEAR:2015', 'MONTH:1'] }
69
- it do
70
- expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1'})).once.and_return(mock_success)
71
- cli_invocation
72
- end
71
+ context 'with -X YEAR:2015 MONTH:1' do
72
+ let(:options) { ['-X', 'YEAR:2015', 'MONTH:1'] }
73
+ it do
74
+ expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1'})).once.and_return(mock_success)
75
+ cli_invocation
73
76
  end
74
77
  end
75
78
  end
@@ -31,10 +31,18 @@ describe Masamune::Tasks::PostgresThor do
31
31
  it_behaves_like 'command usage'
32
32
  end
33
33
 
34
+ context 'with --file and --initialize' do
35
+ let(:options) { ['--file=zombo.hql', '--initialize'] }
36
+ it do
37
+ expect_any_instance_of(described_class).to receive(:postgres).with(file: instance_of(String)).once.and_return(mock_success)
38
+ expect_any_instance_of(described_class).to receive(:postgres).with(hash_including(file: 'zombo.hql')).once.and_return(mock_success)
39
+ cli_invocation
40
+ end
41
+ end
42
+
34
43
  context 'with --file' do
35
44
  let(:options) { ['--file=zombo.hql'] }
36
45
  it do
37
- expect_any_instance_of(described_class).to receive(:postgres).with(file: instance_of(String)).once.and_return(mock_success)
38
46
  expect_any_instance_of(described_class).to receive(:postgres).with(hash_including(file: 'zombo.hql')).once.and_return(mock_success)
39
47
  cli_invocation
40
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: masamune
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 0.11.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Andrews
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-15 00:00:00.000000000 Z
11
+ date: 2015-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor