captive-stack-detector 0.9.0 → 0.9.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
  SHA256:
3
- metadata.gz: b76909efc2f43ad9460c45c09e1d49e2129a71dd6a83e9034d3e7014d838e3e7
4
- data.tar.gz: d1e3d67c81abed91d14dafdb56b025113a1dc0fdd66c426570dc13b84fc1610c
3
+ metadata.gz: 390061bda035fdc2b686a8fa5b9cffd1df43bfec160ea01147444f7f07d2526d
4
+ data.tar.gz: 71c351bbf691e952d2aa5972e2a9c22d27caf5fdca2da4bcffe07188a8293e56
5
5
  SHA512:
6
- metadata.gz: 9afd81fb1afd6ddc07b72d94159aae066675f05ad4a9c8fe2934746de386cf542796162b7e834b7bddbbb2c5bdb5f8eb023c15f69c2824a5e02767e609e4d654
7
- data.tar.gz: ef0f80061ab951116e7abda178814cfa864843ca924f1fb4de539169c8b3ff52892bb9844cb9e73ba5fc69b7dbd0588d3b061c74d01a1d952a052df1f0525a8e
6
+ metadata.gz: fe04ff00ac23c390404eb2176fded572115311cf81f023f04c6cf2c4d0bfe8273186491151e73e1e252f7f57e7601c24f94949aae55edb3fcedcbd03991e8f00
7
+ data.tar.gz: '08fa5dd4dc07f8b6026b581a3259ba07dbbd66cad39ec08696235dc48fe28f800ddd87c3505782e5db7ba9eeb0f46e441acf91d08c87a0945208a61c4d48d836'
data/docs/stacks.md CHANGED
@@ -116,7 +116,7 @@ Condition : ni `Gemfile` ni `package.json` à la racine, mais un `public/index.h
116
116
 
117
117
  - Si `public/` existe, seul ce dossier est servi.
118
118
  - Sinon la racine est servie, limitée aux fichiers web (HTML, JavaScript, CSS, JSON, images, polices, manifeste, texte). Les dossiers cachés (`.git/`, `.github/`), `supabase/`, vos scripts SQL ou votre documentation ne sont jamais publiés.
119
- - Un dossier `supabase/` avec son `config.toml` provisionne un backend Supabase.
119
+ - Un dossier `supabase/` avec son `config.toml` provisionne un backend Supabase et sa base Postgres.
120
120
  - Faute de build, aucune variable n'est injectée : votre code lit directement l'adresse de l'API, par exemple `location.origin`.
121
121
 
122
122
  ## Expo
@@ -4,9 +4,13 @@ require_relative "types"
4
4
 
5
5
  module CaptiveStackDetector
6
6
  # Un site statique sans manifeste ni build (index.html qui charge ses scripts) : stack node
7
- # sans subtype, servie telle quelle. Supabase se reconnaît à son dossier, faute de package.json.
7
+ # sans subtype, servie telle quelle. Supabase (et sa base Postgres) se reconnaît à son dossier, faute de package.json.
8
8
  class StaticSiteDetector
9
9
  ENTRIES = %w[public/index.html index.html].freeze
10
+ NO_RUNTIME = Runtime.new(ruby: nil, node: nil)
11
+ NO_SERVICES = Services.new(database: nil, queue: nil, backend: nil)
12
+ # Supabase repose sur Postgres, comme le déduit PackageJsonAnalyzer pour une stack Node.
13
+ SUPABASE = Services.new(database: "postgres", queue: nil, backend: "supabase")
10
14
 
11
15
  def initialize(reader)
12
16
  @reader = reader
@@ -18,14 +22,10 @@ module CaptiveStackDetector
18
22
 
19
23
  def detect
20
24
  Result.new(
21
- type: "node", subtype: nil, worker: nil, env_vars: [], system_packages: [],
22
- services: Services.new(database: nil, queue: nil, backend: backend),
23
- runtime: Runtime.new(ruby: nil, node: nil),
25
+ type: "node", subtype: nil, worker: nil, env_vars: {}, system_packages: [],
26
+ services: @reader.read("supabase/config.toml") ? SUPABASE : NO_SERVICES,
27
+ runtime: NO_RUNTIME,
24
28
  )
25
29
  end
26
-
27
- private
28
-
29
- def backend = ("supabase" if @reader.read("supabase/config.toml"))
30
30
  end
31
31
  end
@@ -8,7 +8,11 @@ module CaptiveStackDetector
8
8
  # (VITE_, NEXT_PUBLIC_, EXPO_PUBLIC_), nil sans bundler front (PackageJsonAnalyzer).
9
9
  Result = Data.define(:type, :subtype, :services, :worker, :runtime, :env_vars, :system_packages,
10
10
  :public_env_prefix) do
11
- def initialize(public_env_prefix: nil, **) = super
11
+ # env_vars : { "NOM" => valeur }, fusionné par captive-admin au provisionnement.
12
+ def initialize(env_vars:, public_env_prefix: nil, **)
13
+ Hash.try_convert(env_vars) or raise ArgumentError, "env_vars doit être un Hash"
14
+ super
15
+ end
12
16
  end
13
17
 
14
18
  # reason : :no_manifest, :no_rails ou :no_node_entry, pour que l'appelant explique le refus.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CaptiveStackDetector
4
- VERSION = "0.9.0"
4
+ VERSION = "0.9.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: captive-stack-detector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Captive Studio