regolith 0.1.28 → 0.1.30

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
  SHA256:
3
- metadata.gz: 0f69bb3b17c78b25057627158d7ff12fd6a6e13fae842bb0b0ac663614fffccd
4
- data.tar.gz: d166ce29e11051e4ddbfbccf7c157ce76ebaf8ac773481db20015b74857ce427
3
+ metadata.gz: 25e890947b62730f38bc5ad78253819f5c7a52d9c604d8ff6167347282d70ca0
4
+ data.tar.gz: 85d0b5420d0eb830438011f9a3640c498746525735abfcc761475796c33a52c2
5
5
  SHA512:
6
- metadata.gz: 131432552c9bcfeab83d7a5e814dc27d2f8a819addccc168fa5c8b05e56f34ad9313923a98c1dafd7ccaa31d591847464164854e75b8b83b00d66f1c3e6a4264
7
- data.tar.gz: 037d67f0cf5e6a24f50e24dc46599d9f006c1e8b0baf65ff35769487ff066863fa50ede63f51e3cff196b42d58e23f2d1626c6e6bf131bfd1e3a14d712a5d5e0
6
+ metadata.gz: 74e5f7521b2ce9fcd73217dcf29dfd5f0af7200116883624cd9e6514cd0ca388acb24476e47ca2b249b16ba7860f8d644a0fdc1aedf7dd9fb1d6c8fbfa3b2292
7
+ data.tar.gz: 2630ddbfdf6a2ba082552f77d82d211234ba37e6644898f85c3aa6b08f22385ab2b27f64c41e33f835e1f56de2cefbad2fbf7c0d97e5a86b018cd00154dc17b4
data/lib/regolith/cli.rb CHANGED
@@ -61,7 +61,7 @@ module Regolith
61
61
  'infrastructure' => {
62
62
  'database' => {
63
63
  'type' => 'postgresql',
64
- 'port' => 5432
64
+ 'base_port' => 5432
65
65
  }
66
66
  }
67
67
  }
@@ -87,6 +87,7 @@ module Regolith
87
87
  puts "🔧 Creating service '#{service_name}'..."
88
88
  config = load_regolith_config
89
89
  port = find_available_port(config)
90
+ db_port = find_available_port_for_db(config)
90
91
  service_dir = "services/#{service_name}_service"
91
92
 
92
93
  puts " → Generating Rails API app..."
@@ -167,6 +168,7 @@ module Regolith
167
168
 
168
169
  config['services'][service_name] = {
169
170
  'port' => port,
171
+ 'db_port' => db_port,
170
172
  'root' => "./#{service_dir}"
171
173
  }
172
174
  save_regolith_config(config)
@@ -174,6 +176,7 @@ module Regolith
174
176
 
175
177
  puts "✅ Created service '#{service_name}'"
176
178
  puts "🚀 Service running on port #{port}"
179
+ puts "🗄️ Database running on port #{db_port}"
177
180
  puts "→ Next: regolith generate service <another_service> or regolith server"
178
181
  end
179
182
 
@@ -195,7 +198,7 @@ module Regolith
195
198
 
196
199
  loop do
197
200
  if !used_ports.include?(port) && port_available?(port)
198
- puts "🔌 Assigned port #{port}"
201
+ puts "🔌 Assigned service port #{port}"
199
202
  return port
200
203
  end
201
204
 
@@ -215,6 +218,32 @@ module Regolith
215
218
  end
216
219
  end
217
220
 
221
+ def find_available_port_for_db(config, starting_port = 5432)
222
+ used_db_ports = config['services'].values.map { |s| s['db_port'] }.compact
223
+ port = starting_port
224
+
225
+ loop do
226
+ if !used_db_ports.include?(port) && port_available?(port)
227
+ puts "🗄️ Assigned database port #{port}"
228
+ return port
229
+ end
230
+
231
+ if used_db_ports.include?(port)
232
+ puts "⚠️ Database port #{port} already used by another Regolith service"
233
+ else
234
+ puts "⚠️ Database port #{port} already in use by system"
235
+ end
236
+
237
+ port += 1
238
+
239
+ # Safety check for database ports
240
+ if port > 5450
241
+ puts "❌ Error: No available database ports found in range #{starting_port}-5450"
242
+ exit 1
243
+ end
244
+ end
245
+ end
246
+
218
247
  # --- Helper to make Bootsnap optional ---
219
248
  def make_bootsnap_optional(service_dir)
220
249
  boot_rb_path = File.join(service_dir, "config", "boot.rb")
@@ -281,6 +310,7 @@ module Regolith
281
310
 
282
311
  config['services'].each do |name, service|
283
312
  puts "🚀 #{name}_service running at http://localhost:#{service['port']}"
313
+ puts "🗄️ #{name}_database running on port #{service['db_port']}"
284
314
  end
285
315
 
286
316
  puts "🧭 Service registry loaded from config/regolith.yml"
@@ -328,35 +358,37 @@ module Regolith
328
358
  version: '3.8'
329
359
 
330
360
  services:
331
- db:
361
+ <% services.each do |name, service| %>
362
+ <%= name %>_db:
332
363
  image: postgres:14
333
364
  environment:
334
- POSTGRES_DB: #{app_name}_development
365
+ POSTGRES_DB: <%= name %>_development
335
366
  POSTGRES_USER: postgres
336
367
  POSTGRES_PASSWORD: password
337
368
  ports:
338
- - "5432:5432"
369
+ - "<%= service['db_port'] %>:5432"
339
370
  volumes:
340
- - postgres_data:/var/lib/postgresql/data
371
+ - <%= name %>_postgres_data:/var/lib/postgresql/data
341
372
 
342
- <% services.each do |name, service| %>
343
373
  <%= name %>:
344
374
  build: <%= service['root'] %>
345
375
  ports:
346
376
  - "<%= service['port'] %>:3000"
347
377
  depends_on:
348
- - db
378
+ - <%= name %>_db
349
379
  environment:
350
- DATABASE_URL: postgres://postgres:password@db:5432/<%= app_name %>_development
380
+ DATABASE_URL: postgresql://postgres:password@<%= name %>_db:5432/<%= name %>_development
351
381
  REGOLITH_SERVICE_NAME: <%= name %>
352
382
  REGOLITH_SERVICE_PORT: <%= service['port'] %>
353
383
  volumes:
354
384
  - <%= service['root'] %>:/app
355
385
  command: bash -c "rm -f tmp/pids/server.pid && bundle install && rails server -b 0.0.0.0"
356
- <% end %>
357
386
 
387
+ <% end %>
358
388
  volumes:
359
- postgres_data:
389
+ <% services.each do |name, service| %>
390
+ <%= name %>_postgres_data:
391
+ <% end %>
360
392
  YAML
361
393
 
362
394
  ERB.new(template).result(binding)
@@ -1,4 +1,4 @@
1
1
  # lib/regolith/version.rb
2
2
  module Regolith
3
- VERSION = "0.1.28"
3
+ VERSION = "0.1.30"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: regolith
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.28
4
+ version: 0.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Regolith Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-10 00:00:00.000000000 Z
11
+ date: 2025-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport