pangea 0.0.30 → 0.0.32

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da486f875f5e3a95c9993480211c2410643c9fca0c98cb0ed19b4e83df92115d
4
- data.tar.gz: caffd610f6071c986c1a811de86327543df212419ad069622a32a44bc9d9a036
3
+ metadata.gz: 05fd91af3bdb569afe2b6a4a2b4f8445f479cf1fe312282c9c75d5e35b4f359d
4
+ data.tar.gz: 06df4b71cf542c16cc3c0ea44bff9324cb88cca3b3ed6cee327f6b72565e02cc
5
5
  SHA512:
6
- metadata.gz: e3260d284207774f9f30a7040e8069fc63d4fcba3bdf3b309ec38ff041b49d1a77a58bdcbb18391c5af4191e1f1651a7e34eb07ece97e05749f27d4e1b2bf234
7
- data.tar.gz: 499c903810be469d9c203f7a3d07461e72abcafbe1ac9c24a8e0853f486cf2d6feceaf9c0a1fceb10a0cf9b155f79c6c13885bbdb1aeca24d2356c9458ed8d3f
6
+ metadata.gz: deae78f3c4384d097481c572fff86e711fc9ab7f5b3472a3b813a3028ada006de0c6887f03163c2b38275c77416f3d79c7459c62077621ffc7a1d510e0ba46ed
7
+ data.tar.gz: 40636066a0d51c458bfad53af314bc1fd2da310566e8a8bbbed3bc63b27f804532d5039588380feb9be4e49106841c2a5e564dceff04420dc90767fca6c170bc
data/.gitignore CHANGED
@@ -54,3 +54,6 @@ build-iPhoneSimulator/
54
54
 
55
55
  # Used by RuboCop. Remote config files pulled in from inherit_from directive.
56
56
  # .rubocop-https?--*
57
+
58
+ # Used by nix
59
+ result
data/Gemfile CHANGED
@@ -4,9 +4,7 @@ group :development do
4
4
  %w[
5
5
  rubocop-rspec
6
6
  rubocop-rake
7
- solargraph
8
7
  keycutter
9
- rubocop
10
8
  rspec
11
9
  rake
12
10
  yard
data/Gemfile.lock CHANGED
@@ -4,33 +4,24 @@ GEM
4
4
  abstract-synthesizer (0.0.1)
5
5
  ast (2.4.2)
6
6
  aws-eventstream (1.2.0)
7
- aws-partitions (1.791.0)
8
- aws-sdk-core (3.178.0)
7
+ aws-partitions (1.802.0)
8
+ aws-sdk-core (3.180.3)
9
9
  aws-eventstream (~> 1, >= 1.0.2)
10
10
  aws-partitions (~> 1, >= 1.651.0)
11
11
  aws-sigv4 (~> 1.5)
12
12
  jmespath (~> 1, >= 1.6.1)
13
- aws-sdk-dynamodb (1.92.0)
13
+ aws-sdk-dynamodb (1.93.1)
14
14
  aws-sdk-core (~> 3, >= 3.177.0)
15
15
  aws-sigv4 (~> 1.1)
16
16
  aws-sigv4 (1.6.0)
17
17
  aws-eventstream (~> 1, >= 1.0.2)
18
- backport (1.2.0)
19
- benchmark (0.2.1)
18
+ base64 (0.1.1)
20
19
  citrus (3.0.2)
21
20
  diff-lcs (1.5.0)
22
- e2mmap (0.1.0)
23
- jaro_winkler (1.5.6)
24
21
  jmespath (1.6.2)
25
22
  json (2.6.3)
26
23
  keycutter (1.0.2)
27
- kramdown (2.4.0)
28
- rexml
29
- kramdown-parser-gfm (1.1.0)
30
- kramdown (~> 2.0)
31
24
  language_server-protocol (3.17.0.3)
32
- nokogiri (1.15.3)
33
- racc (~> 1.4)
34
25
  parallel (1.23.0)
35
26
  parser (3.2.2.3)
36
27
  ast (~> 2.4.1)
@@ -40,11 +31,8 @@ GEM
40
31
  racc (1.7.1)
41
32
  rainbow (3.1.1)
42
33
  rake (13.0.6)
43
- rbs (2.8.4)
44
34
  regexp_parser (2.8.1)
45
- reverse_markdown (2.1.1)
46
- nokogiri
47
- rexml (3.2.5)
35
+ rexml (3.2.6)
48
36
  rspec (3.12.0)
49
37
  rspec-core (~> 3.12.0)
50
38
  rspec-expectations (~> 3.12.0)
@@ -58,7 +46,8 @@ GEM
58
46
  diff-lcs (>= 1.2.0, < 2.0)
59
47
  rspec-support (~> 3.12.0)
60
48
  rspec-support (3.12.1)
61
- rubocop (1.54.2)
49
+ rubocop (1.56.0)
50
+ base64 (~> 0.1.1)
62
51
  json (~> 2.3)
63
52
  language_server-protocol (>= 3.17.0)
64
53
  parallel (~> 1.10)
@@ -66,7 +55,7 @@ GEM
66
55
  rainbow (>= 2.2.2, < 4.0)
67
56
  regexp_parser (>= 1.8, < 3.0)
68
57
  rexml (>= 3.2.5, < 4.0)
69
- rubocop-ast (>= 1.28.0, < 2.0)
58
+ rubocop-ast (>= 1.28.1, < 2.0)
70
59
  ruby-progressbar (~> 1.7)
71
60
  unicode-display_width (>= 2.4.0, < 3.0)
72
61
  rubocop-ast (1.29.0)
@@ -77,35 +66,17 @@ GEM
77
66
  rubocop (~> 1.33)
78
67
  rubocop-rake (0.6.0)
79
68
  rubocop (~> 1.0)
80
- rubocop-rspec (2.22.0)
69
+ rubocop-rspec (2.23.2)
81
70
  rubocop (~> 1.33)
82
71
  rubocop-capybara (~> 2.17)
83
72
  rubocop-factory_bot (~> 2.22)
84
73
  ruby-progressbar (1.13.0)
85
- solargraph (0.49.0)
86
- backport (~> 1.2)
87
- benchmark
88
- bundler (~> 2.0)
89
- diff-lcs (~> 1.4)
90
- e2mmap
91
- jaro_winkler (~> 1.5)
92
- kramdown (~> 2.3)
93
- kramdown-parser-gfm (~> 1.1)
94
- parser (~> 3.0)
95
- rbs (~> 2.0)
96
- reverse_markdown (~> 2.0)
97
- rubocop (~> 1.38)
98
- thor (~> 1.0)
99
- tilt (~> 2.0)
100
- yard (~> 0.9, >= 0.9.24)
101
74
  strings (0.2.1)
102
75
  strings-ansi (~> 0.2)
103
76
  unicode-display_width (>= 1.5, < 3.0)
104
77
  unicode_utils (~> 1.4)
105
78
  strings-ansi (0.2.0)
106
79
  terraform-synthesizer (0.0.1)
107
- thor (1.2.2)
108
- tilt (2.2.0)
109
80
  toml-rb (2.2.0)
110
81
  citrus (~> 3.0, > 3.0)
111
82
  tty-box (0.7.0)
@@ -130,7 +101,7 @@ GEM
130
101
  yard (0.9.34)
131
102
 
132
103
  PLATFORMS
133
- ruby
104
+ x86_64-darwin-22
134
105
 
135
106
  DEPENDENCIES
136
107
  abstract-synthesizer
@@ -138,10 +109,8 @@ DEPENDENCIES
138
109
  keycutter
139
110
  rake
140
111
  rspec
141
- rubocop
142
112
  rubocop-rake
143
113
  rubocop-rspec
144
- solargraph
145
114
  terraform-synthesizer
146
115
  toml-rb
147
116
  tty-box
data/bin/stitches CHANGED
File without changes
data/gemset.nix CHANGED
@@ -34,10 +34,10 @@
34
34
  platforms = [];
35
35
  source = {
36
36
  remotes = ["https://rubygems.org"];
37
- sha256 = "0728316dwkkfw2m4pwy37dmrl7mxalxvjny2y942nd1zd16n72p9";
37
+ sha256 = "1z6667xiw59fwbz6hqmw8nbw07hllcl9xbqr928d9g8cpwbz1ys6";
38
38
  type = "gem";
39
39
  };
40
- version = "1.791.0";
40
+ version = "1.802.0";
41
41
  };
42
42
  aws-sdk-core = {
43
43
  dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
@@ -45,10 +45,10 @@
45
45
  platforms = [];
46
46
  source = {
47
47
  remotes = ["https://rubygems.org"];
48
- sha256 = "1jv5h7n0vkyjq0v3xqad5xhrl4ijnh214zq3xg4ghvsk6ah8a90r";
48
+ sha256 = "0lc3j74v49b2akyimfnsx3vsgi1i3068cpchn358l0dv27aib6c2";
49
49
  type = "gem";
50
50
  };
51
- version = "3.178.0";
51
+ version = "3.180.3";
52
52
  };
53
53
  aws-sdk-dynamodb = {
54
54
  dependencies = ["aws-sdk-core" "aws-sigv4"];
@@ -56,10 +56,10 @@
56
56
  platforms = [];
57
57
  source = {
58
58
  remotes = ["https://rubygems.org"];
59
- sha256 = "1bnm7bxpz14jggrgidddzirm20w1hj9jfafp20l8rrxrw017bdgi";
59
+ sha256 = "18siyaajyd59sbfvxj16rlgfdlbdshmkqcvdsmbmd7pl88wxr0c4";
60
60
  type = "gem";
61
61
  };
62
- version = "1.92.0";
62
+ version = "1.93.1";
63
63
  };
64
64
  aws-sigv4 = {
65
65
  dependencies = ["aws-eventstream"];
@@ -72,25 +72,15 @@
72
72
  };
73
73
  version = "1.6.0";
74
74
  };
75
- backport = {
75
+ base64 = {
76
76
  groups = ["default" "development"];
77
77
  platforms = [];
78
78
  source = {
79
79
  remotes = ["https://rubygems.org"];
80
- sha256 = "0xbzzjrgah0f8ifgd449kak2vyf30micpz6x2g82aipfv7ypsb4i";
80
+ sha256 = "0cydk9p2cv25qysm0sn2pb97fcpz1isa7n3c8xm1gd99li8x6x8c";
81
81
  type = "gem";
82
82
  };
83
- version = "1.2.0";
84
- };
85
- benchmark = {
86
- groups = ["default" "development"];
87
- platforms = [];
88
- source = {
89
- remotes = ["https://rubygems.org"];
90
- sha256 = "017jh2lx3z5hqjvnqclc5bfr5q0d3zk0nqjfz73909ybr4h20kmi";
91
- type = "gem";
92
- };
93
- version = "0.2.1";
83
+ version = "0.1.1";
94
84
  };
95
85
  citrus = {
96
86
  groups = ["default" "production"];
@@ -112,26 +102,6 @@
112
102
  };
113
103
  version = "1.5.0";
114
104
  };
115
- e2mmap = {
116
- groups = ["default" "development"];
117
- platforms = [];
118
- source = {
119
- remotes = ["https://rubygems.org"];
120
- sha256 = "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5";
121
- type = "gem";
122
- };
123
- version = "0.1.0";
124
- };
125
- jaro_winkler = {
126
- groups = ["default" "development"];
127
- platforms = [];
128
- source = {
129
- remotes = ["https://rubygems.org"];
130
- sha256 = "10fd3i92897blalxfkgc0jjv0qqx31v7cm7j2b6a3b97an0bfz80";
131
- type = "gem";
132
- };
133
- version = "1.5.6";
134
- };
135
105
  jmespath = {
136
106
  groups = ["default" "production"];
137
107
  platforms = [];
@@ -162,28 +132,6 @@
162
132
  };
163
133
  version = "1.0.2";
164
134
  };
165
- kramdown = {
166
- dependencies = ["rexml"];
167
- groups = ["default" "development"];
168
- platforms = [];
169
- source = {
170
- remotes = ["https://rubygems.org"];
171
- sha256 = "1ic14hdcqxn821dvzki99zhmcy130yhv5fqfffkcf87asv5mnbmn";
172
- type = "gem";
173
- };
174
- version = "2.4.0";
175
- };
176
- kramdown-parser-gfm = {
177
- dependencies = ["kramdown"];
178
- groups = ["default" "development"];
179
- platforms = [];
180
- source = {
181
- remotes = ["https://rubygems.org"];
182
- sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv";
183
- type = "gem";
184
- };
185
- version = "1.1.0";
186
- };
187
135
  language_server-protocol = {
188
136
  groups = ["default" "development"];
189
137
  platforms = [];
@@ -194,17 +142,6 @@
194
142
  };
195
143
  version = "3.17.0.3";
196
144
  };
197
- nokogiri = {
198
- dependencies = ["racc"];
199
- groups = ["default" "development"];
200
- platforms = [];
201
- source = {
202
- remotes = ["https://rubygems.org"];
203
- sha256 = "1jw8a20a9k05fpz3q24im19b97idss3179z76yn5scc5b8lk2rl7";
204
- type = "gem";
205
- };
206
- version = "1.15.3";
207
- };
208
145
  parallel = {
209
146
  groups = ["default" "development"];
210
147
  platforms = [];
@@ -267,16 +204,6 @@
267
204
  };
268
205
  version = "13.0.6";
269
206
  };
270
- rbs = {
271
- groups = ["default" "development"];
272
- platforms = [];
273
- source = {
274
- remotes = ["https://rubygems.org"];
275
- sha256 = "0dgj5n7rj83981fvrhswfwsh88x42p7r00nvd80hkxmdcjvda2h6";
276
- type = "gem";
277
- };
278
- version = "2.8.4";
279
- };
280
207
  regexp_parser = {
281
208
  groups = ["default" "development"];
282
209
  platforms = [];
@@ -287,26 +214,15 @@
287
214
  };
288
215
  version = "2.8.1";
289
216
  };
290
- reverse_markdown = {
291
- dependencies = ["nokogiri"];
292
- groups = ["default" "development"];
293
- platforms = [];
294
- source = {
295
- remotes = ["https://rubygems.org"];
296
- sha256 = "0087vhw5ik50lxvddicns01clkx800fk5v5qnrvi3b42nrk6885j";
297
- type = "gem";
298
- };
299
- version = "2.1.1";
300
- };
301
217
  rexml = {
302
218
  groups = ["default" "development"];
303
219
  platforms = [];
304
220
  source = {
305
221
  remotes = ["https://rubygems.org"];
306
- sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
222
+ sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0";
307
223
  type = "gem";
308
224
  };
309
- version = "3.2.5";
225
+ version = "3.2.6";
310
226
  };
311
227
  rspec = {
312
228
  dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
@@ -363,15 +279,15 @@
363
279
  version = "3.12.1";
364
280
  };
365
281
  rubocop = {
366
- dependencies = ["json" "language_server-protocol" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
367
- groups = ["development"];
282
+ dependencies = ["base64" "json" "language_server-protocol" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
283
+ groups = ["default" "development"];
368
284
  platforms = [];
369
285
  source = {
370
286
  remotes = ["https://rubygems.org"];
371
- sha256 = "1hc469ahgpfwbvv2q3hqlhp7dlzcii8dlm8k6k324sq26lilv27r";
287
+ sha256 = "1ig23w64f9y1gi6l4pv69m0nfhn3nnr3q4s81br9vl1b1z02n5cn";
372
288
  type = "gem";
373
289
  };
374
- version = "1.54.2";
290
+ version = "1.56.0";
375
291
  };
376
292
  rubocop-ast = {
377
293
  dependencies = ["parser"];
@@ -423,10 +339,10 @@
423
339
  platforms = [];
424
340
  source = {
425
341
  remotes = ["https://rubygems.org"];
426
- sha256 = "00rsflhijcr0q838fgbdmk7knm5kcjpimn6x0k9qmiw15hi96x1d";
342
+ sha256 = "0ylwy4afnxhbrvlaf8an9nrizj78axnzggiyfcp8v531cv8six5f";
427
343
  type = "gem";
428
344
  };
429
- version = "2.22.0";
345
+ version = "2.23.2";
430
346
  };
431
347
  ruby-progressbar = {
432
348
  groups = ["default" "development"];
@@ -438,17 +354,6 @@
438
354
  };
439
355
  version = "1.13.0";
440
356
  };
441
- solargraph = {
442
- dependencies = ["backport" "benchmark" "diff-lcs" "e2mmap" "jaro_winkler" "kramdown" "kramdown-parser-gfm" "parser" "rbs" "reverse_markdown" "rubocop" "thor" "tilt" "yard"];
443
- groups = ["development"];
444
- platforms = [];
445
- source = {
446
- remotes = ["https://rubygems.org"];
447
- sha256 = "18wpma2mgw82qzf1jwjalmz7nwdvn87b22wd5yy16jb67fqgrq78";
448
- type = "gem";
449
- };
450
- version = "0.49.0";
451
- };
452
357
  strings = {
453
358
  dependencies = ["strings-ansi" "unicode-display_width" "unicode_utils"];
454
359
  groups = ["default" "production"];
@@ -480,26 +385,6 @@
480
385
  };
481
386
  version = "0.0.1";
482
387
  };
483
- thor = {
484
- groups = ["default" "development"];
485
- platforms = [];
486
- source = {
487
- remotes = ["https://rubygems.org"];
488
- sha256 = "0k7j2wn14h1pl4smibasw0bp66kg626drxb59z7rzflch99cd4rg";
489
- type = "gem";
490
- };
491
- version = "1.2.2";
492
- };
493
- tilt = {
494
- groups = ["default" "development"];
495
- platforms = [];
496
- source = {
497
- remotes = ["https://rubygems.org"];
498
- sha256 = "0bmjgbv8158klwp2r3klxjwaj93nh1sbl4xvj9wsha0ic478avz7";
499
- type = "gem";
500
- };
501
- version = "2.2.0";
502
- };
503
388
  toml-rb = {
504
389
  dependencies = ["citrus"];
505
390
  groups = ["production"];
@@ -1,14 +1,14 @@
1
1
  require %(pangea/cli/subcommands/pangea)
2
2
  require %(pangea/synthesizer/config)
3
+ require %(terraform-synthesizer)
3
4
  require %(pangea/cli/config)
4
- require %(json)
5
5
  require %(aws-sdk-dynamodb)
6
6
  require %(aws-sdk-s3)
7
- require %(terraform-synthesizer)
7
+ require %(json)
8
8
 
9
9
  class ConfigCommand < PangeaCommand
10
10
  usage do
11
- desc %(manage configuration)
11
+ desc %(manage configuration)
12
12
  program %(pangea)
13
13
  command %(config)
14
14
  end
@@ -30,6 +30,10 @@ class ConfigCommand < PangeaCommand
30
30
  HELP
31
31
  end
32
32
 
33
+ #############################################################################
34
+ # helpers
35
+ #############################################################################
36
+
33
37
  # check if dynamodb table exists
34
38
  def table_exists?(table_name)
35
39
  dynamodb.describe_table({ table_name: table_name })
@@ -72,6 +76,12 @@ class ConfigCommand < PangeaCommand
72
76
  }
73
77
  end
74
78
 
79
+ # end helpers
80
+
81
+ #####################################################################
82
+ # catch pangea config <subcommand>
83
+ #####################################################################
84
+
75
85
  def run(argv)
76
86
  case argv[1].to_s
77
87
  when %(show)
@@ -95,9 +105,6 @@ class ConfigCommand < PangeaCommand
95
105
  module_dirs = %w[lib src test]
96
106
  modules = ctx[:modules]
97
107
 
98
- puts "modules:"
99
- puts JSON.pretty_generate(modules)
100
-
101
108
  modules.each_key do |mod_name|
102
109
  this_mod = modules[mod_name]
103
110
 
@@ -108,8 +115,6 @@ class ConfigCommand < PangeaCommand
108
115
 
109
116
  lib_dir = File.join(this_mod[:path], %(lib))
110
117
  lib_files = Dir.glob(File.join(this_mod[:path], %(lib), %(**/*.rb)))
111
- puts lib_dir
112
- puts lib_files
113
118
 
114
119
  system(%(mkdir -p #{lib_dir})) unless Dir.exist?(lib_dir)
115
120
 
@@ -130,8 +135,6 @@ class ConfigCommand < PangeaCommand
130
135
 
131
136
  src_dir = File.join(this_mod[:path], %(src))
132
137
  src_files = Dir.glob(File.join(src_dir, %(**/*.rb)))
133
- puts src_dir
134
- puts src_files
135
138
 
136
139
  system(%(mkdir -p #{src_dir})) unless Dir.exist?(src_dir)
137
140
 
@@ -149,6 +152,11 @@ class ConfigCommand < PangeaCommand
149
152
 
150
153
  config[:namespace].each_key do |ns_name|
151
154
  ns = config[:namespace][ns_name]
155
+
156
+ #####################################################################
157
+ # process namespaces in configuraton
158
+ #####################################################################
159
+
152
160
  ns.each_key do |ctx_name|
153
161
  ctx = ns[ctx_name]
154
162
  next unless ctx[:state_config][:terraform][:s3]
@@ -175,10 +183,11 @@ class ConfigCommand < PangeaCommand
175
183
  ###################################################################
176
184
  # s3 bucket setup
177
185
  ###################################################################
186
+
178
187
  bucket_name =
179
188
  ctx[:state_config][:terraform][:s3][:bucket]
180
189
  if bucket_exist?(bucket_name)
181
- puts "bucket already exists: #{bucket_name}"
190
+ nil
182
191
  else
183
192
  s3.create_bucket(bucket: bucket_name)
184
193
  end
@@ -198,7 +207,11 @@ class ConfigCommand < PangeaCommand
198
207
 
199
208
  # end setup directories
200
209
  end
210
+
211
+ # end process namespaces in configuraton
201
212
  end
202
213
  end
203
214
  end
215
+
216
+ # end catch pangea config <subcommand>
204
217
  end
@@ -7,6 +7,7 @@ require %(pangea/errors/project_not_found_error)
7
7
  require %(pangea/errors/no_infra_target_error)
8
8
  require %(pangea/errors/incorrect_subcommand_error)
9
9
  require %(pangea/say/init)
10
+ require %(pangea/modules)
10
11
  require %(terraform-synthesizer)
11
12
  require %(json)
12
13
 
@@ -25,10 +26,11 @@ class InfraCommand < PangeaCommand
25
26
  end
26
27
 
27
28
  argument :target do
28
- desc %(target like ${namespace}.${site}.${project})
29
+ desc %(target like ${namespace}.${site})
29
30
  end
30
31
 
31
32
  def run(argv)
33
+ Say.terminal %(planning!)
32
34
  parse(argv)
33
35
 
34
36
  # grab a config synth
@@ -40,12 +42,38 @@ class InfraCommand < PangeaCommand
40
42
  exit
41
43
  end
42
44
 
45
+ Say.terminal JSON.pretty_generate(cfg_synth)
46
+
43
47
  # preflight checks for the command execution
44
- check_run
45
- check_target(params[:target], cfg_synth)
48
+ # check_run
49
+ # check_target(params[:target], cfg_synth)
50
+
51
+ # targets = params[:target].split('.').map(&:to_sym)
52
+ # process_target(targets, cfg_synth)
53
+
54
+ ###########################################################################
55
+ # modules
56
+ # modules can be fetched from git or local path
57
+ # modules can have a virtual environment to execute in
58
+ ###########################################################################
59
+
60
+ namespaces = cfg_synth[:namespace].keys.map(&:to_sym)
61
+
62
+ namespaces.each do |namespace_name|
63
+ namespace = cfg_synth[:namespace][namespace_name]
64
+ context_names = namespace.keys.map(&:to_sym)
65
+
66
+ context_names.each do |cn|
67
+ context = namespace[cn]
68
+ modules = context[:modules]
69
+
70
+ modules.each do |mod|
71
+ PangeaModule.process(mod)
72
+ end
73
+ end
74
+ end
46
75
 
47
- targets = params[:target].split('.').map(&:to_sym)
48
- process_target(targets, cfg_synth)
76
+ ###########################################################################
49
77
 
50
78
  # provide some kind of default exit of the command execution
51
79
  exit
@@ -146,50 +174,49 @@ class InfraCommand < PangeaCommand
146
174
  # targets can be...
147
175
  # ${namespace}
148
176
  # ${namespace}.${site}
149
- # ${namespace}.${site}.${project}
150
177
  def check_target(target, config)
151
- raise NamespaceNotFoundError if target.nil?
152
-
153
- targets = target.split('.').map(&:to_sym)
154
- namespaces = config[:namespace].keys.map(&:to_sym)
155
- runtype = nil
156
- environments = []
157
-
158
- namespaces.each do |ns_name|
159
- environments.concat(config[:namespace][ns_name].keys.map(&:to_sym))
160
- end
161
-
162
- raise NamespaceNotFoundError unless namespaces.include?(targets[0])
163
-
164
- namespaces.each do |ns_name|
165
- environments.each do |e_name|
166
- sites = config[:namespace][ns_name][e_name][:sites] || []
167
-
168
- next if sites.empty?
169
-
170
- site_names = []
171
- sites.each do |site|
172
- site_names << site[:name]
173
- end
174
-
175
- raise SiteNotFoundError unless site_names.include?(targets[1].to_sym)
176
-
177
- projects = config[:namespace][ns_name][e_name][:projects] || []
178
-
179
- next if projects.empty?
180
-
181
- project_names = []
182
- projects.each do |project|
183
- project_names << project[:name]
184
- end
185
-
186
- raise ProjectNotFoundError \
187
- unless project_names
188
- .include?(
189
- targets[2].to_sym
190
- )
191
- end
192
- end
178
+ # raise NamespaceNotFoundError if target.nil?
179
+
180
+ # targets = target.split('.').map(&:to_sym)
181
+ # namespaces = config[:namespace].keys.map(&:to_sym)
182
+ # runtype = nil
183
+ # environments = []
184
+
185
+ # namespaces.each do |ns_name|
186
+ # environments.concat(config[:namespace][ns_name].keys.map(&:to_sym))
187
+ # end
188
+
189
+ # raise NamespaceNotFoundError unless namespaces.include?(targets[0])
190
+
191
+ # namespaces.each do |ns_name|
192
+ # environments.each do |e_name|
193
+ # sites = config[:namespace][ns_name][e_name][:sites] || []
194
+ #
195
+ # next if sites.empty?
196
+ #
197
+ # site_names = []
198
+ # sites.each do |site|
199
+ # site_names << site[:name]
200
+ # end
201
+ #
202
+ # raise SiteNotFoundError unless site_names.include?(targets[1].to_sym)
203
+ #
204
+ # projects = config[:namespace][ns_name][e_name][:projects] || []
205
+ #
206
+ # next if projects.empty?
207
+ #
208
+ # project_names = []
209
+ # projects.each do |project|
210
+ # project_names << project[:name]
211
+ # end
212
+ #
213
+ # raise ProjectNotFoundError \
214
+ # unless project_names
215
+ # .include?(
216
+ # targets[2].to_sym
217
+ # )
218
+ # end
219
+ # end
193
220
  end
194
221
 
195
222
  def check_run
@@ -0,0 +1,72 @@
1
+ ###############################################################################
2
+ # modules
3
+ # module for handling pangea modules
4
+ # pangea modules are execution units
5
+ # for terraform code.
6
+ ###############################################################################
7
+
8
+ module PangeaBase
9
+ BASE_DIR = File.join(
10
+ Dir.home,
11
+ %(.pangea)
12
+ )
13
+ end
14
+
15
+ module PangeaRbenv
16
+ include PangeaBase
17
+
18
+ BIN = %(rbenv).freeze
19
+
20
+ RBENV_DIR = File.join(
21
+ BASE_DIR,
22
+ %(rbenv)
23
+ )
24
+
25
+ VERSIONS_DIR = File.join(
26
+ RBENV_DIR,
27
+ %(versions)
28
+ )
29
+
30
+ class << self
31
+ def rbenv_installed?
32
+ `which rbenv`.strip != ''
33
+ end
34
+
35
+ def rbenv_install(_version)
36
+ system %(mkdir -p #{VERSIONS_DIR}) unless Dir.exist?(VERSIONS_DIR)
37
+ end
38
+ end
39
+ end
40
+
41
+ module PangeaModule
42
+ include PangeaBase
43
+
44
+ CACHE_DIR = File.join(
45
+ BASE_DIR,
46
+ %(cache)
47
+ )
48
+
49
+ RUBIES_DIR = File.join(
50
+ BASE_DIR,
51
+ %(rubies)
52
+ )
53
+
54
+ RUBIES_DIR = File.join(
55
+ BASE_DIR,
56
+ %(rubies)
57
+ )
58
+
59
+ SECTIONS = %i[
60
+ lib
61
+ src
62
+ ].freeze
63
+
64
+ class << self
65
+ # entrypoint for module processing
66
+ def process(mod)
67
+ exit 1 unless mod.fetch(:sandboxed, false)
68
+ end
69
+ end
70
+ end
71
+
72
+ # end modules
@@ -1,3 +1,3 @@
1
1
  module Pangea
2
- VERSION = %(0.0.30).freeze
2
+ VERSION = %(0.0.32).freeze
3
3
  end
data/lib/pangea.rb ADDED
@@ -0,0 +1,11 @@
1
+ ###############################################################################
2
+ # non-cli top level commands
3
+ ###############################################################################
4
+
5
+ module Pangea
6
+ class << self
7
+ def ping
8
+ %(pong)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require %(pangea/modules)
4
+
5
+ describe PangeaModule do
6
+ context %(baseline) do
7
+ it %(does things) do
8
+ expect(true).to be true
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pangea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.30
4
+ version: 0.0.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - drzthslnt@gmail.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-23 00:00:00.000000000 Z
11
+ date: 2023-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop-rspec
@@ -288,6 +288,7 @@ files:
288
288
  - flake.lock
289
289
  - flake.nix
290
290
  - gemset.nix
291
+ - lib/pangea.rb
291
292
  - lib/pangea/cli.rb
292
293
  - lib/pangea/cli/config.rb
293
294
  - lib/pangea/cli/constants.rb
@@ -302,6 +303,7 @@ files:
302
303
  - lib/pangea/errors/project_not_found_error.rb
303
304
  - lib/pangea/errors/site_not_found_error.rb
304
305
  - lib/pangea/log/init.rb
306
+ - lib/pangea/modules.rb
305
307
  - lib/pangea/say/init.rb
306
308
  - lib/pangea/shell/README.md
307
309
  - lib/pangea/shell/terraform.rb
@@ -315,6 +317,7 @@ files:
315
317
  - pangea.gemspec
316
318
  - pangea.rb
317
319
  - spec/cli/config_spec.rb
320
+ - spec/modules_spec.rb
318
321
  - spec/synthesizer/config_spec.rb
319
322
  homepage: https://github.com/drzln/pangea
320
323
  licenses: