31 lines
1.7 KiB
Go
31 lines
1.7 KiB
Go
package runtime
|
||
|
||
// BuildScriptZip создаёт zip-архив с одним файлом fileName и содержимым code.
|
||
// Используется для PHP и Ruby — языков где среда Fission ожидает
|
||
// именованный файл (handler.rb, handler.pl, main.php и т.д.) внутри архива.
|
||
//
|
||
// Почему zip, а не просто literal:
|
||
// Fission poolmgr при специализации пода распаковывает deployment archive,
|
||
// находит нужный файл по имени и загружает его в среду выполнения.
|
||
// Если передать просто байты кода в deployment.literal — среда не знает расширение.
|
||
func BuildScriptZip(code, fileName string) ([]byte, error) {
|
||
return buildZip(fileName, []byte(code))
|
||
}
|
||
|
||
// BuildScriptZipWithDeps создаёт zip с кодом и файлом зависимостей.
|
||
// fileName — имя файла кода (handler.rb, main.php и т.д.)
|
||
// depsName — имя файла зависимостей (Gemfile, composer.json и т.д.)
|
||
func BuildScriptZipWithDeps(code, fileName, deps, depsName string) ([]byte, error) {
|
||
return buildZipTwo(fileName, depsName, []byte(code), []byte(deps))
|
||
}
|
||
|
||
// BuildPythonZip создаёт zip с main.py (и опционально requirements.txt).
|
||
// Если deps пустой — возвращает raw bytes кода (текущее поведение Python).
|
||
// Если deps задан — zip с main.py + requirements.txt для pip install.
|
||
func BuildPythonZip(code, deps string) ([]byte, error) {
|
||
if deps == "" {
|
||
return []byte(code), nil
|
||
}
|
||
return buildZipTwo("main.py", "requirements.txt", []byte(code), []byte(deps))
|
||
}
|