MCPcopy Index your code
hub / github.com/zalando/skipper / initScript

Method initScript

script/script.go:170–280  ·  view source on GitHub ↗
(modules, validSources []string)

Source from the content-addressed store, hash-verified

168}
169
170func (s *script) initScript(modules, validSources []string) error {
171 // Compile
172 var reader io.Reader
173 var name string
174
175 if strings.HasSuffix(s.source, ".lua") {
176 if !contains("file", validSources) {
177 return fmt.Errorf(`invalid lua source referenced "file", allowed: "%v"`, validSources)
178 }
179
180 file, err := os.Open(s.source)
181 if err != nil {
182 return err
183 }
184
185 defer func() {
186 if err = file.Close(); err != nil {
187 log.Errorf("Failed to close lua file %s: %v", s.source, err)
188 }
189 }()
190
191 reader = bufio.NewReader(file)
192 name = s.source
193 } else {
194 if !contains("inline", validSources) {
195 return fmt.Errorf(`invalid lua source referenced "inline", allowed: "%v"`, validSources)
196 }
197 reader = strings.NewReader(s.source)
198 name = "<script>"
199 }
200 chunk, err := lua_parse.Parse(reader, name)
201 if err != nil {
202 return err
203 }
204 proto, err := lua.Compile(chunk, name)
205 if err != nil {
206 return err
207 }
208 s.proto = proto
209
210 // Configure enabled modules and symbols
211 moduleConfig := moduleConfig(modules)
212
213 if len(moduleConfig) == 0 {
214 s.load = append(s.load, standardModules...)
215 } else {
216 L := lua.NewState(lua.Options{SkipOpenLibs: true})
217 defer L.Close()
218
219 for _, m := range standardModules {
220 name := m.name
221 if m.name == lua.BaseLibName {
222 name = "base" // alias for empty lua.BaseLibName
223 }
224 if symbols, ok := moduleConfig[name]; ok {
225 if len(symbols) > 0 {
226 m = m.withSymbols(L, symbols)
227 }

Callers 1

CreateFilterMethod · 0.80

Calls 9

newStateMethod · 0.95
putStateMethod · 0.95
moduleConfigFunction · 0.85
withSymbolsMethod · 0.80
NewMethod · 0.80
containsFunction · 0.70
ErrorfMethod · 0.65
CloseMethod · 0.65
ParseMethod · 0.65

Tested by

no test coverage detected