captive-stack-detector 0.8.4 → 0.9.0

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: 9b3af49e63482068e44d5c1b1064695ac49eadd05c1a63447e29cfe57423492b
4
- data.tar.gz: ef69968ebaec94b711a248afe56dad7bfcbc0b8fca3f349683810375d3929ff9
3
+ metadata.gz: b76909efc2f43ad9460c45c09e1d49e2129a71dd6a83e9034d3e7014d838e3e7
4
+ data.tar.gz: d1e3d67c81abed91d14dafdb56b025113a1dc0fdd66c426570dc13b84fc1610c
5
5
  SHA512:
6
- metadata.gz: 88acfedc7245af2d7526bc4416159d137f4b0fdd3649f883a7cc8d8f41af9bef4ef32f8c26c67921314d86b8d7b47437cd1bb01b1459a0cfa52e341b47e4840c
7
- data.tar.gz: f9d7277815801c5e0e0b769dc68d0b884d911d88044318700b4af975957f31bbd4e43eda31c7089f55ebdbf4f3ef948e877a96bf4e5b8cbc0a48c75550abba10
6
+ metadata.gz: 9afd81fb1afd6ddc07b72d94159aae066675f05ad4a9c8fe2934746de386cf542796162b7e834b7bddbbb2c5bdb5f8eb023c15f69c2824a5e02767e609e4d654
7
+ data.tar.gz: ef0f80061ab951116e7abda178814cfa864843ca924f1fb4de539169c8b3ff52892bb9844cb9e73ba5fc69b7dbd0588d3b061c74d01a1d952a052df1f0525a8e
data/docs/stacks.md CHANGED
@@ -110,6 +110,15 @@ Avec un backend Supabase, Captive pose l'URL et la clé publique sous ce préfix
110
110
 
111
111
  Ces variables sont lues **au build** : après en avoir changé une, redéployez.
112
112
 
113
+ ### Site statique sans build
114
+
115
+ Condition : ni `Gemfile` ni `package.json` à la racine, mais un `public/index.html` ou un `index.html` à la racine. Rien n'est installé ni buildé : vos fichiers sont servis tels quels.
116
+
117
+ - Si `public/` existe, seul ce dossier est servi.
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.
120
+ - Faute de build, aucune variable n'est injectée : votre code lit directement l'adresse de l'API, par exemple `location.origin`.
121
+
113
122
  ## Expo
114
123
 
115
124
  Condition : un `package.json` à la racine avec la dépendance `expo` (dans `dependencies` ou `devDependencies`). Aucun script n'est exigé.
@@ -126,7 +135,7 @@ Condition : un `package.json` à la racine avec la dépendance `expo` (dans `dep
126
135
 
127
136
  | Message | Cause | Que faire |
128
137
  | --- | --- | --- |
129
- | Aucun Gemfile ni package.json à la racine du dépôt. | Pas de fichier de dépendances à la racine. | Vérifiez que l'application est bien à la racine du dépôt, pas dans un sous-dossier (`app/`, `frontend/`…). Les monorepos ne sont pas pris en charge. |
138
+ | Aucun Gemfile ni package.json à la racine du dépôt. | Pas de fichier de dépendances ni d'`index.html` à la racine. | Vérifiez que l'application est bien à la racine du dépôt, pas dans un sous-dossier (`app/`, `frontend/`…). Les monorepos ne sont pas pris en charge. |
130
139
  | Gemfile trouvé, mais sans la gem rails. | Application Ruby non Rails (Sinatra, Hanami…), ou `Gemfile` d'outillage dans un projet JavaScript. | Seul Rails est pris en charge côté Ruby. Si le `Gemfile` ne sert qu'à de l'outillage, retirez-le du dépôt. |
131
140
  | package.json trouvé, mais sans dépendance expo ni script start ou build. | Captive ne sait pas comment construire l'application. | Ajoutez un script `build` (application web) ou `start` (serveur), comme dans les exemples ci-dessus. |
132
141
 
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "types"
4
+
5
+ module CaptiveStackDetector
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.
8
+ class StaticSiteDetector
9
+ ENTRIES = %w[public/index.html index.html].freeze
10
+
11
+ def initialize(reader)
12
+ @reader = reader
13
+ end
14
+
15
+ def site?
16
+ ENTRIES.any? { |entry| @reader.read(entry) }
17
+ end
18
+
19
+ def detect
20
+ 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),
24
+ )
25
+ end
26
+
27
+ private
28
+
29
+ def backend = ("supabase" if @reader.read("supabase/config.toml"))
30
+ end
31
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CaptiveStackDetector
4
- VERSION = "0.8.4"
4
+ VERSION = "0.9.0"
5
5
  end
@@ -6,6 +6,7 @@ require_relative "captive_stack_detector/file_reader"
6
6
  require_relative "captive_stack_detector/gemfile_analyzer"
7
7
  require_relative "captive_stack_detector/rails_stack_detector"
8
8
  require_relative "captive_stack_detector/js_stack_detector"
9
+ require_relative "captive_stack_detector/static_site_detector"
9
10
 
10
11
  module CaptiveStackDetector
11
12
  # Doc publique des stacks supportées, livrée dans la gem et affichée par le dashboard (ADR 0003).
@@ -23,7 +24,10 @@ module CaptiveStackDetector
23
24
  return RailsStackDetector.new(reader, GemfileAnalyzer.new(gemfile)).detect if gemfile
24
25
  return JsStackDetector.new(reader, package_json).detect if package_json
25
26
 
26
- raise UnsupportedStack, :no_manifest
27
+ static_site = StaticSiteDetector.new(reader)
28
+ raise UnsupportedStack, :no_manifest unless static_site.site?
29
+
30
+ static_site.detect
27
31
  end
28
32
  private_class_method :detect_from
29
33
  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.8.4
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Captive Studio
@@ -43,6 +43,7 @@ files:
43
43
  - lib/captive_stack_detector/solid_queue_usage.rb
44
44
  - lib/captive_stack_detector/solid_queue_worker.rb
45
45
  - lib/captive_stack_detector/ssr_framework_detector.rb
46
+ - lib/captive_stack_detector/static_site_detector.rb
46
47
  - lib/captive_stack_detector/system_package_detector.rb
47
48
  - lib/captive_stack_detector/types.rb
48
49
  - lib/captive_stack_detector/version.rb