5
5
"errors"
6
6
"flag"
7
7
"fmt"
8
+ "io"
8
9
"io/ioutil"
9
10
"mime"
10
11
"net/http"
@@ -59,14 +60,51 @@ func main() {
59
60
Fataln (err )
60
61
}
61
62
63
+ var specFilepath string
64
+ var outDir string
65
+ var runServer bool
66
+ var doGen bool
67
+ var doSummary bool
68
+ var liveFs bool
69
+ flag .StringVar (& specFilepath , "spec" , "" , "Path to spec file; file will be created if not already existing." )
70
+ flag .StringVar (& outDir , "dir" , "" , "Path to dir where to save generated files." )
71
+ flag .BoolVar (& runServer , "http" , true , "Run http server." )
72
+ flag .BoolVar (& doGen , "gen" , true , "Generate code." )
73
+ flag .BoolVar (& doSummary , "summary" , true , "Output a summary." )
74
+ flag .BoolVar (& liveFs , "livefs" , false , "Use static assets directly from live FS." )
75
+ flag .Parse ()
76
+
77
+ if specFilepath == "" {
78
+ // specFilepath is ALWAYS necessary,
79
+ // either for knowing from where to load a spec,
80
+ // or where to save a new created one.
81
+ panic ("--spec flag not provided" )
82
+ }
83
+
84
+ if outDir == "" {
85
+ panic ("--dir flag not provided" )
86
+ }
87
+
62
88
{ // Add http handlers for static files:
63
89
r .GET ("/" , func (c * gin.Context ) {
64
- reader , err := statikFS .Open ("/index.html" )
65
- if err != nil {
66
- Q (err )
67
- Abort404 (c , err .Error ())
68
- return
90
+ var reader io.ReadCloser
91
+ var err error
92
+ if liveFs {
93
+ reader , err = os .Open ("./public/index.html" )
94
+ if err != nil {
95
+ Q (err )
96
+ Abort404 (c , err .Error ())
97
+ return
98
+ }
99
+ } else {
100
+ reader , err = statikFS .Open ("/index.html" )
101
+ if err != nil {
102
+ Q (err )
103
+ Abort404 (c , err .Error ())
104
+ return
105
+ }
69
106
}
107
+
70
108
defer reader .Close ()
71
109
contents , err := ioutil .ReadAll (reader )
72
110
if err != nil {
@@ -82,12 +120,25 @@ func main() {
82
120
c .AbortWithStatus (400 )
83
121
return
84
122
}
85
- reader , err := statikFS .Open ("/static/" + name )
86
- if err != nil {
87
- c .AbortWithError (400 , err )
88
- Q (err )
89
- return
123
+
124
+ var reader io.ReadCloser
125
+ var err error
126
+ if liveFs {
127
+ reader , err = os .Open (filepath .Join ("public" , "static" , name ))
128
+ if err != nil {
129
+ Q (err )
130
+ Abort404 (c , err .Error ())
131
+ return
132
+ }
133
+ } else {
134
+ reader , err = statikFS .Open ("/static/" + name )
135
+ if err != nil {
136
+ c .AbortWithError (400 , err )
137
+ Q (err )
138
+ return
139
+ }
90
140
}
141
+
91
142
defer reader .Close ()
92
143
contents , err := ioutil .ReadAll (reader )
93
144
if err != nil {
@@ -100,30 +151,6 @@ func main() {
100
151
})
101
152
}
102
153
httpClient := new (http.Client )
103
-
104
- var specFilepath string
105
- var outDir string
106
- var runServer bool
107
- var doGen bool
108
- var doSummary bool
109
- flag .StringVar (& specFilepath , "spec" , "" , "Path to spec file; file will be created if not already existing." )
110
- flag .StringVar (& outDir , "dir" , "" , "Path to dir where to save generated files." )
111
- flag .BoolVar (& runServer , "http" , true , "Run http server." )
112
- flag .BoolVar (& doGen , "gen" , true , "Generate code." )
113
- flag .BoolVar (& doSummary , "summary" , true , "Output a summary." )
114
- flag .Parse ()
115
-
116
- if specFilepath == "" {
117
- // specFilepath is ALWAYS necessary,
118
- // either for knowing from where to load a spec,
119
- // or where to save a new created one.
120
- panic ("--spec flag not provided" )
121
- }
122
-
123
- if outDir == "" {
124
- panic ("--dir flag not provided" )
125
- }
126
-
127
154
{
128
155
rt := x .Router ()
129
156
// Register ModelKind handlers in the router:
0 commit comments