// Run adds the shim when runtime is "golang". func (p *Plugin) Run(hook function.Hook, fn *function.Function) error { if hook != function.OpenHook || fn.Runtime != "golang" { return nil } fn.Shim = true fn.Runtime = "nodejs" fn.Hooks.Build = "GOOS=linux GOARCH=amd64 go build -o main main.go" fn.Hooks.Clean = "rm -f main" return nil }
// Open adds python defaults. func (p *Plugin) Open(fn *function.Function) error { if fn.Runtime != "python" { return nil } fn.Runtime = "python2.7" if fn.Handler == "" { fn.Handler = "main.handle" } return nil }
// Open adds python defaults. func (p *Plugin) Open(fn *function.Function) error { if fn.Runtime != Runtime { return nil } fn.Runtime = RuntimeCanonical if fn.Handler == "" { fn.Handler = "main.handle" } return nil }
// Run specifies python defaults. func (p *Plugin) Run(hook function.Hook, fn *function.Function) error { if hook != function.OpenHook || fn.Runtime != "python" { return nil } fn.Runtime = "python2.7" if fn.Handler == "" { fn.Handler = "main.handle" } return nil }
// Open adds the shim and golang defaults. func (p *Plugin) Open(fn *function.Function) error { if fn.Runtime != Runtime { return nil } if fn.Hooks.Build == "" { fn.Hooks.Build = "GOOS=linux GOARCH=amd64 go build -o main main.go" } fn.Shim = true fn.Runtime = nodejs.Runtime fn.Hooks.Clean = "rm -f main" return nil }
// Open adds java defaults. func (p *Plugin) Open(fn *function.Function) error { if fn.Runtime != Runtime { return nil } fn.Runtime = RuntimeCanonical if fn.Handler == "" { fn.Handler = "lambda.Main::handler" } fn.Hooks.Clean = "mvn clean" return nil }
// Run checks for files in the function directory to infer its runtime. func (p *Plugin) Run(hook function.Hook, fn *function.Function) error { if hook != function.OpenHook || fn.Runtime != "" { return nil } fn.Log.Debug("inferring runtime") for name, runtime := range p.Files { if _, err := os.Stat(filepath.Join(fn.Path, name)); err == nil { fn.Log.WithField("runtime", runtime).Debug("inferred runtime") fn.Runtime = runtime return nil } } return nil }
// Build adds the jar contents to zipfile. func (p *Plugin) Build(fn *function.Function, zip *archive.Zip) error { if fn.Runtime != Runtime { return nil } fn.Runtime = RuntimeCanonical fn.Log.Debugf("searching for JAR (%s) in directories: %s", jarFile, strings.Join(jarSearchPaths, ", ")) expectedJarPath := findJar(fn.Path) if expectedJarPath == "" { return errors.New("Expected jar file not found") } fn.Log.Debugf("found jar path: %s", expectedJarPath) fn.Log.Debug("appending compiled files") reader, err := azip.OpenReader(expectedJarPath) if err != nil { return err } defer reader.Close() for _, file := range reader.File { r, err := file.Open() if err != nil { return err } b, err := ioutil.ReadAll(r) if err != nil { return err } r.Close() zip.AddBytes(file.Name, b) } return nil }