Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit61f7d22

Browse files
chirimoyafabpot
authored andcommitted
Add Symfony CLI support for bootstrapping Sulu projects
1 parent3ea9ee3 commit61f7d22

File tree

2 files changed

+87
-19
lines changed

2 files changed

+87
-19
lines changed

‎commands/init_templating.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func createRequiredFilesProject(product upsun.CloudProduct, rootDirectory, proje
7070
}
7171
phpExts:=append(phpExtensions(rootDirectory),"apcu","mbstring","sodium","xsl","blackfire")
7272
for_,service:=rangecloudServices {
73-
ifv,ok:=availablePHPExtensions[service.Type];ok {
73+
ifv,ok:=availablePHPExtensions[service.Endpoint];ok {
7474
phpExts=append(phpExts,v...)
7575
}
7676
}

‎commands/local_new.go‎

Lines changed: 86 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,24 @@ import (
4444
)
4545

4646
typeCloudServicestruct {
47-
Namestring
48-
Typestring
49-
Versionstring
47+
Namestring
48+
Typestring
49+
Endpointstring
50+
Versionstring
51+
}
52+
53+
// SetEndpoint validates and sets the endpoint based on the service type.
54+
// It handles special type mappings (e.g., redis-persistent -> redis, oracle-mysql -> mysql)
55+
// and defaults to using the type as the endpoint for standard services.
56+
func (s*CloudService)SetEndpoint() {
57+
switchs.Type {
58+
case"redis-persistent":
59+
s.Endpoint="redis"
60+
case"oracle-mysql":
61+
s.Endpoint="mysql"
62+
default:
63+
s.Endpoint=s.Type
64+
}
5065
}
5166

5267
varlocalNewCmd=&console.Command{
@@ -62,6 +77,7 @@ var localNewCmd = &console.Command{
6277
},
6378
&console.BoolFlag{Name:"full",Usage:"Use github.com/symfony/website-skeleton (deprecated, use --webapp instead)"},
6479
&console.BoolFlag{Name:"demo",Usage:"Use github.com/symfony/demo"},
80+
&console.StringFlag{Name:"skeleton",Usage:"Skeleton to use (symfony, sulu, or a custom package name)",DefaultValue:"symfony"},
6581
&console.BoolFlag{Name:"webapp",Usage:"Add the webapp pack to get a fully configured web project"},
6682
&console.BoolFlag{Name:"api",Usage:"Add the api pack to get a fully configured api project"},
6783
&console.BoolFlag{Name:"book",Usage:"Clone the Symfony: The Fast Track book project"},
@@ -136,6 +152,9 @@ var localNewCmd = &console.Command{
136152
ifsymfonyVersion!=""&&c.Bool("demo") {
137153
returnconsole.Exit("The --version flag is not supported for the Symfony Demo",1)
138154
}
155+
ifc.Bool("demo")&&c.String("skeleton")!="symfony" {
156+
returnconsole.Exit("The --demo flag cannot be used with --skeleton",1)
157+
}
139158
ifc.Bool("webapp")&&c.Bool("api") {
140159
returnconsole.Exit("The --api flag cannot be used with --webapp",1)
141160
}
@@ -280,14 +299,22 @@ func parseCLIServices(services []string) ([]*CloudService, error) {
280299
parts:=strings.Split(config,":")
281300
iflen(parts)==1 {
282301
// service == name
283-
service=&CloudService{Name:parts[0],Type:parts[0],Version:upsun.ServiceLastVersion(parts[1])}
302+
service=&CloudService{Name:parts[0],Type:parts[0],Version:upsun.ServiceLastVersion(parts[0])}
284303
}elseiflen(parts)==2 {
285304
service=&CloudService{Name:parts[0],Type:parts[1],Version:upsun.ServiceLastVersion(parts[1])}
286305
}elseiflen(parts)==3 {
287306
service=&CloudService{Name:parts[0],Type:parts[1],Version:parts[2]}
288307
}else {
289308
returnnil,errors.Errorf("unable to parse service\"%s\"",config)
290309
}
310+
311+
service.SetEndpoint()
312+
313+
// For redis-persistent, update version based on the endpoint
314+
ifservice.Type=="redis-persistent" {
315+
service.Version=upsun.ServiceLastVersion(service.Endpoint)
316+
}
317+
291318
cloudServices=append(cloudServices,service)
292319
}
293320
returncloudServices,nil
@@ -311,7 +338,15 @@ func parseDockerComposeServices(dir string) []*CloudService {
311338
vars*CloudService
312339
switchport.Target {
313340
case3306:
314-
s=&CloudService{Type:"mysql"}
341+
// Distinguish between MySQL and MariaDB based on image name
342+
dbType:="mysql"
343+
ifstrings.Contains(strings.ToLower(service.Image),"mariadb") {
344+
dbType="mariadb"
345+
}elseifstrings.Contains(strings.ToLower(service.Image),"mysql") {
346+
dbType="oracle-mysql"
347+
}
348+
349+
s=&CloudService{Type:dbType}
315350
case5432:
316351
s=&CloudService{Type:"postgresql"}
317352
case6379:
@@ -331,6 +366,9 @@ func parseDockerComposeServices(dir string) []*CloudService {
331366
ifs!=nil&&!done {
332367
seen[service.Name]=true
333368
s.Name=service.Name
369+
370+
s.SetEndpoint()
371+
334372
parts:=strings.Split(service.Image,":")
335373
s.Version=regexp.MustCompile(`\d+(\.\d+)?`).FindString(parts[len(parts)-1])
336374
serviceLastVersion:=upsun.ServiceLastVersion(s.Type)
@@ -364,30 +402,60 @@ func initProjectGit(c *console.Context, dir string) error {
364402
}
365403

366404
funccreateProjectWithComposer(c*console.Context,dir,versionstring)error {
405+
// Determine the repository and project type
406+
repo:="symfony/skeleton"
407+
projectType:="Symfony"
408+
409+
ifr:=os.Getenv("SYMFONY_REPO");r!="" {
410+
repo=r
411+
}elseifc.Bool("full") {
412+
terminal.SymfonyStyle(terminal.Stdout,terminal.Stdin).Warning("The --full flag is deprecated, use --webapp instead.")
413+
repo="symfony/website-skeleton"
414+
}elseifc.Bool("demo") {
415+
repo="symfony/symfony-demo"
416+
}elseifc.String("skeleton")!="" {
417+
// Handle skeleton flag
418+
skeleton:=c.String("skeleton")
419+
switchskeleton {
420+
case"symfony":
421+
repo="symfony/skeleton"
422+
projectType="Symfony"
423+
case"sulu":
424+
repo="sulu/skeleton"
425+
projectType="Sulu"
426+
case"demo":
427+
repo="symfony/symfony-demo"
428+
projectType="Symfony Demo"
429+
default:
430+
// Use custom Composer package directly
431+
repo=skeleton
432+
433+
// Use the package name as the project type
434+
parts:=strings.Split(skeleton,"/")
435+
iflen(parts)>1 {
436+
projectType=parts[1]
437+
}else {
438+
projectType=skeleton
439+
}
440+
}
441+
}
442+
443+
// Display appropriate message based on project type
367444
ifc.Bool("demo") {
368445
terminal.Println("* Creating a new Symfony Demo project with Composer")
369446
}elseifversion!="" {
370-
ifversion=="lts"||version=="previous"||version=="stable"||version=="next"||version=="dev" {
447+
// Only handle special versions for Symfony projects
448+
ifprojectType=="Symfony"&& (version=="lts"||version=="previous"||version=="stable"||version=="next"||version=="dev") {
371449
varerrerror
372450
version,err=getSpecialVersion(version)
373451
iferr!=nil {
374452
returnerr
375453
}
376454
}
377455

378-
terminal.Printfln("* Creating a newSymfony %s project with Composer",version)
456+
terminal.Printfln("* Creating a new%s %s project with Composer",projectType,version)
379457
}else {
380-
terminal.Println("* Creating a new Symfony project with Composer")
381-
}
382-
383-
repo:="symfony/skeleton"
384-
ifr:=os.Getenv("SYMFONY_REPO");r!="" {
385-
repo=r
386-
}elseifc.Bool("full") {
387-
terminal.SymfonyStyle(terminal.Stdout,terminal.Stdin).Warning("The --full flag is deprecated, use --webapp instead.")
388-
repo="symfony/website-skeleton"
389-
}elseifc.Bool("demo") {
390-
repo="symfony/symfony-demo"
458+
terminal.Printfln("* Creating a new %s project with Composer",projectType)
391459
}
392460

393461
ifok,_:=regexp.MatchString("^\\d+\\.\\d+$",version);ok {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp