This repository has been archived by the owner on Jun 4, 2019. It is now read-only.
/
main.go
90 lines (80 loc) · 2.31 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package main
import (
"io/ioutil"
"os"
"path/filepath"
"github.com/appscode/go/log"
gort "github.com/appscode/go/runtime"
crdutils "github.com/appscode/kutil/apiextensions/v1beta1"
"github.com/appscode/kutil/openapi"
"github.com/appscode/messenger/apis/messenger/install"
"github.com/appscode/messenger/apis/messenger/v1alpha1"
"github.com/go-openapi/spec"
"github.com/golang/glog"
crd_api "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/kube-openapi/pkg/common"
)
func generateCRDDefinitions() {
filename := gort.GOPath() + "/src/github.com/appscode/messenger/apis/messenger/v1alpha1/crds.yaml"
f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
log.Fatal(err)
}
defer f.Close()
crds := []*crd_api.CustomResourceDefinition{
v1alpha1.MessagingService{}.CustomResourceDefinition(),
v1alpha1.Message{}.CustomResourceDefinition(),
}
for _, crd := range crds {
crdutils.MarshallCrd(f, crd, "yaml")
}
}
func generateSwaggerJson() {
var (
Scheme = runtime.NewScheme()
Codecs = serializer.NewCodecFactory(Scheme)
)
install.Install(Scheme)
apispec, err := openapi.RenderOpenAPISpec(openapi.Config{
Scheme: Scheme,
Codecs: Codecs,
Info: spec.InfoProps{
Title: "Messenger",
Version: "v0",
Contact: &spec.ContactInfo{
Name: "AppsCode Inc.",
URL: "https://appscode.com",
Email: "hello@appscode.com",
},
License: &spec.License{
Name: "Apache 2.0",
URL: "https://www.apache.org/licenses/LICENSE-2.0.html",
},
},
OpenAPIDefinitions: []common.GetOpenAPIDefinitions{
v1alpha1.GetOpenAPIDefinitions,
},
Resources: []openapi.TypeInfo{
{v1alpha1.SchemeGroupVersion, v1alpha1.ResourceMessagingServices, v1alpha1.ResourceMessagingServices, true},
{v1alpha1.SchemeGroupVersion, v1alpha1.ResourceMessages, v1alpha1.ResourceMessages, true},
},
})
if err != nil {
glog.Fatal(err)
}
filename := gort.GOPath() + "/src/github.com/appscode/messenger/api/openapi-spec/swagger.json"
err = os.MkdirAll(filepath.Dir(filename), 0755)
if err != nil {
glog.Fatal(err)
}
err = ioutil.WriteFile(filename, []byte(apispec), 0644)
if err != nil {
glog.Fatal(err)
}
}
func main() {
generateCRDDefinitions()
generateSwaggerJson()
}