Files
e2b-dev--e2b/Makefile
T
0div e0c1bc752d Make codegen robust and deterministic for js and python SDKs (#664)
# Description 

This PR allows to codegen without worrying about your environment and
dependencies for consistent outcomes in what code is generated from
openapi and envd protobuf spec. Will generate files for `js-sdk` and
`python-sdk`

- [x] create Docker image with all the pinned deps needed to codegen
- [x] create codegen script using this container with mapped volumes
- [x] adapt Makefiles to this new approach
- [x] adapt where we install the connect-python protobuf binary for this
to work

# Test

```sh
make codegen # this command is similar to `make generate` but w/o the hassle

Generating SDK code from openapi and envd spec
cd packages/js-sdk && pnpm generate

> e2b@1.2.1 generate /workspace/packages/js-sdk
> python ./../../spec/remove_extra_tags.py sandboxes templates && openapi-typescript ../../spec/openapi_generated.yml -x api_key --arr
ay-length --alphabetize --output src/api/schema.gen.ts

 openapi-typescript 7.6.1
🚀 ../../spec/openapi_generated.yml → src/api/schema.gen.ts [44.2ms]
cd packages/js-sdk && pnpm generate-envd-api

> e2b@1.2.1 generate-envd-api /workspace/packages/js-sdk
> openapi-typescript ../../spec/envd/envd.yaml -x api_key --array-length --alphabetize --output src/envd/schema.gen.ts

 openapi-typescript 7.6.1
🚀 ../../spec/envd/envd.yaml → src/envd/schema.gen.ts [22.7ms]

[...]

cd packages/python-sdk && make generate-api

All done!  🍰 
```

---------

Co-authored-by: Jiri Sveceny <jiri.sveceny@icloud.com>
2025-04-07 17:00:31 +02:00

29 lines
728 B
Makefile

update-api-spec:
@echo "Updating API spec"
@./scripts/update-api-spec.sh
@echo "Done"
.PHONY: codegen
codegen:
@echo "Generating SDK code from openapi and envd spec"
@./scripts/codegen.sh
generate: generate-js generate-python
generate-js:
cd packages/js-sdk && pnpm generate
cd packages/js-sdk && pnpm generate-envd-api
cd spec/envd && buf generate --template buf-js.gen.yaml
generate-python:
if [ ! -f "/go/bin/protoc-gen-connect-python" ]; then \
$(MAKE) -C packages/connect-python build; \
fi
cd packages/python-sdk && make generate-api
cd spec/envd && buf generate --template buf-python.gen.yaml
cd packages/python-sdk && ./scripts/fix-python-pb.sh && black .
.PHONY: init-styles
init-styles:
vale sync