shipit-cli 0.21.4__tar.gz → 0.21.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/PKG-INFO +2 -2
  2. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/README.md +1 -1
  3. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/pyproject.toml +1 -1
  4. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/node.py +6 -1
  5. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/runners/wasmer.py +13 -4
  6. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/version.py +1 -1
  7. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_node_provider.py +19 -1
  8. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_wasmer_annotations.py +39 -2
  9. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/.gitignore +0 -0
  10. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/__init__.py +0 -0
  11. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/assets/node/optimize-node-modules.sh +0 -0
  12. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/assets/php/php.ini +0 -0
  13. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/assets/wordpress/.htaccess +0 -0
  14. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/assets/wordpress/install.sh +0 -0
  15. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/assets/wordpress/start.php +0 -0
  16. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/assets/wordpress/wp-config.php +0 -0
  17. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/builders/__init__.py +0 -0
  18. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/builders/base.py +0 -0
  19. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/builders/docker.py +0 -0
  20. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/builders/local.py +0 -0
  21. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/cli.py +0 -0
  22. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/generator.py +0 -0
  23. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/procfile.py +0 -0
  24. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/base.py +0 -0
  25. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/go.py +0 -0
  26. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/hugo.py +0 -0
  27. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/install_context.py +0 -0
  28. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/jekyll.py +0 -0
  29. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/laravel.py +0 -0
  30. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/mkdocs.py +0 -0
  31. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/node_static.py +0 -0
  32. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/php.py +0 -0
  33. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/python.py +0 -0
  34. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/registry.py +0 -0
  35. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/staticfile.py +0 -0
  36. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/providers/wordpress.py +0 -0
  37. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/runners/__init__.py +0 -0
  38. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/runners/base.py +0 -0
  39. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/runners/local.py +0 -0
  40. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/shipit_types.py +0 -0
  41. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/ui.py +0 -0
  42. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/utils.py +0 -0
  43. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/src/shipit/volumes.py +0 -0
  44. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_cli_after_deploy.py +0 -0
  45. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_e2e.py +0 -0
  46. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_generate_shipit_examples.py +0 -0
  47. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_install_context.py +0 -0
  48. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_node_static_provider.py +0 -0
  49. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_php_provider.py +0 -0
  50. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_staticfile_provider.py +0 -0
  51. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_subdir.py +0 -0
  52. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_version.py +0 -0
  53. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_volumes.py +0 -0
  54. {shipit_cli-0.21.4 → shipit_cli-0.21.5}/tests/test_wordpress_phpix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shipit-cli
3
- Version: 0.21.4
3
+ Version: 0.21.5
4
4
  Summary: Shipit CLI is the best way to build, serve and deploy your projects anywhere.
5
5
  Project-URL: homepage, https://wasmer.io
6
6
  Project-URL: repository, https://github.com/wasmerio/shipit
@@ -166,7 +166,7 @@ Conventional Commits. When that PR is merged, it creates a GitHub release with
166
166
  a `vX.Y.Z` tag and dispatches the PyPI workflow for that tag with the built-in
167
167
  `GITHUB_TOKEN`. The PyPI workflow also supports manual dispatch for reruns. It:
168
168
 
169
- * Runs regular test and e2e workflows.
169
+ * Runs regular tests, excluding e2e tests.
170
170
  * Validates that the tag version without the leading `v` matches:
171
171
  * `project.version` in `pyproject.toml`
172
172
  * `version` in `src/shipit/version.py`
@@ -143,7 +143,7 @@ Conventional Commits. When that PR is merged, it creates a GitHub release with
143
143
  a `vX.Y.Z` tag and dispatches the PyPI workflow for that tag with the built-in
144
144
  `GITHUB_TOKEN`. The PyPI workflow also supports manual dispatch for reruns. It:
145
145
 
146
- * Runs regular test and e2e workflows.
146
+ * Runs regular tests, excluding e2e tests.
147
147
  * Validates that the tag version without the leading `v` matches:
148
148
  * `project.version` in `pyproject.toml`
149
149
  * `version` in `src/shipit/version.py`
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "shipit-cli"
3
- version = "0.21.4"
3
+ version = "0.21.5"
4
4
  description = "Shipit CLI is the best way to build, serve and deploy your projects anywhere."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -420,6 +420,7 @@ class NodeConfig(Config):
420
420
  model_config = SettingsConfigDict(extra="ignore", env_prefix="SHIPIT_")
421
421
 
422
422
  use_edgejs: Optional[bool] = False
423
+ precompile_edgejs: Optional[bool] = None
423
424
  package_manager: Optional[PackageManager] = None
424
425
  framework: Optional[NodeFramework] = None
425
426
  extra_dependencies: Set[str] = Field(default_factory=set)
@@ -1234,7 +1235,11 @@ class NodeProvider:
1234
1235
  return None
1235
1236
 
1236
1237
  def prepare_steps(self) -> Optional[list[str]]:
1237
- return None
1238
+ if not self.config.precompile_edgejs:
1239
+ return []
1240
+ return [
1241
+ 'run("edgejs --precompile {}".format(app.serve_path))',
1242
+ ]
1238
1243
 
1239
1244
  def commands(self) -> Dict[str, str]:
1240
1245
  if not self.config.commands.start:
@@ -29,6 +29,7 @@ SHIPIT_CONFIG_ANNOTATION = "shipitcli.com/config"
29
29
  SHIPIT_PROVIDER_ANNOTATION = "shipitcli.com/provider"
30
30
  SHIPIT_VERSION_ANNOTATION = "shipitcli.com/version"
31
31
  WASMER_APP_KIND_ANNOTATION = "wasmer.io/app-kind"
32
+ EDGEJS_QUICKJS_DEPENDENCY = "wasmer/edgejs-quickjs@=0.0.6"
32
33
 
33
34
 
34
35
  def serialize_provider_config(provider_config: Any) -> Dict[str, Any]:
@@ -101,9 +102,9 @@ class WasmerRunner:
101
102
  mapper: Dict[str, MapperItem] = {
102
103
  "node": {
103
104
  "dependencies": {
104
- "latest": "wasmer/edgejs-quickjs@=0.0.4",
105
- "24": "wasmer/edgejs-quickjs@=0.0.4",
106
- "22": "wasmer/edgejs-quickjs@=0.0.4",
105
+ "latest": EDGEJS_QUICKJS_DEPENDENCY,
106
+ "24": EDGEJS_QUICKJS_DEPENDENCY,
107
+ "22": EDGEJS_QUICKJS_DEPENDENCY,
107
108
  },
108
109
  "scripts": {"edge"},
109
110
  "aliases": {"node": "edge"},
@@ -256,6 +257,8 @@ class WasmerRunner:
256
257
  provider_config.phpix = True
257
258
  if isinstance(provider_config, NodeConfig):
258
259
  provider_config.use_edgejs = True
260
+ if provider_config.precompile_edgejs is None:
261
+ provider_config.precompile_edgejs = True
259
262
  provider_config.remove_native_binaries = True
260
263
  self.provider_config = provider_config
261
264
  return provider_config
@@ -486,7 +489,8 @@ class WasmerRunner:
486
489
  wasi_args = table()
487
490
  if serve.cwd:
488
491
  wasi_args.add("cwd", serve.cwd)
489
- wasi_args.add("main-args", array(parts[1:]).multiline(True))
492
+ main_args = self.main_args_for_module(command_module, parts[1:])
493
+ wasi_args.add("main-args", array(main_args).multiline(True))
490
494
  if serve.env:
491
495
  command_env.update(serve.env)
492
496
  if command_env:
@@ -701,6 +705,11 @@ class WasmerRunner:
701
705
  return "edgejs" in module or atom == "edgejs"
702
706
  return False
703
707
 
708
+ def main_args_for_module(self, module: str, args: List[str]) -> List[str]:
709
+ if "edgejs" not in module or "--bytecode-cache" in args:
710
+ return args
711
+ return ["--bytecode-cache", *args]
712
+
704
713
  def has_serve_command(self, command: str) -> bool:
705
714
  wasmer_toml_path = self.wasmer_dir_path / "wasmer.toml"
706
715
  if not wasmer_toml_path.exists():
@@ -1,7 +1,7 @@
1
1
  __all__ = ["version", "version_info"]
2
2
 
3
3
 
4
- version = "0.21.4" # x-release-please-version
4
+ version = "0.21.5" # x-release-please-version
5
5
  _version_parts = version.split(".")
6
6
  version_info = (
7
7
  int(_version_parts[0]),
@@ -7,7 +7,12 @@ import pytest
7
7
  from shipit.generator import load_provider
8
8
  from shipit.providers.base import Config
9
9
  from shipit.providers.laravel import LaravelProvider
10
- from shipit.providers.node import NodeFramework, NodeProvider, PackageManager
10
+ from shipit.providers.node import (
11
+ NodeConfig,
12
+ NodeFramework,
13
+ NodeProvider,
14
+ PackageManager,
15
+ )
11
16
  from shipit.providers.node_static import NodeStaticProvider
12
17
  from shipit.providers.php import PhpFramework
13
18
 
@@ -420,6 +425,19 @@ def test_node_provider_skips_native_binary_optimizer_by_default(
420
425
  assert all(mount.name != "assets" for mount in provider.mounts())
421
426
 
422
427
 
428
+ def test_node_prepare_steps_use_precompile_edgejs_flag(tmp_path: Path) -> None:
429
+ config = NodeConfig()
430
+ provider = NodeProvider(tmp_path, config)
431
+
432
+ assert config.precompile_edgejs is None
433
+ assert provider.prepare_steps() == []
434
+
435
+ config.precompile_edgejs = True
436
+ assert provider.prepare_steps() == [
437
+ 'run("edgejs --precompile {}".format(app.serve_path))',
438
+ ]
439
+
440
+
423
441
  def test_node_provider_uses_build_only_assets_mount(tmp_path: Path) -> None:
424
442
  (tmp_path / "package.json").write_text("{}\n")
425
443
  provider_config = NodeProvider.load_config(tmp_path, Config())
@@ -201,13 +201,35 @@ def test_wasmer_node_manifest_maps_to_edgejs(tmp_path: Path) -> None:
201
201
  runner.build_serve(serve)
202
202
 
203
203
  manifest = tomllib.loads((runner.wasmer_dir_path / "wasmer.toml").read_text())
204
- assert manifest["dependencies"]["wasmer/edgejs-quickjs"] == "=0.0.4"
204
+ assert manifest["dependencies"]["wasmer/edgejs-quickjs"] == "=0.0.6"
205
205
  assert manifest["command"][0]["module"] == "wasmer/edgejs-quickjs:edge"
206
206
  wasi = manifest["command"][0]["annotations"]["wasi"]
207
- assert wasi["main-args"] == ["server.js"]
207
+ assert wasi["main-args"] == ["--bytecode-cache", "server.js"]
208
208
  assert "env" not in wasi
209
209
 
210
210
 
211
+ def test_wasmer_edge_manifest_does_not_duplicate_bytecode_cache(
212
+ tmp_path: Path,
213
+ ) -> None:
214
+ src_dir = tmp_path / "src"
215
+ src_dir.mkdir()
216
+ runner = WasmerRunner(DummyBuildBackend(tmp_path), src_dir)
217
+
218
+ serve = Serve(
219
+ name="node",
220
+ provider="node",
221
+ build=[],
222
+ deps=[Package("node", "22")],
223
+ commands={"start": "edge --bytecode-cache server.js"},
224
+ )
225
+
226
+ runner.build_serve(serve)
227
+
228
+ manifest = tomllib.loads((runner.wasmer_dir_path / "wasmer.toml").read_text())
229
+ wasi = manifest["command"][0]["annotations"]["wasi"]
230
+ assert wasi["main-args"] == ["--bytecode-cache", "server.js"]
231
+
232
+
211
233
  def test_wasmer_prepare_config_enables_node_edge_optimizations(
212
234
  tmp_path: Path,
213
235
  ) -> None:
@@ -218,6 +240,21 @@ def test_wasmer_prepare_config_enables_node_edge_optimizations(
218
240
  config = runner.prepare_config(NodeConfig())
219
241
 
220
242
  assert config.use_edgejs is True
243
+ assert config.precompile_edgejs is True
244
+ assert config.remove_native_binaries is True
245
+
246
+
247
+ def test_wasmer_prepare_config_preserves_node_precompile_override(
248
+ tmp_path: Path,
249
+ ) -> None:
250
+ src_dir = tmp_path / "src"
251
+ src_dir.mkdir()
252
+ runner = WasmerRunner(DummyBuildBackend(tmp_path), src_dir)
253
+
254
+ config = runner.prepare_config(NodeConfig(precompile_edgejs=False))
255
+
256
+ assert config.use_edgejs is True
257
+ assert config.precompile_edgejs is False
221
258
  assert config.remove_native_binaries is True
222
259
 
223
260
 
File without changes