feat: multi-language support — PHP, Ruby, Perl, Go (binary-env)
- PHP: ghcr.io/fission/php-env, entrypoint main.php::handler
- Ruby: ghcr.io/fission/ruby-env, entrypoint handler (single-word)
- Perl: ghcr.io/fission/perl-env (version=1), sub {} return value
- Go: ghcr.io/fission/binary-env with pre-compiled binary (shell script placeholder)
Provider changes:
- package_resource: added main.php, main.rb, main.pl to source_dir candidates
- function_resource: relaxed entrypoint validation to allow PHP (::), Ruby, Perl (single-word)
- function_resource_test: updated BadFormat test to reflect new valid formats
This commit is contained in:
@@ -290,9 +290,16 @@ func unstructuredToFunctionModel(functionObject *unstructured.Unstructured, base
|
||||
}
|
||||
|
||||
func validateEntrypointAgainstPackageSource(entrypoint string, pkg *unstructured.Unstructured) error {
|
||||
if entrypoint == "" {
|
||||
return fmt.Errorf("entrypoint не может быть пустым")
|
||||
}
|
||||
|
||||
// Для Python/Go/JS: валидируем формат module.function и наличие функции в исходнике.
|
||||
// Для PHP (module::function), Ruby (function), Perl (function) — допускаем любой непустой формат.
|
||||
parts := strings.Split(entrypoint, ".")
|
||||
if len(parts) != 2 || parts[0] == "" || parts[1] == "" {
|
||||
return fmt.Errorf("entrypoint %q должен иметь формат module.function", entrypoint)
|
||||
// Не стандартный module.function — допускаем (PHP, Ruby, Perl и др.)
|
||||
return nil
|
||||
}
|
||||
|
||||
if parts[0] != "main" {
|
||||
|
||||
Reference in New Issue
Block a user