fix(extension): 保留社区插件可执行权限
This commit is contained in:
@@ -82,6 +82,8 @@ def install_zip(data: bytes, kind: str, storage: Path, install: Callable[[Path],
|
|||||||
if written > MAX_EXPANDED_BYTES:
|
if written > MAX_EXPANDED_BYTES:
|
||||||
raise ApiError(413, 'EXTENSION_ZIP_TOO_LARGE', 'ZIP 解压后不能超过 50 MiB。')
|
raise ApiError(413, 'EXTENSION_ZIP_TOO_LARGE', 'ZIP 解压后不能超过 50 MiB。')
|
||||||
output.write(chunk)
|
output.write(chunk)
|
||||||
|
if (entry.external_attr >> 16) & 0o111:
|
||||||
|
target.chmod(0o755)
|
||||||
manifest = f'{kind}.yaml'
|
manifest = f'{kind}.yaml'
|
||||||
root = destination
|
root = destination
|
||||||
if not (root / manifest).is_file():
|
if not (root / manifest).is_file():
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ def build(output: Path | None = None) -> dict:
|
|||||||
for name in sorted(files):
|
for name in sorted(files):
|
||||||
info = zipfile.ZipInfo(f'{identity}/{name}', date_time=(1980, 1, 1, 0, 0, 0))
|
info = zipfile.ZipInfo(f'{identity}/{name}', date_time=(1980, 1, 1, 0, 0, 0))
|
||||||
info.create_system = 3
|
info.create_system = 3
|
||||||
info.external_attr = 0o100644 << 16
|
info.external_attr = (0o100755 if name == 'markdown-workbench.exe' else 0o100644) << 16
|
||||||
info.compress_type = zipfile.ZIP_DEFLATED
|
info.compress_type = zipfile.ZIP_DEFLATED
|
||||||
content = generated.get(name)
|
content = generated.get(name)
|
||||||
if content is None:
|
if content is None:
|
||||||
|
|||||||
Reference in New Issue
Block a user