Skip to content

Commit f561a23

Browse files
committed
poc: flatten
1 parent 8411c91 commit f561a23

File tree

5 files changed

+65
-7
lines changed

5 files changed

+65
-7
lines changed

tools/cli/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# A Self-Documenting Makefile: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
22

3-
GOLANGCI_VERSION=v1.64.5
3+
GOLANGCI_VERSION=v1.64.7
44
SOURCE_FILES?=./cmd
55
BINARY_NAME=foascli
66
VERSION=v0.0.1
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package flatten
2+
3+
import (
4+
"fmt"
5+
"github.com/getkin/kin-openapi/openapi3"
6+
"github.com/mongodb/openapi/tools/cli/internal/cli/flag"
7+
"github.com/mongodb/openapi/tools/cli/internal/cli/usage"
8+
"github.com/spf13/cobra"
9+
"github.com/tufin/oasdiff/flatten/allof"
10+
"gopkg.in/yaml.v3"
11+
)
12+
13+
func Builder() *cobra.Command {
14+
var spec string
15+
16+
cmd := &cobra.Command{
17+
Use: "flatten -s <spec>",
18+
Short: "Flatten the spec.",
19+
Args: cobra.NoArgs,
20+
21+
RunE: func(_ *cobra.Command, _ []string) error {
22+
loader := openapi3.NewLoader()
23+
loader.IsExternalRefsAllowed = true
24+
specInfo, err := loader.LoadFromFile(spec)
25+
//spec, err := load.NewSpecInfo(loader, spec, load.WithFlattenAllOf())
26+
//loader := openapi.NewOpenAPI3()
27+
//specInfo, err := loader.CreateOpenAPISpecFromPath(spec)
28+
//if err != nil {
29+
// return err
30+
//}
31+
result, err := allof.MergeSpec(specInfo)
32+
if err != nil {
33+
return err
34+
}
35+
yamlData, err := yaml.Marshal(result)
36+
fmt.Print(string(yamlData))
37+
return nil
38+
},
39+
}
40+
41+
cmd.Flags().StringVarP(&spec, flag.Spec, flag.SpecShort, "-", usage.Spec)
42+
43+
_ = cmd.MarkFlagRequired(flag.Spec)
44+
45+
return cmd
46+
}

tools/cli/internal/cli/root/openapi/builder.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@ package openapi
1616

1717
import (
1818
"fmt"
19-
"runtime"
20-
2119
"github.com/mongodb/openapi/tools/cli/internal/cli/breakingchanges"
2220
"github.com/mongodb/openapi/tools/cli/internal/cli/changelog"
2321
"github.com/mongodb/openapi/tools/cli/internal/cli/filter"
22+
"github.com/mongodb/openapi/tools/cli/internal/cli/flatten"
2423
"github.com/mongodb/openapi/tools/cli/internal/cli/merge"
2524
"github.com/mongodb/openapi/tools/cli/internal/cli/split"
2625
"github.com/mongodb/openapi/tools/cli/internal/cli/sunset"
2726
"github.com/mongodb/openapi/tools/cli/internal/cli/versions"
2827
"github.com/mongodb/openapi/tools/cli/internal/version"
2928
"github.com/spf13/cobra"
29+
"runtime"
3030
)
3131

3232
const (
@@ -63,6 +63,7 @@ func Builder() *cobra.Command {
6363
breakingchanges.Builder(),
6464
sunset.Builder(),
6565
filter.Builder(),
66+
flatten.Builder(),
6667
)
6768
return rootCmd
6869
}

tools/cli/internal/openapi/openapi.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ type Spec struct {
3535
Components *openapi3.Components `json:"components,omitempty" yaml:"components,omitempty"`
3636
ExternalDocs *openapi3.ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
3737
}
38+
3839
type Parser interface {
3940
CreateOpenAPISpecFromPath(string) (*load.SpecInfo, error)
4041
}

tools/postman/scripts/upload-collection.sh

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ pushd "${OPENAPI_FOLDER}"
2828
current_collection_name="⭐MongoDB Atlas Administration API ${current_api_revision}"
2929

3030
echo "Fetching list of current collections"
31-
echo "curl -o ${COLLECTIONS_LIST_FILE}
31+
echo "curl -o ${COLLECTIONS_LIST_FILE}
3232
--location 'https://api.getpostman.com/collections?workspace=${WORKSPACE_ID}'
3333
--header 'X-API-Key: **********'"
34-
curl --show-error --fail --silent -o "${COLLECTIONS_LIST_FILE}" \
34+
curl --show-error \
35+
--fail --silent -o "${COLLECTIONS_LIST_FILE}" \
3536
--location "https://api.getpostman.com/collections?workspace=${WORKSPACE_ID}" \
3637
--header "X-API-Key: ${POSTMAN_API_KEY}"
3738

@@ -63,7 +64,11 @@ if [ "$collection_exists" = "false" ]; then
6364
--header 'Content-Type: application/json'
6465
--header 'X-API-Key: **********'
6566
--data ${collection_transformed_path}"
66-
curl --show-error --fail --retry 5 --retry-all-errors --silent \
67+
curl --show-error \
68+
--fail \
69+
--retry 5 \
70+
--retry-all-errors \
71+
--silent \
6772
--location "https://api.getpostman.com/collections?workspace=${WORKSPACE_ID}" \
6873
--header "Content-Type: application/json" \
6974
--header "X-API-Key: ${POSTMAN_API_KEY}" \
@@ -80,7 +85,12 @@ else
8085
--header 'X-API-Key: **********'
8186
--data ${collection_transformed_path}"
8287

83-
curl --show-error --fail --retry 5 --retry-all-errors --silent --request PUT \
88+
curl --show-error \
89+
--fail \
90+
--retry 5 \
91+
--retry-all-errors \
92+
--silent \
93+
--request PUT \
8494
--location "https://api.getpostman.com/collections/${collection_id}" \
8595
--header "Content-Type: application/json" \
8696
--header "X-API-Key: ${POSTMAN_API_KEY}" \

0 commit comments

Comments
 (0)