9
9
"os"
10
10
"path/filepath"
11
11
"strings"
12
+
13
+ "go.jetpack.io/devbox/boxcli/usererr"
12
14
)
13
15
14
16
// https://github.com/NixOS/nixpkgs/tree/nixos-22.05/pkgs/development/interpreters/php
@@ -32,17 +34,33 @@ func (g *PHPPlanner) Name() string {
32
34
}
33
35
34
36
func (g * PHPPlanner ) IsRelevant (srcDir string ) bool {
35
- return fileExists (filepath .Join (srcDir , "composer.lock" ))
37
+ return fileExists (filepath .Join (srcDir , "composer.lock" )) ||
38
+ fileExists (filepath .Join (srcDir , "composer.json" ))
36
39
}
37
40
38
41
func (g * PHPPlanner ) GetPlan (srcDir string ) * Plan {
39
42
v := g .version (srcDir )
40
- return & Plan {
43
+ plan := & Plan {
41
44
DevPackages : []string {
42
45
fmt .Sprintf ("php%s" , v .majorMinorConcatenated ()),
43
46
fmt .Sprintf ("php%sPackages.composer" , v .majorMinorConcatenated ()),
44
47
},
48
+ RuntimePackages : []string {
49
+ fmt .Sprintf ("php%s" , v .majorMinorConcatenated ()),
50
+ fmt .Sprintf ("php%sPackages.composer" , v .majorMinorConcatenated ()),
51
+ },
52
+ }
53
+ if ! fileExists (filepath .Join (srcDir , "public/index.php" )) {
54
+ return plan .WithError (usererr .New ("Can't build. No public/index.php found." ))
55
+ }
56
+
57
+ plan .InstallStage = & Stage {
58
+ Command : "composer install --no-dev --no-ansi" ,
59
+ }
60
+ plan .StartStage = & Stage {
61
+ Command : "php -S 0.0.0.0:8080 -t public" ,
45
62
}
63
+ return plan
46
64
}
47
65
48
66
func (g * PHPPlanner ) version (srcDir string ) * version {
0 commit comments