Skip to content

Commit df24cb9

Browse files
authored
fix(cli): pbxproj parser not expecting underlines in build config IDs (#11168)
1 parent de7414a commit df24cb9

File tree

6 files changed

+24
-14
lines changed

6 files changed

+24
-14
lines changed

.changes/fix-pbxproj-id-parse.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"tauri-cli": patch:bug
3+
"@tauri-apps/cli": patch:bug
4+
---
5+
6+
Fixes Xcode pbxproj file parsing not expecting `_` in build configuration IDs.

crates/tauri-cli/src/helpers/pbxproj.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub fn parse<P: AsRef<Path>>(path: P) -> crate::Result<Pbxproj> {
3939
if line == "/* End XCBuildConfiguration section */" {
4040
state = State::Idle;
4141
} else if let Some((_identation, token)) = split_at_identation(line) {
42-
let id: String = token.chars().take_while(|c| c.is_alphanumeric()).collect();
42+
let id: String = token.chars().take_while(|c| !c.is_whitespace()).collect();
4343
proj.xc_build_configuration.insert(
4444
id.clone(),
4545
XCBuildConfiguration {
@@ -316,8 +316,12 @@ mod tests {
316316
let mut pbxproj =
317317
super::parse(fixtures_path.join("project.pbxproj")).expect("failed to parse pbxproj");
318318

319-
pbxproj.set_build_settings("DB0E254D0FD84970B57F6410", "PRODUCT_NAME", "\"Tauri Test\"");
320-
pbxproj.set_build_settings("DB0E254D0FD84970B57F6410", "UNKNOWN", "9283j49238h");
319+
pbxproj.set_build_settings(
320+
"DB_0E254D0FD84970B57F6410",
321+
"PRODUCT_NAME",
322+
"\"Tauri Test\"",
323+
);
324+
pbxproj.set_build_settings("DB_0E254D0FD84970B57F6410", "UNKNOWN", "9283j49238h");
321325

322326
insta::assert_snapshot!("project-modified.pbxproj", pbxproj.serialize());
323327
}

crates/tauri-cli/src/mobile/ios/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ pub fn synchronize_project_config(
425425
config: &AppleConfig,
426426
tauri_config: &ConfigHandle,
427427
pbxproj: &mut pbxproj::Pbxproj,
428-
export_options_list: &mut plist::Dictionary,
428+
export_options_plist: &mut plist::Dictionary,
429429
project_config: &ProjectConfig,
430430
debug: bool,
431431
) -> Result<()> {
@@ -522,7 +522,7 @@ pub fn synchronize_project_config(
522522

523523
if let Some(build_configuration) = build_configuration {
524524
if let Some(style) = build_configuration.get_build_setting("CODE_SIGN_STYLE") {
525-
export_options_list.insert(
525+
export_options_plist.insert(
526526
"signingStyle".to_string(),
527527
style.value.to_lowercase().into(),
528528
);
@@ -532,7 +532,7 @@ pub fn synchronize_project_config(
532532
.get_build_setting("\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\"")
533533
.or_else(|| build_configuration.get_build_setting("CODE_SIGN_IDENTITY"))
534534
{
535-
export_options_list.insert(
535+
export_options_plist.insert(
536536
"signingCertificate".to_string(),
537537
identity.value.trim_matches('"').into(),
538538
);
@@ -542,7 +542,7 @@ pub fn synchronize_project_config(
542542
.get_build_setting("\"DEVELOPMENT_TEAM[sdk=iphoneos*]\"")
543543
.or_else(|| build_configuration.get_build_setting("DEVELOPMENT_TEAM"))
544544
{
545-
export_options_list.insert("teamID".to_string(), id.value.trim_matches('"').into());
545+
export_options_plist.insert("teamID".to_string(), id.value.trim_matches('"').into());
546546
}
547547

548548
let profile_uuid = project_config
@@ -557,7 +557,7 @@ pub fn synchronize_project_config(
557557
if let Some(profile_uuid) = profile_uuid {
558558
let mut provisioning_profiles = plist::Dictionary::new();
559559
provisioning_profiles.insert(config.app().identifier().to_string(), profile_uuid.into());
560-
export_options_list.insert(
560+
export_options_plist.insert(
561561
"provisioningProfiles".to_string(),
562562
provisioning_profiles.into(),
563563
);

crates/tauri-cli/tests/fixtures/pbxproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@
412412
};
413413
name = debug;
414414
};
415-
DB0E254D0FD84970B57F6410 /* release */ = {
415+
DB_0E254D0FD84970B57F6410 /* release */ = {
416416
isa = XCBuildConfiguration;
417417
buildSettings = {
418418
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
@@ -454,7 +454,7 @@
454454
isa = XCConfigurationList;
455455
buildConfigurations = (
456456
BF284FE6E7AE0C8DDCCE398B /* debug */,
457-
DB0E254D0FD84970B57F6410 /* release */,
457+
DB_0E254D0FD84970B57F6410 /* release */,
458458
);
459459
defaultConfigurationIsVisible = 0;
460460
defaultConfigurationName = debug;

crates/tauri-cli/tests/fixtures/pbxproj/snapshots/tauri_cli__helpers__pbxproj__tests__project-modified.pbxproj.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ expression: pbxproj.serialize()
416416
};
417417
name = debug;
418418
};
419-
DB0E254D0FD84970B57F6410 /* release */ = {
419+
DB_0E254D0FD84970B57F6410 /* release */ = {
420420
isa = XCBuildConfiguration;
421421
buildSettings = {
422422
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
@@ -459,7 +459,7 @@ expression: pbxproj.serialize()
459459
isa = XCConfigurationList;
460460
buildConfigurations = (
461461
BF284FE6E7AE0C8DDCCE398B /* debug */,
462-
DB0E254D0FD84970B57F6410 /* release */,
462+
DB_0E254D0FD84970B57F6410 /* release */,
463463
);
464464
defaultConfigurationIsVisible = 0;
465465
defaultConfigurationName = debug;

crates/tauri-cli/tests/fixtures/pbxproj/snapshots/tauri_cli__helpers__pbxproj__tests__project.pbxproj.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,7 @@ Pbxproj {
760760
},
761761
],
762762
},
763-
"DB0E254D0FD84970B57F6410": XCBuildConfiguration {
763+
"DB_0E254D0FD84970B57F6410": XCBuildConfiguration {
764764
build_settings: [
765765
BuildSettings {
766766
identation: "\t\t\t\t",
@@ -894,7 +894,7 @@ Pbxproj {
894894
comments: "/* debug */",
895895
},
896896
BuildConfigurationRef {
897-
id: "DB0E254D0FD84970B57F6410",
897+
id: "DB_0E254D0FD84970B57F6410",
898898
comments: "/* release */",
899899
},
900900
],

0 commit comments

Comments
 (0)