@sentry/wizard 3.40.0 → 3.41.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/CHANGELOG.md +8 -1
- package/README.md +19 -19
- package/bin.ts +5 -0
- package/codecov.yml +15 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -1
- package/dist/e2e-tests/jest.config.d.ts +1 -0
- package/dist/e2e-tests/jest.config.js +1 -0
- package/dist/e2e-tests/jest.config.js.map +1 -1
- package/dist/package.json +3 -2
- package/dist/src/apple/apple-wizard.js +1 -2
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/apple/code-tools.d.ts +10 -0
- package/dist/src/apple/code-tools.js +16 -12
- package/dist/src/apple/code-tools.js.map +1 -1
- package/dist/src/apple/fastlane.d.ts +23 -0
- package/dist/src/apple/fastlane.js +11 -7
- package/dist/src/apple/fastlane.js.map +1 -1
- package/dist/src/apple/templates.d.ts +1 -1
- package/dist/src/apple/templates.js +0 -2
- package/dist/src/apple/templates.js.map +1 -1
- package/dist/src/apple/xcode-manager.d.ts +10 -6
- package/dist/src/apple/xcode-manager.js +146 -61
- package/dist/src/apple/xcode-manager.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.js +5 -3
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nuxt/nuxt-wizard.js +6 -4
- package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
- package/dist/src/nuxt/sdk-setup.d.ts +1 -1
- package/dist/src/nuxt/sdk-setup.js +2 -1
- package/dist/src/nuxt/sdk-setup.js.map +1 -1
- package/dist/src/react-native/react-native-wizard.js +5 -3
- package/dist/src/react-native/react-native-wizard.js.map +1 -1
- package/dist/src/remix/remix-wizard.js +5 -3
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/run.d.ts +1 -0
- package/dist/src/run.js +1 -0
- package/dist/src/run.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js +5 -3
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/utils/clack-utils.d.ts +3 -1
- package/dist/src/utils/clack-utils.js +18 -12
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/package-manager.d.ts +1 -0
- package/dist/src/utils/package-manager.js +5 -0
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/src/utils/types.d.ts +9 -0
- package/dist/src/utils/types.js.map +1 -1
- package/dist/test/apple/cocoapod.test.d.ts +1 -0
- package/dist/test/apple/cocoapod.test.js +409 -0
- package/dist/test/apple/cocoapod.test.js.map +1 -0
- package/dist/test/apple/code-tools.test.d.ts +1 -0
- package/dist/test/apple/code-tools.test.js +673 -0
- package/dist/test/apple/code-tools.test.js.map +1 -0
- package/dist/test/apple/fastfile.test.d.ts +1 -0
- package/dist/test/apple/fastfile.test.js +431 -0
- package/dist/test/apple/fastfile.test.js.map +1 -0
- package/dist/test/apple/templates.test.d.ts +1 -0
- package/dist/test/apple/templates.test.js +73 -0
- package/dist/test/apple/templates.test.js.map +1 -0
- package/dist/test/apple/xcode-manager.test.d.ts +1 -0
- package/dist/test/apple/xcode-manager.test.js +834 -0
- package/dist/test/apple/xcode-manager.test.js.map +1 -0
- package/dist/test/utils/clack-utils.test.js +89 -0
- package/dist/test/utils/clack-utils.test.js.map +1 -1
- package/e2e-tests/jest.config.ts +1 -0
- package/e2e-tests/test-applications/apple/damaged-missing-configuration-list/Project.xcodeproj/project.pbxproj +52 -0
- package/e2e-tests/test-applications/apple/damaged-missing-configuration-list/Project.xcodeproj/xcshareddata/xcschemes/Project1.xcscheme +78 -0
- package/e2e-tests/test-applications/apple/no-targets/Project.xcodeproj/project.pbxproj +62 -0
- package/e2e-tests/test-applications/apple/no-targets/Project.xcodeproj/xcshareddata/xcschemes/Project1.xcscheme +78 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project.xcodeproj/project.pbxproj +470 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project.xcodeproj/xcshareddata/xcschemes/Project1.xcscheme +78 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project1/ContentView.swift +7 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project1/Project1App.swift +10 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project2/ContentView.swift +7 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project2/Project2App.swift +10 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Project.xcodeproj/project.pbxproj +382 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Project.xcodeproj/xcshareddata/xcschemes/Project.xcscheme +78 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Sources/ContentView.swift +7 -0
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Sources/MainApp.swift +10 -0
- package/package.json +3 -2
- package/src/apple/apple-wizard.ts +1 -2
- package/src/apple/code-tools.ts +21 -6
- package/src/apple/fastlane.ts +18 -2
- package/src/apple/templates.ts +2 -2
- package/src/apple/xcode-manager.ts +181 -94
- package/src/nextjs/nextjs-wizard.ts +5 -2
- package/src/nuxt/nuxt-wizard.ts +6 -3
- package/src/nuxt/sdk-setup.ts +2 -0
- package/src/react-native/react-native-wizard.ts +5 -2
- package/src/remix/remix-wizard.ts +5 -2
- package/src/run.ts +2 -0
- package/src/sveltekit/sveltekit-wizard.ts +5 -2
- package/src/utils/clack-utils.ts +12 -2
- package/src/utils/package-manager.ts +6 -0
- package/src/utils/types.ts +10 -0
- package/test/apple/cocoapod.test.ts +306 -0
- package/test/apple/code-tools.test.ts +1042 -0
- package/test/apple/fastfile.test.ts +550 -0
- package/test/apple/templates.test.ts +191 -0
- package/test/apple/xcode-manager.test.ts +1066 -0
- package/test/utils/clack-utils.test.ts +92 -0
- package/types/xcode.d.ts +526 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
askForToolConfigPath,
|
|
3
3
|
createNewConfigFile,
|
|
4
|
+
installPackage,
|
|
4
5
|
} from '../../src/utils/clack-utils';
|
|
5
6
|
|
|
6
7
|
import * as fs from 'fs';
|
|
8
|
+
import * as ChildProcess from 'child_process';
|
|
9
|
+
import { PackageManager } from '../../src/utils/package-manager';
|
|
7
10
|
|
|
8
11
|
type ClackMock = {
|
|
9
12
|
confirm: jest.Mock;
|
|
@@ -15,6 +18,7 @@ type ClackMock = {
|
|
|
15
18
|
success: jest.Mock;
|
|
16
19
|
warn: jest.Mock;
|
|
17
20
|
};
|
|
21
|
+
spinner: () => { start: jest.Mock; stop: jest.Mock };
|
|
18
22
|
};
|
|
19
23
|
|
|
20
24
|
let clackMock: ClackMock;
|
|
@@ -31,6 +35,9 @@ jest.mock('@clack/prompts', () => {
|
|
|
31
35
|
cancel: jest.fn(),
|
|
32
36
|
// passthrough for abortIfCancelled
|
|
33
37
|
isCancel: jest.fn().mockReturnValue(false),
|
|
38
|
+
spinner: jest
|
|
39
|
+
.fn()
|
|
40
|
+
.mockImplementation(() => ({ start: jest.fn(), stop: jest.fn() })),
|
|
34
41
|
};
|
|
35
42
|
return clackMock;
|
|
36
43
|
});
|
|
@@ -140,3 +147,88 @@ describe('createNewConfigFile', () => {
|
|
|
140
147
|
expect(result).toBe(false);
|
|
141
148
|
});
|
|
142
149
|
});
|
|
150
|
+
|
|
151
|
+
describe('installPackage', () => {
|
|
152
|
+
afterEach(() => {
|
|
153
|
+
jest.clearAllMocks();
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
it('force-installs a package if the forceInstall flag is set', async () => {
|
|
157
|
+
const packageManagerMock: PackageManager = {
|
|
158
|
+
name: 'npm',
|
|
159
|
+
label: 'NPM',
|
|
160
|
+
installCommand: 'npm install',
|
|
161
|
+
buildCommand: 'npm run build',
|
|
162
|
+
runScriptCommand: 'npm run',
|
|
163
|
+
flags: '',
|
|
164
|
+
forceInstallFlag: '--force',
|
|
165
|
+
detect: jest.fn(),
|
|
166
|
+
addOverride: jest.fn(),
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const execSpy = jest
|
|
170
|
+
.spyOn(ChildProcess, 'exec')
|
|
171
|
+
// @ts-expect-error - don't care about the return value
|
|
172
|
+
.mockImplementationOnce((cmd, cb) => {
|
|
173
|
+
if (cb) {
|
|
174
|
+
// @ts-expect-error - don't care about the options value
|
|
175
|
+
cb(null, '', '');
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
await installPackage({
|
|
180
|
+
alreadyInstalled: false,
|
|
181
|
+
packageName: '@sentry/sveltekit',
|
|
182
|
+
packageNameDisplayLabel: '@sentry/sveltekit',
|
|
183
|
+
forceInstall: true,
|
|
184
|
+
askBeforeUpdating: false,
|
|
185
|
+
packageManager: packageManagerMock,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
expect(execSpy).toHaveBeenCalledWith(
|
|
189
|
+
'npm install @sentry/sveltekit --force',
|
|
190
|
+
expect.any(Function),
|
|
191
|
+
);
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it.each([false, undefined])(
|
|
195
|
+
"doesn't force-install a package if the forceInstall flag is %s",
|
|
196
|
+
async (flag) => {
|
|
197
|
+
const packageManagerMock: PackageManager = {
|
|
198
|
+
name: 'npm',
|
|
199
|
+
label: 'NPM',
|
|
200
|
+
installCommand: 'npm install',
|
|
201
|
+
buildCommand: 'npm run build',
|
|
202
|
+
runScriptCommand: 'npm run',
|
|
203
|
+
flags: '',
|
|
204
|
+
forceInstallFlag: '--force',
|
|
205
|
+
detect: jest.fn(),
|
|
206
|
+
addOverride: jest.fn(),
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
const execSpy = jest
|
|
210
|
+
.spyOn(ChildProcess, 'exec')
|
|
211
|
+
// @ts-expect-error - don't care about the return value
|
|
212
|
+
.mockImplementationOnce((cmd, cb) => {
|
|
213
|
+
if (cb) {
|
|
214
|
+
// @ts-expect-error - don't care about the options value
|
|
215
|
+
cb(null, '', '');
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
await installPackage({
|
|
220
|
+
alreadyInstalled: false,
|
|
221
|
+
packageName: '@sentry/sveltekit',
|
|
222
|
+
packageNameDisplayLabel: '@sentry/sveltekit',
|
|
223
|
+
forceInstall: flag,
|
|
224
|
+
askBeforeUpdating: false,
|
|
225
|
+
packageManager: packageManagerMock,
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
expect(execSpy).toHaveBeenCalledWith(
|
|
229
|
+
'npm install @sentry/sveltekit ',
|
|
230
|
+
expect.any(Function),
|
|
231
|
+
);
|
|
232
|
+
},
|
|
233
|
+
);
|
|
234
|
+
});
|
package/types/xcode.d.ts
ADDED
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
// The xcode package is not typed, so we need to manually maintain this file.
|
|
2
|
+
// This typing is created by hand and needs to be updated when the types change.
|
|
3
|
+
// As most fields are from parsing Xcode project files, it is hard to tell which fields are optional.
|
|
4
|
+
// Therefore most fields are marked as nullable, except the ones we are certain about.
|
|
5
|
+
|
|
6
|
+
declare module 'xcode' {
|
|
7
|
+
interface PBXFileOptions {
|
|
8
|
+
lastKnownFileType?: string;
|
|
9
|
+
group?: string;
|
|
10
|
+
customFramework?: boolean;
|
|
11
|
+
defaultEncoding?: string;
|
|
12
|
+
explicitFileType?: string;
|
|
13
|
+
sourceTree?: string;
|
|
14
|
+
weak?: boolean;
|
|
15
|
+
compilerFlags?: string;
|
|
16
|
+
embed?: boolean;
|
|
17
|
+
sign?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
class PBXFile {
|
|
21
|
+
basename?: string;
|
|
22
|
+
lastKnownFileType?: string;
|
|
23
|
+
group?: string;
|
|
24
|
+
customFramework?: boolean;
|
|
25
|
+
dirname?: string;
|
|
26
|
+
path?: string;
|
|
27
|
+
fileEncoding?: string;
|
|
28
|
+
explicitFileType?: string;
|
|
29
|
+
defaultEncoding?: string;
|
|
30
|
+
sourceTree?: string;
|
|
31
|
+
includeInIndex?: number;
|
|
32
|
+
settings?: {
|
|
33
|
+
ATTRIBUTES?: string[];
|
|
34
|
+
COMPILER_FLAGS?: string;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
constructor(filepath: string, opt?: PBXFileOptions);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface PBXBuildFile {
|
|
41
|
+
isa: 'PBXBuildFile';
|
|
42
|
+
fileRef?: string;
|
|
43
|
+
fileRef_comment?: string;
|
|
44
|
+
productRef?: string;
|
|
45
|
+
productRef_comment?: string;
|
|
46
|
+
settings?: {
|
|
47
|
+
ATTRIBUTES?: string[];
|
|
48
|
+
COMPILER_FLAGS?: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface PBXWriterOptions {
|
|
53
|
+
omitEmptyValues?: boolean;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
class PBXWriter {
|
|
57
|
+
constructor(contents: string, options: PBXWriterOptions);
|
|
58
|
+
|
|
59
|
+
write(output: string): void;
|
|
60
|
+
writeFlush(output: string): void;
|
|
61
|
+
writeSync(): string;
|
|
62
|
+
writeHeadComment(): void;
|
|
63
|
+
writeProject(): void;
|
|
64
|
+
writeObject(object: Record<string, Array | object | string | number>): void;
|
|
65
|
+
writeObjectsSections(
|
|
66
|
+
objects: Record<string, Array | object | string | number>,
|
|
67
|
+
): void;
|
|
68
|
+
writeArray(
|
|
69
|
+
arr: Array<
|
|
70
|
+
| {
|
|
71
|
+
value?: string;
|
|
72
|
+
comment?: string;
|
|
73
|
+
}
|
|
74
|
+
| Record<string, Array | object | string | number>
|
|
75
|
+
>,
|
|
76
|
+
name: string,
|
|
77
|
+
): void;
|
|
78
|
+
|
|
79
|
+
writeSectionComment(name: string, begin: boolean): void;
|
|
80
|
+
writeSection(
|
|
81
|
+
section: Record<string, Array | object | string | number>,
|
|
82
|
+
): void;
|
|
83
|
+
writeInlineObject(
|
|
84
|
+
name: string,
|
|
85
|
+
comment: string,
|
|
86
|
+
object: Record<string, Array | object | string | number>,
|
|
87
|
+
): void;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface PBXNativeTarget {
|
|
91
|
+
name: string;
|
|
92
|
+
productType: string;
|
|
93
|
+
|
|
94
|
+
buildConfigurationList?: string;
|
|
95
|
+
buildConfigurationList_comment?: string;
|
|
96
|
+
buildPhases?: {
|
|
97
|
+
value: string;
|
|
98
|
+
comment?: string;
|
|
99
|
+
}[];
|
|
100
|
+
buildRules?: {
|
|
101
|
+
[key: string]: unknown;
|
|
102
|
+
}[];
|
|
103
|
+
dependencies?: {
|
|
104
|
+
[key: string]: unknown;
|
|
105
|
+
}[];
|
|
106
|
+
fileSystemSynchronizedGroups?: {
|
|
107
|
+
value: string;
|
|
108
|
+
comment?: string;
|
|
109
|
+
}[];
|
|
110
|
+
packageProductDependencies?: {
|
|
111
|
+
value: string;
|
|
112
|
+
comment: string;
|
|
113
|
+
}[];
|
|
114
|
+
productName?: string;
|
|
115
|
+
productReference?: string;
|
|
116
|
+
productReference_comment?: string;
|
|
117
|
+
productType?: string;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export interface XCConfigurationList {
|
|
121
|
+
buildConfigurations?: {
|
|
122
|
+
value: string;
|
|
123
|
+
}[];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface PBXGroup {
|
|
127
|
+
path?: string;
|
|
128
|
+
children?: {
|
|
129
|
+
value: string;
|
|
130
|
+
comment?: string;
|
|
131
|
+
}[];
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
interface PBXCopyFilesBuildPhase {
|
|
135
|
+
[key: string]: unknown;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface XCBuildConfiguration {
|
|
139
|
+
buildSettings?: {
|
|
140
|
+
[key: string]: string;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface PBXFrameworksBuildPhase {
|
|
145
|
+
files?: {
|
|
146
|
+
value: string;
|
|
147
|
+
comment?: string;
|
|
148
|
+
}[];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
interface XCRemoteSwiftPackageReference {
|
|
152
|
+
isa: 'XCRemoteSwiftPackageReference';
|
|
153
|
+
repositoryURL: string;
|
|
154
|
+
requirement: {
|
|
155
|
+
kind: string;
|
|
156
|
+
minimumVersion: string;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
interface XCSwiftPackageProductDependency {
|
|
161
|
+
isa: 'XCSwiftPackageProductDependency';
|
|
162
|
+
package: string;
|
|
163
|
+
productName: string;
|
|
164
|
+
package_comment?: string;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface PBXShellScriptBuildPhase {
|
|
168
|
+
shellScript: string;
|
|
169
|
+
inputFileListPaths?: string[];
|
|
170
|
+
outputFileListPaths?: string[];
|
|
171
|
+
inputPaths?: string[];
|
|
172
|
+
outputPaths?: string[];
|
|
173
|
+
shellPath?: string;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface PBXSourcesBuildPhase {
|
|
177
|
+
files?: {
|
|
178
|
+
value: string;
|
|
179
|
+
comment?: string;
|
|
180
|
+
}[];
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export interface PBXFileReference {
|
|
184
|
+
path: string;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface PBXObjects {
|
|
188
|
+
PBXBuildFile?: {
|
|
189
|
+
[key: string]: PBXBuildFile | string;
|
|
190
|
+
};
|
|
191
|
+
PBXCopyFilesBuildPhase?: {
|
|
192
|
+
[key: string]: PBXCopyFilesBuildPhase | string;
|
|
193
|
+
};
|
|
194
|
+
PBXFileReference?: {
|
|
195
|
+
[key: string]: PBXFileReference | string;
|
|
196
|
+
};
|
|
197
|
+
PBXFrameworksBuildPhase?: {
|
|
198
|
+
[key: string]: PBXFrameworksBuildPhase | string;
|
|
199
|
+
};
|
|
200
|
+
PBXGroup?: {
|
|
201
|
+
[key: string]: PBXGroup | string;
|
|
202
|
+
};
|
|
203
|
+
PBXNativeTarget?: {
|
|
204
|
+
[key: string]: PBXNativeTarget | string;
|
|
205
|
+
};
|
|
206
|
+
PBXProject?: {
|
|
207
|
+
[key: string]: PBXProject | string;
|
|
208
|
+
};
|
|
209
|
+
PBXShellScriptBuildPhase?: {
|
|
210
|
+
[key: string]: PBXShellScriptBuildPhase | string;
|
|
211
|
+
};
|
|
212
|
+
PBXSourcesBuildPhase?: {
|
|
213
|
+
[key: string]: PBXSourcesBuildPhase | string;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
XCBuildConfiguration?: {
|
|
217
|
+
[key: string]: XCBuildConfiguration | string;
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* The XCConfigurationList is not always present in the project file.
|
|
221
|
+
*
|
|
222
|
+
* If the configuration list is not present, Xcode will declare the project as damaged.
|
|
223
|
+
*/
|
|
224
|
+
XCConfigurationList?: {
|
|
225
|
+
[key: string]: XCConfigurationList | string;
|
|
226
|
+
};
|
|
227
|
+
XCRemoteSwiftPackageReference?: {
|
|
228
|
+
[key: string]: XCRemoteSwiftPackageReference | string;
|
|
229
|
+
};
|
|
230
|
+
XCSwiftPackageProductDependency?: {
|
|
231
|
+
[key: string]: XCSwiftPackageProductDependency | string;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
mainGroup: string;
|
|
235
|
+
packageReferences?: {
|
|
236
|
+
value: string;
|
|
237
|
+
comment?: string;
|
|
238
|
+
}[];
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export interface PBXProject {
|
|
242
|
+
attributes?: {
|
|
243
|
+
BuildIndependentTargetsInParallel?: number;
|
|
244
|
+
LastSwiftUpdateCheck?: number;
|
|
245
|
+
LastUpgradeCheck?: number;
|
|
246
|
+
TargetAttributes?: {
|
|
247
|
+
[key: string]: {
|
|
248
|
+
CreatedOnToolsVersion?: string;
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
buildConfigurationList?: string;
|
|
253
|
+
buildConfigurationList_comment?: string;
|
|
254
|
+
developmentRegion?: string;
|
|
255
|
+
hasScannedForEncodings?: number;
|
|
256
|
+
knownRegions?: string[];
|
|
257
|
+
mainGroup?: string;
|
|
258
|
+
minimizedProjectReferenceProxies?: number;
|
|
259
|
+
preferredProjectObjectVersion?: number;
|
|
260
|
+
productRefGroup?: string;
|
|
261
|
+
productRefGroup_comment?: string;
|
|
262
|
+
projectDirPath?: string;
|
|
263
|
+
projectRoot?: string;
|
|
264
|
+
targets?: {
|
|
265
|
+
value: string;
|
|
266
|
+
comment?: string;
|
|
267
|
+
}[];
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export class Project extends import('events').EventEmitter {
|
|
271
|
+
hash: {
|
|
272
|
+
project: {
|
|
273
|
+
objects: PBXObjects;
|
|
274
|
+
};
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
filepath: string;
|
|
278
|
+
|
|
279
|
+
constructor(filename: string);
|
|
280
|
+
|
|
281
|
+
parse(cb: (err: Error | null) => void): void;
|
|
282
|
+
parseSync(): void;
|
|
283
|
+
|
|
284
|
+
writeSync(options?: PBXWriterOptions): string;
|
|
285
|
+
allUuids(): string[];
|
|
286
|
+
generateUuid(): string;
|
|
287
|
+
|
|
288
|
+
addPluginFile(path: string, opt?: PBXFileOptions): void;
|
|
289
|
+
removePluginFile(path: string, opt?: PBXFileOptions): void;
|
|
290
|
+
|
|
291
|
+
addProductFile(targetPath: string, opt?: PBXFileOptions): void;
|
|
292
|
+
removeProductFile(path: string, opt?: PBXFileOptions): void;
|
|
293
|
+
|
|
294
|
+
addSourceFile(path: string, opt?: PBXFileOptions, group?: string): void;
|
|
295
|
+
removeSourceFile(path: string, opt?: PBXFileOptions, group?: string): void;
|
|
296
|
+
|
|
297
|
+
addHeaderFile(path: string, opt?: PBXFileOptions, group?: string): void;
|
|
298
|
+
removeHeaderFile(path: string, opt?: PBXFileOptions, group?: string): void;
|
|
299
|
+
|
|
300
|
+
addResourceFile(path: string, opt?: PBXFileOptions, group?: string): void;
|
|
301
|
+
removeResourceFile(
|
|
302
|
+
path: string,
|
|
303
|
+
opt?: PBXFileOptions,
|
|
304
|
+
group?: string,
|
|
305
|
+
): void;
|
|
306
|
+
|
|
307
|
+
addFramework(fpath: string, opt?: PBXFileOptions): void;
|
|
308
|
+
removeFramework(fpath: string, opt?: PBXFileOptions): void;
|
|
309
|
+
|
|
310
|
+
addCopyfile(fpath: string, opt?: PBXFileOptions): void;
|
|
311
|
+
removeCopyfile(fpath: string, opt?: PBXFileOptions): void;
|
|
312
|
+
|
|
313
|
+
pbxCopyfilesBuildPhaseObj(target: string): PBXObjects;
|
|
314
|
+
addToPbxCopyfilesBuildPhase(file: PBXObjects): void;
|
|
315
|
+
removeFromPbxCopyfilesBuildPhase(file: PBXObjects): void;
|
|
316
|
+
|
|
317
|
+
addStaticLibrary(
|
|
318
|
+
path: string,
|
|
319
|
+
opt: {
|
|
320
|
+
plugin?: boolean;
|
|
321
|
+
target?: string;
|
|
322
|
+
},
|
|
323
|
+
): void;
|
|
324
|
+
|
|
325
|
+
addToPbxBuildFileSection(file: PBXFile): void;
|
|
326
|
+
removeFromPbxBuildFileSection(file: PBXFile): void;
|
|
327
|
+
|
|
328
|
+
addPbxGroup(
|
|
329
|
+
filePathsArray: string[],
|
|
330
|
+
name: string,
|
|
331
|
+
path: string,
|
|
332
|
+
sourceTree: string,
|
|
333
|
+
): void;
|
|
334
|
+
removePbxGroup(name: string): void;
|
|
335
|
+
|
|
336
|
+
addToPbxProjectSection(target: PBXNativeTarget): void;
|
|
337
|
+
addToPbxNativeTargetSection(target: PBXNativeTarget): void;
|
|
338
|
+
addToPbxFileReferenceSection(file: PBXFile): void;
|
|
339
|
+
|
|
340
|
+
removeFromPbxFileReferenceSection(file: PBXFile): void;
|
|
341
|
+
|
|
342
|
+
addToXcVersionGroupSection(file: PBXFile): void;
|
|
343
|
+
|
|
344
|
+
addToPluginsPbxGroup(file: PBXFile): void;
|
|
345
|
+
removeFromPluginsPbxGroup(file: PBXFile): void;
|
|
346
|
+
|
|
347
|
+
addToResourcesPbxGroup(file: PBXFile): void;
|
|
348
|
+
removeFromResourcesPbxGroup(file: PBXFile): void;
|
|
349
|
+
|
|
350
|
+
addToFrameworksPbxGroup(file: PBXFile): void;
|
|
351
|
+
removeFromFrameworksPbxGroup(file: PBXFile): void;
|
|
352
|
+
|
|
353
|
+
addToProductsPbxGroup(file: PBXFile): void;
|
|
354
|
+
removeFromProductsPbxGroup(file: PBXFile): void;
|
|
355
|
+
|
|
356
|
+
addToPbxSourcesBuildPhase(file: PBXFile): void;
|
|
357
|
+
removeFromPbxSourcesBuildPhase(file: PBXFile): void;
|
|
358
|
+
|
|
359
|
+
addToPbxResourcesBuildPhase(file: PBXFile): void;
|
|
360
|
+
removeFromPbxResourcesBuildPhase(file: PBXFile): void;
|
|
361
|
+
|
|
362
|
+
addToPbxFrameworksBuildPhase(file: PBXFile): void;
|
|
363
|
+
removeFromPbxFrameworksBuildPhase(file: PBXFile): void;
|
|
364
|
+
|
|
365
|
+
addXCConfigurationList(
|
|
366
|
+
configurationObjectsArray: string[],
|
|
367
|
+
defaultConfigurationName: string,
|
|
368
|
+
comment: string,
|
|
369
|
+
): void;
|
|
370
|
+
|
|
371
|
+
addTargetDependency(target: string, dependencyTargets: string[]): void;
|
|
372
|
+
|
|
373
|
+
addBuildPhase(
|
|
374
|
+
filePathsArray: string[],
|
|
375
|
+
buildPhaseType: 'PBXShellScriptBuildPhase',
|
|
376
|
+
comment: string,
|
|
377
|
+
target: string,
|
|
378
|
+
optionsOrFolderType:
|
|
379
|
+
| {
|
|
380
|
+
inputPaths: string[];
|
|
381
|
+
outputPaths?: string[];
|
|
382
|
+
inputFileListPaths: string[];
|
|
383
|
+
outputFileListPaths: string[];
|
|
384
|
+
shellPath: string;
|
|
385
|
+
shellScript: string;
|
|
386
|
+
}
|
|
387
|
+
| string,
|
|
388
|
+
subfolderPath?: string,
|
|
389
|
+
): void;
|
|
390
|
+
|
|
391
|
+
pbxProjectSection(): PBXObjects;
|
|
392
|
+
pbxBuildFileSection(): PBXObjects;
|
|
393
|
+
pbxXCBuildConfigurationSection(): PBXObjects;
|
|
394
|
+
pbxFileReferenceSection(): PBXObjects;
|
|
395
|
+
pbxNativeTargetSection(): PBXObjects;
|
|
396
|
+
xcVersionGroupSection(): PBXObjects;
|
|
397
|
+
|
|
398
|
+
pbxXCConfigurationList(): PBXObjects;
|
|
399
|
+
pbxGroupByName(name: string): PBXObjects;
|
|
400
|
+
pbxTargetByName(name: string): PBXObjects;
|
|
401
|
+
findTargetKey(name: string): string;
|
|
402
|
+
|
|
403
|
+
pbxItemByComment(name: string, pbxSectionName: string): PBXObjects;
|
|
404
|
+
pbxSourcesBuildPhaseObj(target: string): PBXObjects;
|
|
405
|
+
pbxResourcesBuildPhaseObj(target: string): PBXObjects;
|
|
406
|
+
pbxFrameworksBuildPhaseObj(target: string): PBXObjects;
|
|
407
|
+
pbxEmbedFrameworksBuildPhaseObj(target: string): PBXObjects;
|
|
408
|
+
|
|
409
|
+
buildPhase(group: string, target: string): PBXObjects;
|
|
410
|
+
buildPhaseObject(name: string, group: string, target: string): PBXObjects;
|
|
411
|
+
|
|
412
|
+
addBuildProperty(prop: string, value: string, build_name: string): void;
|
|
413
|
+
removeBuildProperty(prop: string, build_name: string): void;
|
|
414
|
+
|
|
415
|
+
updateBuildProperty(
|
|
416
|
+
prop: string,
|
|
417
|
+
value: string,
|
|
418
|
+
build: string,
|
|
419
|
+
targetName: string,
|
|
420
|
+
): void;
|
|
421
|
+
|
|
422
|
+
updateProductName(name: string): void;
|
|
423
|
+
removeFromFrameworkSearchPaths(file: string): void;
|
|
424
|
+
|
|
425
|
+
addToFrameworkSearchPaths(file: string): void;
|
|
426
|
+
removeFromLibrarySearchPaths(file: string): void;
|
|
427
|
+
|
|
428
|
+
addToLibrarySearchPaths(file: string): void;
|
|
429
|
+
removeFromHeaderSearchPaths(file: string): void;
|
|
430
|
+
|
|
431
|
+
addToHeaderSearchPaths(file: string): void;
|
|
432
|
+
addToOtherLinkerFlags(flag: string): void;
|
|
433
|
+
removeFromOtherLinkerFlags(flag: string): void;
|
|
434
|
+
|
|
435
|
+
addToBuildSettings(buildSetting: string, value: string): void;
|
|
436
|
+
removeFromBuildSettings(buildSetting: string): void;
|
|
437
|
+
|
|
438
|
+
readonly productName: string;
|
|
439
|
+
|
|
440
|
+
hasFile(filePath: string): boolean;
|
|
441
|
+
|
|
442
|
+
addTarget(
|
|
443
|
+
name: string,
|
|
444
|
+
type: string,
|
|
445
|
+
subfolder: string,
|
|
446
|
+
bundleId: string,
|
|
447
|
+
): void;
|
|
448
|
+
|
|
449
|
+
getFirstProject(): {
|
|
450
|
+
uuid: string;
|
|
451
|
+
firstProject: PBXObjects;
|
|
452
|
+
};
|
|
453
|
+
getFirstTarget(): {
|
|
454
|
+
uuid: string;
|
|
455
|
+
firstTarget: PBXObjects;
|
|
456
|
+
} | null;
|
|
457
|
+
getTarget(productType: string): {
|
|
458
|
+
uuid: string;
|
|
459
|
+
target: PBXObjects;
|
|
460
|
+
} | null;
|
|
461
|
+
|
|
462
|
+
addToPbxGroupType(file: string, groupKey: string, groupType: string): void;
|
|
463
|
+
addToPbxVariantGroup(file: string, groupKey: string): void;
|
|
464
|
+
addToPbxGroup(file: string, groupKey: string): void;
|
|
465
|
+
|
|
466
|
+
pbxCreateGroupWithType(
|
|
467
|
+
name: string,
|
|
468
|
+
pathName: string,
|
|
469
|
+
groupType: string,
|
|
470
|
+
): void;
|
|
471
|
+
pbxCreateVariantGroup(name: string): void;
|
|
472
|
+
pbxCreateGroup(name: string, pathName: string): void;
|
|
473
|
+
|
|
474
|
+
removeFromPbxGroupAndType(
|
|
475
|
+
file: string,
|
|
476
|
+
groupKey: string,
|
|
477
|
+
groupType: string,
|
|
478
|
+
): void;
|
|
479
|
+
removeFromPbxGroup(file: string, groupKey: string): void;
|
|
480
|
+
removeFromPbxVariantGroup(file: string, groupKey: string): void;
|
|
481
|
+
|
|
482
|
+
getPBXGroupByKeyAndType(key: string, groupType: string): PBXObjects;
|
|
483
|
+
getPBXGroupByKey(key: string): PBXObjects;
|
|
484
|
+
getPBXVariantGroupByKey(key: string): PBXObjects;
|
|
485
|
+
|
|
486
|
+
findPBXGroupKeyAndType(
|
|
487
|
+
criteria: {
|
|
488
|
+
path?: string;
|
|
489
|
+
},
|
|
490
|
+
groupType: string,
|
|
491
|
+
): string;
|
|
492
|
+
|
|
493
|
+
findPBXGroupKey(criteria: { path?: string }): string;
|
|
494
|
+
|
|
495
|
+
findPBXVariantGroupKey(criteria: { path?: string }): string;
|
|
496
|
+
|
|
497
|
+
addLocalizationVariantGroup(name: string): void;
|
|
498
|
+
|
|
499
|
+
addKnownRegion(name: string): void;
|
|
500
|
+
removeKnownRegion(name: string): void;
|
|
501
|
+
|
|
502
|
+
hasKnownRegion(name: string): boolean;
|
|
503
|
+
|
|
504
|
+
getPBXObject(name: string): PBXObjects;
|
|
505
|
+
|
|
506
|
+
addFile(path: string, group: string, opt?: PBXFileOptions): void;
|
|
507
|
+
removeFile(path: string, group: string, opt?: PBXFileOptions): void;
|
|
508
|
+
|
|
509
|
+
getBuildProperty(prop: string, build: string, targetName: string): string;
|
|
510
|
+
getBuildConfigByName(name: string): PBXObjects;
|
|
511
|
+
|
|
512
|
+
addDataModelDocument(
|
|
513
|
+
filePath: string,
|
|
514
|
+
group: string,
|
|
515
|
+
opt?: PBXFileOptions,
|
|
516
|
+
): void;
|
|
517
|
+
addTargetAttribute(prop: string, value: string, target: string): void;
|
|
518
|
+
removeTargetAttribute(prop: string, target: string): void;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
export const project: (filename: string) => Project;
|
|
522
|
+
|
|
523
|
+
export default {
|
|
524
|
+
project: project,
|
|
525
|
+
};
|
|
526
|
+
}
|