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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 390061bda035fdc2b686a8fa5b9cffd1df43bfec160ea01147444f7f07d2526d
|
|
4
|
+
data.tar.gz: 71c351bbf691e952d2aa5972e2a9c22d27caf5fdca2da4bcffe07188a8293e56
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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:
|
|
22
|
-
services:
|
|
23
|
-
runtime:
|
|
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
|
-
|
|
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.
|