shipit-cli 0.20.2__tar.gz → 0.21.1__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 (55) hide show
  1. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/PKG-INFO +1 -1
  2. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/pyproject.toml +1 -1
  3. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/assets/wordpress/install.sh +4 -1
  4. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/builders/docker.py +18 -4
  5. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/builders/local.py +34 -8
  6. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/cli.py +367 -56
  7. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/generator.py +15 -7
  8. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/base.py +23 -0
  9. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/go.py +47 -14
  10. shipit_cli-0.21.1/src/shipit/providers/install_context.py +635 -0
  11. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/node.py +130 -18
  12. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/node_static.py +5 -1
  13. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/python.py +72 -35
  14. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/staticfile.py +7 -3
  15. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/runners/base.py +1 -0
  16. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/runners/local.py +15 -3
  17. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/runners/wasmer.py +22 -18
  18. shipit_cli-0.21.1/src/shipit/version.py +5 -0
  19. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/volumes.py +27 -13
  20. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_cli_after_deploy.py +70 -0
  21. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_generate_shipit_examples.py +21 -5
  22. shipit_cli-0.21.1/tests/test_install_context.py +233 -0
  23. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_node_provider.py +22 -0
  24. shipit_cli-0.21.1/tests/test_subdir.py +735 -0
  25. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_volumes.py +37 -0
  26. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_wasmer_annotations.py +27 -5
  27. shipit_cli-0.20.2/src/shipit/version.py +0 -5
  28. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/.gitignore +0 -0
  29. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/README.md +0 -0
  30. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/__init__.py +0 -0
  31. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/assets/node/optimize-node-modules.sh +0 -0
  32. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/assets/php/php.ini +0 -0
  33. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/assets/wordpress/.htaccess +0 -0
  34. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/assets/wordpress/start.php +0 -0
  35. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/assets/wordpress/wp-config.php +0 -0
  36. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/builders/__init__.py +0 -0
  37. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/builders/base.py +0 -0
  38. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/procfile.py +0 -0
  39. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/hugo.py +0 -0
  40. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/jekyll.py +0 -0
  41. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/laravel.py +0 -0
  42. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/mkdocs.py +0 -0
  43. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/php.py +0 -0
  44. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/registry.py +0 -0
  45. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/providers/wordpress.py +0 -0
  46. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/runners/__init__.py +0 -0
  47. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/shipit_types.py +0 -0
  48. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/ui.py +0 -0
  49. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/src/shipit/utils.py +0 -0
  50. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_e2e.py +0 -0
  51. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_node_static_provider.py +0 -0
  52. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_php_provider.py +0 -0
  53. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_staticfile_provider.py +0 -0
  54. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/tests/test_version.py +0 -0
  55. {shipit_cli-0.20.2 → shipit_cli-0.21.1}/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.20.2
3
+ Version: 0.21.1
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "shipit-cli"
3
- version = "0.20.2"
3
+ version = "0.21.1"
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"
@@ -19,7 +19,10 @@ mkdir -p wp-content/upgrade
19
19
 
20
20
  if [ -n "${WPCONTENT_BASE_PATH:-}" ] && [ -d "${WPCONTENT_BASE_PATH}" ]; then
21
21
  shopt -s dotglob nullglob
22
- cp -R "${WPCONTENT_BASE_PATH}"/* /app/wp-content || true
22
+ # Note: change this back to copy all, once using the WP Zip files.
23
+ # cp -R "${WPCONTENT_BASE_PATH}"/* /app/wp-content || true
24
+ cp -R "${WPCONTENT_BASE_PATH}"/plugins/* /app/wp-content/plugins || true
25
+ cp -R "${WPCONTENT_BASE_PATH}"/themes/twentytwenty* /app/wp-content/themes || true
23
26
  shopt -u dotglob nullglob
24
27
  fi
25
28
 
@@ -45,12 +45,17 @@ class DockerBuildBackend:
45
45
  }
46
46
 
47
47
  def __init__(
48
- self, src_dir: Path, assets_path: Path, docker_client: Optional[str] = None,
49
- docker_opts: Optional[str] = None
48
+ self,
49
+ src_dir: Path,
50
+ assets_path: Path,
51
+ docker_client: Optional[str] = None,
52
+ docker_opts: Optional[str] = None,
53
+ shipit_dir: Optional[Path] = None,
50
54
  ) -> None:
51
55
  self.src_dir = src_dir
52
56
  self.assets_path = assets_path
53
- self.docker_path = self.src_dir / ".shipit" / "docker"
57
+ self.shipit_dir = shipit_dir or self.src_dir / ".shipit"
58
+ self.docker_path = self.shipit_dir / "docker"
54
59
  self.docker_path.mkdir(parents=True, exist_ok=True)
55
60
  self.docker_out_path = self.docker_path / "out"
56
61
  self.docker_file_path = self.docker_path / "Dockerfile"
@@ -77,7 +82,7 @@ class DockerBuildBackend:
77
82
  return self.docker_out_path / self.get_mount_path(name)
78
83
 
79
84
  def get_volume_path(self, name: str) -> Path:
80
- return self.src_dir / ".shipit" / "volumes" / name
85
+ return self.shipit_dir / "volumes" / name
81
86
 
82
87
  @property
83
88
  def is_depot(self) -> bool:
@@ -162,6 +167,15 @@ RUN curl https://mise.run | sh
162
167
  docker_file_contents += f"WORKDIR {step.path.absolute()}\n"
163
168
  elif isinstance(step, RunStep):
164
169
  if step.inputs:
170
+ parents = sorted(
171
+ {
172
+ Path(input).parent.as_posix()
173
+ for input in step.inputs
174
+ if Path(input).parent != Path(".")
175
+ }
176
+ )
177
+ for parent in parents:
178
+ docker_file_contents += f"RUN mkdir -p {parent}\n"
165
179
  pre = "\\\n " + "".join(
166
180
  [
167
181
  f"--mount=type=bind,source={input},target={input} \\\n "
@@ -25,10 +25,16 @@ from shipit.utils import download_file
25
25
 
26
26
 
27
27
  class LocalBuildBackend:
28
- def __init__(self, src_dir: Path, assets_path: Path) -> None:
28
+ def __init__(
29
+ self,
30
+ src_dir: Path,
31
+ assets_path: Path,
32
+ shipit_dir: Optional[Path] = None,
33
+ ) -> None:
29
34
  self.src_dir = src_dir
30
35
  self.assets_path = assets_path
31
- self.local_path = self.src_dir / ".shipit" / "local"
36
+ self.shipit_dir = shipit_dir or self.src_dir / ".shipit"
37
+ self.local_path = self.shipit_dir / "local"
32
38
  self.build_path = self.local_path / "build"
33
39
  self.workdir = self.build_path
34
40
  self.runtime_path: Optional[str] = None
@@ -46,7 +52,7 @@ class LocalBuildBackend:
46
52
  return self.get_mount_path(name)
47
53
 
48
54
  def get_volume_path(self, name: str) -> Path:
49
- return self.src_dir / ".shipit" / "volumes" / name
55
+ return self.shipit_dir / "volumes" / name
50
56
 
51
57
  def execute_step(self, step: Step, env: Dict[str, str]) -> None:
52
58
  build_path = self.workdir
@@ -62,8 +68,14 @@ class LocalBuildBackend:
62
68
  extra = ""
63
69
  if step.inputs:
64
70
  for input in step.inputs:
65
- console.print(f"Copying {input} to {build_path / input}")
66
- shutil.copy((self.src_dir / input), (build_path / input))
71
+ source = self.src_dir / input
72
+ target = build_path / input
73
+ console.print(f"Copying {input} to {target}")
74
+ target.parent.mkdir(parents=True, exist_ok=True)
75
+ if source.is_dir():
76
+ shutil.copytree(source, target, dirs_exist_ok=True)
77
+ else:
78
+ shutil.copy(source, target)
67
79
  all_inputs = ", ".join(step.inputs)
68
80
  extra = f" [bright_black]# using {all_inputs}[/bright_black]"
69
81
  console.print(
@@ -113,11 +125,25 @@ class LocalBuildBackend:
113
125
  raise Exception(f"Unknown base: {step.base}")
114
126
 
115
127
  console.print(
116
- f"[bold]Copy to {step.target} from {step.source}[/bold]{ignore_extra}"
128
+ "[bold]Copy to "
129
+ f"{step.target} from {step.source}[/bold]{ignore_extra}"
117
130
  )
118
131
 
119
- source = base / step.source
120
- target = build_path / step.target
132
+ source_path = Path(step.source)
133
+ target_path = Path(step.target)
134
+ source = (
135
+ source_path
136
+ if source_path.is_absolute()
137
+ else base / source_path
138
+ )
139
+ target = (
140
+ target_path
141
+ if target_path.is_absolute()
142
+ else build_path / target_path
143
+ )
144
+ if source.resolve(strict=False) == target.resolve(strict=False):
145
+ return
146
+ target.parent.mkdir(parents=True, exist_ok=True)
121
147
  if source.is_dir():
122
148
  shutil.copytree(
123
149
  source,