shards 0.1.0 → 1.0.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.
@@ -0,0 +1,58 @@
1
+ require_relative './base.rb'
2
+
3
+ module Shards
4
+
5
+ module Workflow
6
+
7
+ class FastTerminal < Shards::Workflow::Base
8
+
9
+ attr_accessor :client, :location, :stage, :domain, :site, :params
10
+
11
+ def create
12
+
13
+ @wrong_text=false
14
+
15
+ validate_client params[:client]
16
+ validate_domain params[:domain]
17
+ validate_location params[:location]
18
+ validate_stage params[:stage]
19
+
20
+ end
21
+
22
+ def validate_client cli
23
+
24
+ @wrong_text=false
25
+
26
+ validate_min_size cli, @step['client_min_size']
27
+
28
+ @client=cli.capitalize
29
+
30
+ end
31
+
32
+ def validate_location loc
33
+ raise "Location %s unavailable" % loc unless config.locations.keys.include? loc
34
+ @location=config.locations[loc]
35
+ end
36
+
37
+ def validate_stage st
38
+ raise "Stage %s unavailable" % st unless location.stages.keys.include? st
39
+ @stage=location.stages[st]
40
+ end
41
+
42
+ def validate_domain domain_name
43
+
44
+ @wrong_text=false
45
+
46
+ validate_min_size domain_name, @step['domain_min_size']
47
+
48
+ validate_regex domain_name, @step['domain_regex']
49
+
50
+ @domain=domain_name
51
+
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+
58
+ end
@@ -0,0 +1,56 @@
1
+ require_relative './base.rb'
2
+
3
+ module Shards
4
+
5
+ module Workflow
6
+
7
+ class Terminal < Shards::Workflow::Base
8
+
9
+ attr_accessor :client, :location, :stage, :domain, :site
10
+
11
+ def ask_client
12
+
13
+ ask_question
14
+
15
+ @answer=answer.strip
16
+
17
+ @wrong_text=false
18
+
19
+ validate_min_size answer, @step['min_size']
20
+
21
+ @client=answer.capitalize
22
+
23
+ end
24
+
25
+ def ask_location
26
+ locations=config.locations.keys
27
+ choose_one "Locations:", locations
28
+ @location=config.locations[locations[answer.to_i]]
29
+ end
30
+
31
+ def ask_stage
32
+ stages=location.stages.keys
33
+ choose_one "Stages:", stages
34
+ @stage=location.stages[stages[answer.to_i]]
35
+ end
36
+
37
+ def ask_domain
38
+
39
+ ask_question
40
+
41
+ @answer=answer.strip
42
+
43
+ @wrong_text=false
44
+
45
+ validate_min_size answer, @step['min_size']
46
+
47
+ validate_regex answer, @step['regex']
48
+
49
+ @domain=answer
50
+
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -0,0 +1,11 @@
1
+ require "shards/workflow/base"
2
+ require "shards/workflow/terminal"
3
+ require "shards/workflow/fast_terminal"
4
+
5
+ module Shards
6
+
7
+ module Workflow
8
+
9
+ end
10
+
11
+ end
data/shards.gemspec CHANGED
@@ -31,6 +31,15 @@ Gem::Specification.new do |spec|
31
31
  spec.require_paths = ["lib"]
32
32
 
33
33
  spec.add_development_dependency "bundler", "~> 1.16"
34
+ spec.add_development_dependency "aruba", "~> 0.14"
34
35
  spec.add_development_dependency "rake", "~> 10.0"
35
36
  spec.add_development_dependency "rspec", "~> 3.0"
37
+ spec.add_development_dependency "byebug", "~> 10.0"
38
+ spec.add_dependency "dotenv", "~> 2.4"
39
+ spec.add_dependency "net-ssh", "~> 5.0"
40
+ spec.add_dependency "net-scp", "~> 1.2"
41
+ spec.add_dependency "aws-sdk-route53", "~> 1.9"
42
+ spec.add_dependency "git", "~> 1.4"
43
+ spec.add_dependency "thor", "~> 0.20"
44
+ spec.add_dependency "terminal-table", "~> 1.8"
36
45
  end
data/test.env ADDED
@@ -0,0 +1,24 @@
1
+ ENGINEERING_ROOT_PATH=tmp/testrepo/shards_test_repo
2
+ CONFIG_FILE=file.yml
3
+ PROXY_SUBDOMAIN=proxy.example.com
4
+ DOMAIN=example.com
5
+ CONFIG_FILES_ROOT_PATH=path/to
6
+ SHARDS_FILE_NAME=shards.yml
7
+ SITES_FILE_NAME=sites.yml
8
+ SHARD_LIST_KEY_ROOT_PATH=octopus production migration_group_shards
9
+ CONFIG_DIR_SUFFIX=config_dir_suffix
10
+ DNS_ZONE_CODE=TestCodeDNSZone
11
+ DB_USER=db_user_name
12
+ DB_PASSWORD=HerePasswordDB
13
+ PROXY_USER=proxy_username
14
+ BASE_CONFIG_FILE=shards.yml
15
+ # optional:
16
+ TEST=true #only for test.env delete this var in settings.env
17
+ CONFIG_REPLACE={ 'prod' => 'web' }
18
+ LIVE_BRANCH=shards_test # set this var to use in test.env or to change the default value 'v5'
19
+
20
+ # You could overwrite methods using this metaprograming way ading your on your_file.yaml
21
+ # Then add this var:
22
+ # FORMAT_METHODS_FILE=your/path/to/your_file.yaml
23
+ # Finally to overwrite the default behavior write your code in your_file.yaml. The yaml will be merged so you need define just the methods thay you need overwrite.
24
+ # The default definitions are in spec/support/format_methods.yaml
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shards
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego PL
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-08 00:00:00.000000000 Z
11
+ date: 2018-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aruba
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.14'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.14'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,27 +66,163 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: dotenv
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.4'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: net-ssh
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '5.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '5.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: net-scp
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.2'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: aws-sdk-route53
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.9'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.9'
139
+ - !ruby/object:Gem::Dependency
140
+ name: git
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.4'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.4'
153
+ - !ruby/object:Gem::Dependency
154
+ name: thor
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.20'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.20'
167
+ - !ruby/object:Gem::Dependency
168
+ name: terminal-table
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.8'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.8'
55
181
  description: The gem read a conf.yml file in a puppet project to know the multitenant
56
182
  sites and shards and manage changes.
57
183
  email:
58
184
  - diego.piccinini@gmail.com
59
- executables: []
185
+ executables:
186
+ - shards
60
187
  extensions: []
61
188
  extra_rdoc_files: []
62
189
  files:
63
190
  - ".gitignore"
64
191
  - ".rspec"
192
+ - ".ruby-version"
65
193
  - ".travis.yml"
66
194
  - CODE_OF_CONDUCT.md
67
195
  - Gemfile
196
+ - Gemfile.lock
68
197
  - LICENSE.txt
69
198
  - README.md
70
199
  - Rakefile
71
200
  - bin/console
72
201
  - bin/setup
202
+ - exe/shards
203
+ - lib/settings/format_methods.yaml
204
+ - lib/settings/workflow.yaml
73
205
  - lib/shards.rb
206
+ - lib/shards/base.rb
207
+ - lib/shards/base_yaml_object.rb
208
+ - lib/shards/client.rb
209
+ - lib/shards/config.rb
210
+ - lib/shards/db.rb
211
+ - lib/shards/dns.rb
212
+ - lib/shards/location.rb
213
+ - lib/shards/meta/list.rb
214
+ - lib/shards/meta/meta.rb
215
+ - lib/shards/repo.rb
216
+ - lib/shards/shard.rb
217
+ - lib/shards/site.rb
218
+ - lib/shards/stage.rb
74
219
  - lib/shards/version.rb
220
+ - lib/shards/workflow/base.rb
221
+ - lib/shards/workflow/fast_terminal.rb
222
+ - lib/shards/workflow/terminal.rb
223
+ - lib/shards/workflow/workflow.rb
75
224
  - shards.gemspec
225
+ - test.env
76
226
  homepage: https://github.com/BookingBug/shards
77
227
  licenses:
78
228
  - MIT