@sentry/cli 2.55.0 → 2.56.1

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.
package/checksums.txt CHANGED
@@ -1,10 +1,10 @@
1
- sentry-cli-Darwin-arm64=93ec099679e6f277710b9b1bf0320df14985693b6ddbfd7fc37500084184bf00
2
- sentry-cli-Darwin-universal=abfeca7cbb1f8b50b188118ab952728d973aebcfe8caa47e16853319b3e1d925
3
- sentry-cli-Darwin-x86_64=caec00a88edb88b5fb8d860e4d2870a645fc6c9124be858b4e046ce04aa1a5b8
4
- sentry-cli-Linux-aarch64=ad6f0669617b82ff78ebe90dac53ea92231d4dda3447f4db9b066424ff3de665
5
- sentry-cli-Linux-armv7=abbb55ba695184d272118b8d19d3bbe09843b5fd898efcf88481b5a92a548352
6
- sentry-cli-Linux-i686=4017c2d8d756b38f60179d4f481c278265b9be5ca7ae109ee87685b4a16c0cf0
7
- sentry-cli-Linux-x86_64=28bacd307c8a7b19d54a38e1a8d9808efff7e7382941c68ea6305d1c3385caef
8
- sentry-cli-Windows-aarch64.exe=47a261196a6806ac3afe5294cc57c71435154549784fbb060a2e62c643c7286c
9
- sentry-cli-Windows-i686.exe=99dc0674026dcfda3dea0224979099d5feb2fe163998cb0b67ba634ed86eee1e
10
- sentry-cli-Windows-x86_64.exe=5f9666720a4d9d018220b46c0ce5e99e2e0377fa0515eda9c5f58113504ca7b3
1
+ sentry-cli-Darwin-arm64=f91b37e40d6702ca00eaa24edcb82fdaa13e6573a25ba60f17a2e5a2a8910283
2
+ sentry-cli-Darwin-universal=87788404f46205637f0713140bcb20269d9859c0706144fa7a8fbe6e7e02b776
3
+ sentry-cli-Darwin-x86_64=d00bb8bd62ca17b61dd604db4cd2d444b029790510010a1a0b99ce2ad3b6ca43
4
+ sentry-cli-Linux-aarch64=cc58bca49593cd6fcda4d934e1bf68f3bed9194156ba122cdb2e4cfd79a23878
5
+ sentry-cli-Linux-armv7=636cf1211e55e816474e227282ebda032bcc75efe074a7f680abcedd092096ac
6
+ sentry-cli-Linux-i686=c913b72fd887be3d1c6bf73161f19b85b7063418bfbc5390df21f9c421515f95
7
+ sentry-cli-Linux-x86_64=be0bcbf4740c95330cf2d735769f31640d69fd297a2b74ad0cd9ed383814cafa
8
+ sentry-cli-Windows-aarch64.exe=d34275dfe92e74b9280dcc83dd9a7185618c0153f4c47e8b675ed3ca8e5a67f3
9
+ sentry-cli-Windows-i686.exe=1daea54f6f1c318c77091fdbcc8a596b263e71831787705c77f7ea09291a8697
10
+ sentry-cli-Windows-x86_64.exe=9a5d968428c9ae1ad03720b6f26d371c8571a0c1359ad4046b01893724ddfc97
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/cli",
3
- "version": "2.55.0",
3
+ "version": "2.56.1",
4
4
  "description": "A command line utility to work with Sentry. https://docs.sentry.io/hosted/learn/cli/",
5
5
  "repository": "git://github.com/getsentry/sentry-cli.git",
6
6
  "homepage": "https://docs.sentry.io/hosted/learn/cli/",
@@ -32,14 +32,14 @@
32
32
  "typescript": "~5.8.3"
33
33
  },
34
34
  "optionalDependencies": {
35
- "@sentry/cli-darwin": "2.55.0",
36
- "@sentry/cli-linux-arm": "2.55.0",
37
- "@sentry/cli-linux-arm64": "2.55.0",
38
- "@sentry/cli-linux-i686": "2.55.0",
39
- "@sentry/cli-linux-x64": "2.55.0",
40
- "@sentry/cli-win32-i686": "2.55.0",
41
- "@sentry/cli-win32-x64": "2.55.0",
42
- "@sentry/cli-win32-arm64": "2.55.0"
35
+ "@sentry/cli-darwin": "2.56.1",
36
+ "@sentry/cli-linux-arm": "2.56.1",
37
+ "@sentry/cli-linux-arm64": "2.56.1",
38
+ "@sentry/cli-linux-i686": "2.56.1",
39
+ "@sentry/cli-linux-x64": "2.56.1",
40
+ "@sentry/cli-win32-i686": "2.56.1",
41
+ "@sentry/cli-win32-x64": "2.56.1",
42
+ "@sentry/cli-win32-arm64": "2.56.1"
43
43
  },
44
44
  "scripts": {
45
45
  "postinstall": "node ./scripts/install.js",
package/scripts/wheels ADDED
@@ -0,0 +1,179 @@
1
+ #!/usr/bin/env python3
2
+ import argparse
3
+ import base64
4
+ import hashlib
5
+ import os.path
6
+ import shutil
7
+ import tempfile
8
+ import zipfile
9
+ from typing import NamedTuple
10
+
11
+
12
+ class Wheel(NamedTuple):
13
+ src: str
14
+ plat: str
15
+ exe: str = 'sentry-cli'
16
+
17
+
18
+ WHEELS = (
19
+ Wheel(
20
+ src='sentry-cli-Darwin-arm64',
21
+ plat='macosx_11_0_arm64',
22
+ ),
23
+ Wheel(
24
+ src='sentry-cli-Darwin-universal',
25
+ plat='macosx_11_0_universal2',
26
+ ),
27
+ Wheel(
28
+ src='sentry-cli-Darwin-x86_64',
29
+ plat='macosx_10_15_x86_64',
30
+ ),
31
+ Wheel(
32
+ src='sentry-cli-Linux-aarch64',
33
+ plat='manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_2_aarch64',
34
+ ),
35
+ Wheel(
36
+ src='sentry-cli-Linux-armv7',
37
+ plat='manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_2_armv7l',
38
+ ),
39
+ Wheel(
40
+ src='sentry-cli-Linux-i686',
41
+ plat='manylinux_2_17_i686.manylinux2014_i686.musllinux_1_2_i686',
42
+ ),
43
+ Wheel(
44
+ src='sentry-cli-Linux-x86_64',
45
+ plat='manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_2_x86_64',
46
+ ),
47
+ Wheel(
48
+ src='sentry-cli-Windows-i686.exe',
49
+ plat='win32',
50
+ exe='sentry-cli.exe',
51
+ ),
52
+ Wheel(
53
+ src='sentry-cli-Windows-x86_64.exe',
54
+ plat='win_amd64',
55
+ exe='sentry-cli.exe',
56
+ ),
57
+ Wheel(
58
+ src='sentry-cli-Windows-aarch64.exe',
59
+ plat='win_arm64',
60
+ exe='sentry-cli.exe',
61
+ ),
62
+ )
63
+
64
+
65
+ def main() -> int:
66
+ parser = argparse.ArgumentParser()
67
+ parser.add_argument('--binaries', required=True)
68
+ parser.add_argument('--base', required=True)
69
+ parser.add_argument('--dest', required=True)
70
+ args = parser.parse_args()
71
+
72
+ expected = {wheel.src for wheel in WHEELS}
73
+ received = set(os.listdir(args.binaries))
74
+ if expected < received:
75
+ raise SystemExit(
76
+ f'Unexpected binaries:\n\n'
77
+ f'- extra: {", ".join(sorted(received - expected))}\n'
78
+ f'- missing: {", ".join(sorted(expected - received))}'
79
+ )
80
+
81
+ sdist_path = wheel_path = None
82
+ for fname in os.listdir(args.base):
83
+ if fname.endswith('.tar.gz'):
84
+ sdist_path = os.path.join(args.base, fname)
85
+ elif fname.endswith('.whl'):
86
+ wheel_path = os.path.join(args.base, fname)
87
+ else:
88
+ raise SystemExit(f'unexpected file in `--base`: {fname}')
89
+
90
+ if sdist_path is None or wheel_path is None:
91
+ raise SystemExit('expected wheel and sdist in `--base`')
92
+
93
+ os.makedirs(args.dest, exist_ok=True)
94
+ shutil.copy(sdist_path, args.dest)
95
+
96
+ for wheel in WHEELS:
97
+ binary_src = os.path.join(args.binaries, wheel.src)
98
+ binary_size = os.stat(binary_src).st_size
99
+ with open(binary_src, 'rb') as bf:
100
+ digest = hashlib.sha256(bf.read()).digest()
101
+ digest_b64 = base64.urlsafe_b64encode(digest).rstrip(b'=').decode()
102
+
103
+ basename = os.path.basename(wheel_path)
104
+ wheelname, _ = os.path.splitext(basename)
105
+ name, version, py, abi, plat = wheelname.split('-')
106
+
107
+ with tempfile.TemporaryDirectory() as tmp:
108
+ with zipfile.ZipFile(wheel_path) as zipf:
109
+ zipf.extractall(tmp)
110
+
111
+ distinfo = os.path.join(tmp, f'{name}-{version}.dist-info')
112
+ scripts = os.path.join(tmp, f'{name}-{version}.data', 'scripts')
113
+
114
+ # replace the script binary with our copy
115
+ os.remove(os.path.join(scripts, 'sentry-cli'))
116
+ shutil.copy(binary_src, os.path.join(scripts, wheel.exe))
117
+
118
+ # rewrite RECORD to include the new file
119
+ record_fname = os.path.join(distinfo, 'RECORD')
120
+ with open(record_fname) as f:
121
+ record_lines = list(f)
122
+
123
+ record = f'{name}-{version}.data/scripts/sentry-cli,'
124
+ for i, line in enumerate(record_lines):
125
+ if line.startswith(record):
126
+ record_lines[i] = (
127
+ f'{name}-{version}.data/scripts/{wheel.exe},'
128
+ f'sha256={digest_b64},'
129
+ f'{binary_size}\n'
130
+ )
131
+ break
132
+ else:
133
+ raise SystemExit(f'could not find {record!r} in RECORD')
134
+
135
+ with open(record_fname, 'w') as f:
136
+ f.writelines(record_lines)
137
+
138
+ # rewrite WHEEL to have the new tags
139
+ wheel_fname = os.path.join(distinfo, 'WHEEL')
140
+ with open(wheel_fname) as f:
141
+ wheel_lines = list(f)
142
+
143
+ for i, line in enumerate(wheel_lines):
144
+ if line.startswith('Tag: '):
145
+ wheel_lines[i:i + 1] = [
146
+ f'Tag: {py}-{abi}-{plat}\n'
147
+ for plat in wheel.plat.split('.')
148
+ ]
149
+ break
150
+ else:
151
+ raise SystemExit("could not find 'Tag: ' in WHEEL")
152
+
153
+ with open(wheel_fname, 'w') as f:
154
+ f.writelines(wheel_lines)
155
+
156
+ # write out the final zip
157
+ new_basename = f'{name}-{version}-{py}-{abi}-{wheel.plat}.whl'
158
+ tmp_new_wheel = os.path.join(tmp, new_basename)
159
+ fnames = sorted(
160
+ os.path.join(root, fname)
161
+ for root, _, fnames in os.walk(tmp)
162
+ for fname in fnames
163
+ )
164
+ with zipfile.ZipFile(tmp_new_wheel, 'w') as zipf:
165
+ for fname in fnames:
166
+ zinfo = zipfile.ZipInfo(os.path.relpath(fname, tmp))
167
+ if '/scripts/' in zinfo.filename:
168
+ zinfo.external_attr = 0o100755 << 16
169
+ with open(fname, 'rb') as fb:
170
+ zipf.writestr(zinfo, fb.read())
171
+
172
+ # move into dest
173
+ shutil.move(tmp_new_wheel, args.dest)
174
+
175
+ return 0
176
+
177
+
178
+ if __name__ == '__main__':
179
+ raise SystemExit(main())