shipit-cli 0.19.9__tar.gz → 0.20.0__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.
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/PKG-INFO +1 -1
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/pyproject.toml +1 -1
- shipit_cli-0.20.0/src/shipit/assets/node/optimize-node-modules.sh +34 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/hugo.py +18 -6
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/laravel.py +32 -19
- shipit_cli-0.20.0/src/shipit/providers/node.py +1048 -0
- shipit_cli-0.20.0/src/shipit/providers/node_static.py +674 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/registry.py +2 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/runners/wasmer.py +91 -30
- shipit_cli-0.20.0/src/shipit/version.py +5 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/tests/test_e2e.py +319 -11
- shipit_cli-0.20.0/tests/test_node_provider.py +422 -0
- shipit_cli-0.20.0/tests/test_node_static_provider.py +550 -0
- shipit_cli-0.20.0/tests/test_wasmer_annotations.py +254 -0
- shipit_cli-0.19.9/src/shipit/providers/node_static.py +0 -752
- shipit_cli-0.19.9/src/shipit/version.py +0 -5
- shipit_cli-0.19.9/tests/test_wasmer_annotations.py +0 -118
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/.gitignore +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/README.md +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/__init__.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/assets/php/php.ini +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/assets/wordpress/.htaccess +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/assets/wordpress/install.sh +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/assets/wordpress/start.php +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/assets/wordpress/wp-config.php +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/builders/__init__.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/builders/base.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/builders/docker.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/builders/local.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/cli.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/generator.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/procfile.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/base.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/go.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/jekyll.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/mkdocs.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/php.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/python.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/staticfile.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/providers/wordpress.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/runners/__init__.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/runners/base.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/runners/local.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/shipit_types.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/ui.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/utils.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/src/shipit/volumes.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/tests/test_cli_after_deploy.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/tests/test_generate_shipit_examples.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/tests/test_php_provider.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/tests/test_staticfile_provider.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/tests/test_version.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/tests/test_volumes.py +0 -0
- {shipit_cli-0.19.9 → shipit_cli-0.20.0}/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.
|
|
3
|
+
Version: 0.20.0
|
|
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
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="${1:-node_modules}"
|
|
5
|
+
|
|
6
|
+
if [[ ! -d "$root" ]]; then
|
|
7
|
+
exit 0
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
is_wasm() {
|
|
11
|
+
local file="$1"
|
|
12
|
+
local magic
|
|
13
|
+
|
|
14
|
+
case "$file" in
|
|
15
|
+
*.wasm | *.WASM)
|
|
16
|
+
return 0
|
|
17
|
+
;;
|
|
18
|
+
esac
|
|
19
|
+
|
|
20
|
+
magic="$(dd if="$file" bs=4 count=1 2>/dev/null | od -An -tx1 | tr -d ' \n')"
|
|
21
|
+
[[ "$magic" == "0061736d" ]]
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
while IFS= read -r -d "" file; do
|
|
25
|
+
if is_wasm "$file"; then
|
|
26
|
+
continue
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
if ! grep -Iq . "$file"; then
|
|
30
|
+
rm -f -- "$file"
|
|
31
|
+
fi
|
|
32
|
+
done < <(
|
|
33
|
+
find "$root" -type f \( -perm -100 -o -perm -010 -o -perm -001 \) -print0
|
|
34
|
+
)
|
|
@@ -17,20 +17,32 @@ from pydantic_settings import SettingsConfigDict
|
|
|
17
17
|
import toml
|
|
18
18
|
import json
|
|
19
19
|
import yaml
|
|
20
|
-
from pyripgrep import Grep
|
|
21
20
|
|
|
22
21
|
|
|
23
|
-
def
|
|
24
|
-
|
|
22
|
+
def _contains_text(src_dir: Path, text: str) -> bool:
|
|
23
|
+
skipped_dirs = {".git", ".shipit", "node_modules"}
|
|
24
|
+
for path in src_dir.rglob("*"):
|
|
25
|
+
if any(part in skipped_dirs for part in path.parts):
|
|
26
|
+
continue
|
|
27
|
+
if not path.is_file():
|
|
28
|
+
continue
|
|
29
|
+
try:
|
|
30
|
+
if text in path.read_text(errors="ignore"):
|
|
31
|
+
return True
|
|
32
|
+
except OSError:
|
|
33
|
+
continue
|
|
34
|
+
return False
|
|
35
|
+
|
|
25
36
|
|
|
37
|
+
def is_old_hugo(src_dir: Path) -> bool:
|
|
26
38
|
# Hard-fail signal: old Hugo
|
|
27
|
-
if
|
|
39
|
+
if _contains_text(src_dir, "resources.ToCSS"):
|
|
28
40
|
return True
|
|
29
41
|
|
|
30
42
|
# Modern Hugo signal
|
|
31
|
-
if
|
|
43
|
+
if _contains_text(src_dir, "css.Sass"):
|
|
32
44
|
return False
|
|
33
|
-
|
|
45
|
+
|
|
34
46
|
return False
|
|
35
47
|
|
|
36
48
|
|
|
@@ -1,43 +1,52 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
|
-
from typing import Dict, Optional
|
|
2
|
+
from typing import Any, Dict, Optional
|
|
3
|
+
|
|
4
|
+
from pydantic_settings import SettingsConfigDict
|
|
3
5
|
|
|
4
6
|
from .base import (
|
|
7
|
+
Config,
|
|
5
8
|
DetectResult,
|
|
6
9
|
DependencySpec,
|
|
7
|
-
Provider,
|
|
8
|
-
_exists,
|
|
9
10
|
MountSpec,
|
|
10
11
|
ServiceSpec,
|
|
11
12
|
VolumeSpec,
|
|
12
|
-
|
|
13
|
-
Config,
|
|
13
|
+
_exists,
|
|
14
14
|
)
|
|
15
|
+
from .node import NodeConfig, NodeProvider
|
|
15
16
|
from .php import PhpConfig, PhpProvider
|
|
16
|
-
from .node_static import NodeStaticConfig, NodeStaticProvider
|
|
17
|
-
from pydantic_settings import SettingsConfigDict
|
|
18
17
|
|
|
19
18
|
|
|
20
|
-
class LaravelConfig(PhpConfig,
|
|
19
|
+
class LaravelConfig(PhpConfig, NodeConfig):
|
|
21
20
|
model_config = SettingsConfigDict(extra="ignore", env_prefix="SHIPIT_")
|
|
22
21
|
|
|
22
|
+
framework: Optional[Any] = None
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class LaravelProvider(PhpProvider, NodeProvider):
|
|
26
|
+
config: LaravelConfig
|
|
23
27
|
|
|
24
|
-
class LaravelProvider(PhpProvider):
|
|
25
28
|
def __init__(self, path: Path, config: LaravelConfig):
|
|
26
29
|
self.path = path
|
|
27
|
-
self.node_provider = NodeStaticProvider(path, config, only_build=True)
|
|
28
30
|
self.config = config
|
|
31
|
+
self.only_build = True
|
|
29
32
|
|
|
30
33
|
@classmethod
|
|
31
|
-
def load_config(
|
|
34
|
+
def load_config(
|
|
35
|
+
cls,
|
|
36
|
+
path: Path,
|
|
37
|
+
base_config: Config,
|
|
38
|
+
infer_start: bool = False,
|
|
39
|
+
) -> LaravelConfig:
|
|
32
40
|
config = super().load_config(path, base_config)
|
|
33
41
|
config.use_composer = True
|
|
34
|
-
node_config =
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
node_config = NodeProvider.load_config(
|
|
43
|
+
path, base_config, infer_start=False
|
|
44
|
+
)
|
|
45
|
+
node_config_data = node_config.model_dump(exclude={"framework"})
|
|
37
46
|
return LaravelConfig(
|
|
38
47
|
**(
|
|
39
48
|
config.model_dump()
|
|
40
|
-
|
|
|
49
|
+
| node_config_data
|
|
41
50
|
| base_config.model_dump()
|
|
42
51
|
)
|
|
43
52
|
)
|
|
@@ -46,6 +55,10 @@ class LaravelProvider(PhpProvider):
|
|
|
46
55
|
def name(cls) -> str:
|
|
47
56
|
return "laravel"
|
|
48
57
|
|
|
58
|
+
@classmethod
|
|
59
|
+
def detect_framework(cls, *args: Any, **kwargs: Any) -> Any:
|
|
60
|
+
return PhpProvider.detect_framework(*args, **kwargs)
|
|
61
|
+
|
|
49
62
|
@classmethod
|
|
50
63
|
def detect(cls, path: Path, config: Config) -> Optional[DetectResult]:
|
|
51
64
|
if _exists(path, "artisan") and _exists(path, "composer.json"):
|
|
@@ -55,12 +68,12 @@ class LaravelProvider(PhpProvider):
|
|
|
55
68
|
def dependencies(self) -> list[DependencySpec]:
|
|
56
69
|
return [
|
|
57
70
|
*super().dependencies(),
|
|
58
|
-
*
|
|
71
|
+
*NodeProvider.dependencies(self),
|
|
59
72
|
]
|
|
60
73
|
|
|
61
74
|
def build_steps(self) -> list[str]:
|
|
62
|
-
node_install = list(
|
|
63
|
-
node_build = list(
|
|
75
|
+
node_install = list(NodeProvider.build_steps_install(self))
|
|
76
|
+
node_build = list(NodeProvider.build_steps_build(self))
|
|
64
77
|
return super().build_steps_with_options(
|
|
65
78
|
extra_ignore=["node_modules"],
|
|
66
79
|
after_install=node_install,
|
|
@@ -84,7 +97,7 @@ class LaravelProvider(PhpProvider):
|
|
|
84
97
|
}
|
|
85
98
|
|
|
86
99
|
def mounts(self) -> list[MountSpec]:
|
|
87
|
-
return [*super().mounts(), *
|
|
100
|
+
return [*super().mounts(), *NodeProvider.mounts(self)]
|
|
88
101
|
|
|
89
102
|
def volumes(self) -> list[VolumeSpec]:
|
|
90
103
|
return []
|