magic-pocket-cli 0.13.0__tar.gz → 0.14.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.
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/PKG-INFO +1 -1
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/codebuild.py +29 -1
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/dsql.py +5 -5
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/neon.py +5 -2
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pyproject.toml +1 -1
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/.gitignore +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/__init__.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/__init__.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/aws_auth.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/awscontainer_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/cloudfront_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/cloudfront_keys_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/cloudfront_waf_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/deploy_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/destroy_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/dsql_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/main_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/migrate_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/neon_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/permissions_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/rds_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/runtime_config_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/s3_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/status_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/store_url_helper.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/tidb_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/upstash_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/url_helper.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/vpc_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/cli/waf_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/django_cli.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/mediator.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/__init__.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/__init__.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/__init__.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/depot.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/docker.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/dockerignore.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/cloudformation.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/ecr.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/efs.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/lambdahandler.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/s3_utils.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/state.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/awscontainer.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/cloudfront.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/cloudfront_acm.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/cloudfront_keys.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/cloudfront_waf.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/rds.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/s3.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/tidb.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/upstash.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/vpc.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/awscontainer.yaml +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cf_function_api_host.js +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cf_function_host_redirect_prelude.js +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cf_function_spa_auth.js +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cf_function_spa_fallback.js +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cloudfront.yaml +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cloudfront_acm.yaml +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cloudfront_keys.yaml +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/cloudfront_waf.yaml +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/vpc.yaml +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/django-dotenv.env +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/django-settings.py +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/pocket.Dockerfile +0 -0
- {magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/pocket_simple.toml +0 -0
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/codebuild.py
RENAMED
|
@@ -2,6 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import os
|
|
5
|
+
import shutil
|
|
6
|
+
import stat
|
|
5
7
|
import time
|
|
6
8
|
import zipfile
|
|
7
9
|
from pathlib import Path
|
|
@@ -9,6 +11,7 @@ from pathlib import Path
|
|
|
9
11
|
import boto3
|
|
10
12
|
from botocore.exceptions import ClientError
|
|
11
13
|
|
|
14
|
+
from pocket.utils import echo
|
|
12
15
|
from pocket_cli.resources.aws.builders.dockerignore import (
|
|
13
16
|
load_dockerignore,
|
|
14
17
|
should_include,
|
|
@@ -287,7 +290,7 @@ class CodeBuildBuilder:
|
|
|
287
290
|
rel = os.path.join(rel_dir, filename) if rel_dir else filename
|
|
288
291
|
if not should_include(rel, spec):
|
|
289
292
|
continue
|
|
290
|
-
|
|
293
|
+
self._add_source_file(zf, os.path.join(dirpath, filename), rel)
|
|
291
294
|
|
|
292
295
|
zip_size_mb = buf.tell() / (1024 * 1024)
|
|
293
296
|
buf.seek(0)
|
|
@@ -296,6 +299,31 @@ class CodeBuildBuilder:
|
|
|
296
299
|
buf.close()
|
|
297
300
|
print(" アップロード完了 (%.1f MB)" % zip_size_mb)
|
|
298
301
|
|
|
302
|
+
def _add_source_file(
|
|
303
|
+
self, zf: zipfile.ZipFile, full_path: str, arcname: str
|
|
304
|
+
) -> None:
|
|
305
|
+
"""1 ファイルを zip に追加する(forge VM 由来の footgun を吸収)。
|
|
306
|
+
|
|
307
|
+
- 壊れた symlink(host 側参照など、実体が無い)は skip して warning。
|
|
308
|
+
そのまま ``zipfile.write`` すると ``FileNotFoundError`` で source zip
|
|
309
|
+
作成ごと落ち、deploy 全体が失敗するため。
|
|
310
|
+
- 通常ファイルの権限を 0644 / 実行ファイルを 0755 に正規化する。
|
|
311
|
+
forge VM では ``sed -i`` 編集等で 0600 のファイルが生まれやすく、
|
|
312
|
+
そのまま image に入ると Lambda の非 root 実行ユーザーが読めず起動時に
|
|
313
|
+
panic する。mode を落として(他ユーザー read を保証して)防ぐ。
|
|
314
|
+
"""
|
|
315
|
+
if not os.path.exists(full_path):
|
|
316
|
+
# os.path.exists は symlink を辿るため、壊れた symlink で False
|
|
317
|
+
echo.warning(" 壊れた symlink を skip: %s" % arcname)
|
|
318
|
+
return
|
|
319
|
+
zi = zipfile.ZipInfo.from_file(full_path, arcname)
|
|
320
|
+
zi.compress_type = zipfile.ZIP_DEFLATED
|
|
321
|
+
perm = (zi.external_attr >> 16) & 0o777
|
|
322
|
+
new_perm = 0o755 if perm & stat.S_IXUSR else 0o644
|
|
323
|
+
zi.external_attr = (new_perm << 16) | (zi.external_attr & 0xFFFF)
|
|
324
|
+
with open(full_path, "rb") as src, zf.open(zi, "w") as dst:
|
|
325
|
+
shutil.copyfileobj(src, dst)
|
|
326
|
+
|
|
299
327
|
# --- ビルド実行 ---
|
|
300
328
|
|
|
301
329
|
def _start_build(
|
|
@@ -29,9 +29,9 @@ class Dsql:
|
|
|
29
29
|
for cluster in page["clusters"]:
|
|
30
30
|
identifier = cluster["identifier"]
|
|
31
31
|
try:
|
|
32
|
-
detail = self._client.get_cluster(
|
|
32
|
+
detail = self._client.get_cluster(identifier=identifier)
|
|
33
33
|
tags = self._client.list_tags_for_resource(
|
|
34
|
-
|
|
34
|
+
resourceArn=detail["arn"]
|
|
35
35
|
)
|
|
36
36
|
if tags.get("tags", {}).get("Name") == self.context.tag_name:
|
|
37
37
|
return detail
|
|
@@ -102,7 +102,7 @@ class Dsql:
|
|
|
102
102
|
if not self.identifier:
|
|
103
103
|
return
|
|
104
104
|
echo.log("Deleting DSQL cluster: %s" % self.identifier)
|
|
105
|
-
self._client.delete_cluster(
|
|
105
|
+
self._client.delete_cluster(identifier=self.identifier)
|
|
106
106
|
echo.log("Waiting for DSQL cluster deletion...")
|
|
107
107
|
self._wait_deleted(self.identifier, timeout=600)
|
|
108
108
|
echo.success("DSQL cluster was deleted.")
|
|
@@ -110,7 +110,7 @@ class Dsql:
|
|
|
110
110
|
def _wait_active(self, identifier: str, timeout: int = 600, interval: int = 5):
|
|
111
111
|
for i in range(timeout // interval):
|
|
112
112
|
try:
|
|
113
|
-
res = self._client.get_cluster(
|
|
113
|
+
res = self._client.get_cluster(identifier=identifier)
|
|
114
114
|
if res["status"] == "ACTIVE":
|
|
115
115
|
print("")
|
|
116
116
|
return
|
|
@@ -125,7 +125,7 @@ class Dsql:
|
|
|
125
125
|
def _wait_deleted(self, identifier: str, timeout: int = 600, interval: int = 5):
|
|
126
126
|
for i in range(timeout // interval):
|
|
127
127
|
try:
|
|
128
|
-
self._client.get_cluster(
|
|
128
|
+
self._client.get_cluster(identifier=identifier)
|
|
129
129
|
except ClientError as e:
|
|
130
130
|
if e.response["Error"]["Code"] == "ResourceNotFoundException":
|
|
131
131
|
print("")
|
|
@@ -329,8 +329,11 @@ class Neon:
|
|
|
329
329
|
# store_url の呼び出し側も branch 不在を確認済だが、直接呼ばれた場合の防御。
|
|
330
330
|
if self.branch is not None:
|
|
331
331
|
return
|
|
332
|
-
|
|
333
|
-
|
|
332
|
+
# branch/endpoint の cached_property を無効化し、branch 作成後の再取得を
|
|
333
|
+
# 強制する。endpoint はこの経路で一度も access していない (cache 未生成) ため
|
|
334
|
+
# 素の `del` は AttributeError になる。access 有無に依らず安全な pop で消す。
|
|
335
|
+
self.__dict__.pop("branch", None)
|
|
336
|
+
self.__dict__.pop("endpoint", None)
|
|
334
337
|
data = {
|
|
335
338
|
"branch": {
|
|
336
339
|
"name": self.context.branch_name,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/__init__.py
RENAMED
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/depot.py
RENAMED
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/builders/docker.py
RENAMED
|
File without changes
|
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/cloudformation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/resources/aws/lambdahandler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/cloudformation/vpc.yaml
RENAMED
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/django-dotenv.env
RENAMED
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/django-settings.py
RENAMED
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/pocket.Dockerfile
RENAMED
|
File without changes
|
{magic_pocket_cli-0.13.0 → magic_pocket_cli-0.14.0}/pocket_cli/templates/init/pocket_simple.toml
RENAMED
|
File without changes
|