8000 Fix Platform.sh PHP extension parsing · symfony-cli/symfony-cli@331554b · GitHub
[go: up one dir, main page]

Skip to content

Commit 331554b

Browse files
committed
Fix Platform.sh PHP extension parsing
1 parent dc465ec commit 331554b

File tree

4 files changed

+127
-45
lines changed

4 files changed

+127
-45
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ require (
5959
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
6060
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5e 10000 f7bd5415 // indirect
6161
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
62-
golang.org/x/crypto v0.6.0 // indirect
62+
golang.org/x/crypto v0.1.0 // indirect
6363
golang.org/x/mod v0.8.0 // indirect
64-
golang.org/x/net v0.7.0 // indirect
64+
golang.org/x/net v0.6.0 // indirect
6565
golang.org/x/sys v0.5.0 // indirect
6666
golang.org/x/term v0.5.0 // indirect
6767
golang.org/x/time v0.1.0 // indirect

go.sum

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,10 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ
1212
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1313
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1414
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
15-
github.com/distribution/distribution/v3 v3.0.0-20230131081513-cf87e8d07e8d h1:q1rtMRnFYz9NAVV4k2iL/w5mNkur3TJysH3Phi9Ns08=
16-
github.com/distribution/distribution/v3 v3.0.0-20230131081513-cf87e8d07e8d/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI=
1715
github.com/distribution/distribution/v3 v3.0.0-20230214150026-36d8c594d7aa h1:L9Ay/slwQ4ERSPaurC+TVkZrM0K98GNrEEo1En3e8as=
1816
github.com/distribution/distribution/v3 v3.0.0-20230214150026-36d8c594d7aa/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI=
1917
github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
2018
github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
21-
github.com/docker/docker v23.0.0+incompatible h1:L6c28tNyqZ4/ub9AZC9d5QUuunoHHfEH4/Ue+h/E5nE=
22-
github.com/docker/docker v23.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
2319
github.com/docker/docker v23.0.1+incompatible h1:vjgvJZxprTTE1A37nm+CLNAdwu6xZekyoiVlUZEINcY=
2420
github.com/docker/docker v23.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
2521
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
@@ -146,8 +142,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
146142
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
147143
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
148144
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
149-
golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc=
150-
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
145+
golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU=
146+
golang.org/x/crypto v0. 10000 1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
151147
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
152148
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
153149
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
@@ -161,8 +157,6 @@ golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwY
161157
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
162158
golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q=
163159
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
164-
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
165-
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
166160
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
167161
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
168162
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -198,8 +192,6 @@ golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgw
198192
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
199193
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
200194
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
201-
golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4=
202-
golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
203195
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
204196
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
205197
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

local/platformsh/config.go

Lines changed: 103 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

local/platformsh/generator/config.go

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package main
22

33
import (
4-
"bufio"
54
"bytes"
65
"encoding/json"
76
"fmt"
87
"io/ioutil"
9-
"log"
108
"net/http"
119
"os"
1210
"sort"
1311
"strings"
1412
"text/template"
1513

1614
"github.com/hashicorp/go-version"
15+
"gopkg.in/yaml.v2"
1716
)
1817

1918
type service struct {
@@ -139,53 +138,41 @@ func parseServices() (string, error) {
139138
}
140139

141140
func parsePHPExtensions() (string, error) {
142-
resp, err := http.Get("https://raw.githubusercontent.com/platformsh/platformsh-docs/master/docs/src/languages/php/extensions.md")
141+
resp, err := http.Get("https://raw.githubusercontent.com/platformsh/platformsh-docs/master/docs/data/php_extensions.yaml")
143142
if err != nil {
144143
return "", err
145144
}
146145
defer resp.Body.Close()
147146
var versions []string
148147
orderedExtensionNames := []string{}
149148
extensions := make(map[string][]string)
150-
started := false
151-
scanner := bufio.NewScanner(resp.Body)
152-
for scanner.Scan() {
153-
line := scanner.Text()
154-
if started {
155-
if strings.HasPrefix(line, "| ---") {
156-
continue
157-
}
158-
if !strings.HasPrefix(line, "| ") {
159-
break
160-
}
161-
name, available := parseLine(line)
162-
name = strings.ToLower(strings.Trim(name, "`"))
163-
if _, ok := extensions F438 [name]; ok {
164-
log.Printf("WARNING: The %s extension is listed twice, ignoring extra definition!\n", name)
165-
} else {
149+
150+
body, err := ioutil.ReadAll(resp.Body)
151+
if err != nil {
152+
return "", err
153+
}
154+
var fullConfig map[string]map[string]interface{}
155+
if err := yaml.Unmarshal(body, &fullConfig); err != nil {
156+
return "", err
157+
}
158+
for version, rawCfg := range fullConfig["grid"] {
159+
cfg := rawCfg.(map[interface{}]interface{})
160+
for _, ext := range append(cfg["available"].([]interface{}), cfg["default"].([]interface{})...) {
161+
name := strings.ToLower(ext.(string))
162+
if _, ok := extensions[name]; !ok {
166163
orderedExtensionNames = append(orderedExtensionNames, name)
167-
var vs []string
168-
for i, v := range available {
169-
if v != "" {
170-
vs = append(vs, versions[i])
171-
}
172-
}
173-
extensions[name] = vs
174164
}
175-
}
176-
if strings.HasPrefix(line, "| Extension") {
177-
started = true
178-
_, versions = parseLine(line)
165+
extensions[name] = append(extensions[name], version)
179166
}
180167
}
181-
if err := scanner.Err(); err != nil {
182-
return "", err
183-
}
168+
169+
sort.Strings(orderedExtensionNames)
184170
maxNameLen := 0
185171
for name := range extensions {
186172
if len(name) > maxNameLen {
187173
maxNameLen = len(name)
188174
}
175+
sort.Strings(extensions[name])
189176
}
190177
extsAsString := ""
191178

0 commit comments

Comments
 (0)
0