@sentry/cli 2.56.0 → 2.57.0

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=f5d27c6c6d79e71897ac2373afb2511d42b17b80b9934cf51c957830a2053437
2
- sentry-cli-Darwin-universal=820e2a96ca19ffdcfcfaee4da062b7107aa95f2a7a323686d2eb87a028afee20
3
- sentry-cli-Darwin-x86_64=2407f24118547e83aaf8c97cdcdef4f29dc5a4daeca555ff38f62c9ca6cd5bf9
4
- sentry-cli-Linux-aarch64=47cf6d5949157ebe3caedd6d1ee75b76c530d8a30680f861a7e61dddd7eed6dc
5
- sentry-cli-Linux-armv7=e26ca07bca7f7139cb20380eb864a34dd92ad8504e274a5bef22fb48b409892e
6
- sentry-cli-Linux-i686=a87d3fa099e17a38b132da924355eadc9416267bd052ee1c85b0c94113de9800
7
- sentry-cli-Linux-x86_64=32177042eb84e0dbd64ce96692e1d0f14b99aad9ffb6023602553f0e1f4706b2
8
- sentry-cli-Windows-aarch64.exe=a10dfa2a47f3106babd9d7df89b7371cb8d8801183202a82aeacd9382eae5974
9
- sentry-cli-Windows-i686.exe=5469e25238f52c3ce8ce1f025fa203ccf1cdd2f2898fea34f869727b25b0dcbc
10
- sentry-cli-Windows-x86_64.exe=e46cfdae03f9aa3c324659e8e693337741a8fb8a899858bfaaa54872f66a53f7
1
+ sentry-cli-Darwin-arm64=7a3da0a6f4fd3805286880160e697240ef84b26794a3f13ab8b5a3a9d81308fe
2
+ sentry-cli-Darwin-universal=e5d890e92b5cef66b93898d2d81aad89ed9ec9a962364fd164eff0cef77ef99f
3
+ sentry-cli-Darwin-x86_64=d4fad9ceb5b682a6140c185845bce057122e30d251d38162d3684b9c96b63901
4
+ sentry-cli-Linux-aarch64=cb3ce12b59dd6cb5d516a3d3ac07b79d99544856f49ebd88b022851cbba71c2d
5
+ sentry-cli-Linux-armv7=7d3acba06f184069418a4fa9d24145d12669786115e51ce66b179943c0e7e6ae
6
+ sentry-cli-Linux-i686=76199ca9c0db562c741b5d6a63d402de1678cbf107e94d181d14e2248600d932
7
+ sentry-cli-Linux-x86_64=c214ddd4b3e1143018c23c040ae347ecba0ed9a0ff4826679bc21d9796e9a96a
8
+ sentry-cli-Windows-aarch64.exe=62e2f879c593fa8846c0a81548317ebeff877fee1fed7bd5720606693462464b
9
+ sentry-cli-Windows-i686.exe=1ea475d2014f4dfb658cd2b5a3bbdfa9b3d2eebba81ec784ccb80a386cf10145
10
+ sentry-cli-Windows-x86_64.exe=cfb6881493e41272ce2fa77fa77bbbb0b3f5360bdca684c11f393d9af00d0954
package/js/index.d.ts CHANGED
@@ -105,6 +105,10 @@ declare module '@sentry/cli' {
105
105
  * When paired with the rewrite option this will add ~ to the stripPrefix array.
106
106
  */
107
107
  stripCommonPrefix?: boolean;
108
+ /**
109
+ * The projects to upload the sourcemaps to. If not provided, the sourcemaps will be uploaded to the default project.
110
+ */
111
+ projects?: string[];
108
112
  /**
109
113
  * This attempts sourcemap validation before upload when rewriting is not enabled.
110
114
  * It will spot a variety of issues with source maps and cancel the upload if any are found.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/cli",
3
- "version": "2.56.0",
3
+ "version": "2.57.0",
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.56.0",
36
- "@sentry/cli-linux-arm": "2.56.0",
37
- "@sentry/cli-linux-arm64": "2.56.0",
38
- "@sentry/cli-linux-i686": "2.56.0",
39
- "@sentry/cli-linux-x64": "2.56.0",
40
- "@sentry/cli-win32-i686": "2.56.0",
41
- "@sentry/cli-win32-x64": "2.56.0",
42
- "@sentry/cli-win32-arm64": "2.56.0"
35
+ "@sentry/cli-darwin": "2.57.0",
36
+ "@sentry/cli-linux-arm": "2.57.0",
37
+ "@sentry/cli-linux-arm64": "2.57.0",
38
+ "@sentry/cli-linux-i686": "2.57.0",
39
+ "@sentry/cli-linux-x64": "2.57.0",
40
+ "@sentry/cli-win32-i686": "2.57.0",
41
+ "@sentry/cli-win32-x64": "2.57.0",
42
+ "@sentry/cli-win32-arm64": "2.57.0"
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())