iOS 빌드에서 incrementVersion이 한자리 버전일경우 이슈 발생 수정
This commit is contained in:
parent
255be8c407
commit
baf5c877fc
1 changed files with 59 additions and 33 deletions
|
|
@ -33,7 +33,10 @@ class BuildiOS extends Command {
|
|||
await getMainXcodeprojPath(data.xcworkspaceFilePath!);
|
||||
|
||||
/************ Auto find build number ************/
|
||||
var autoBuildNumber = (data.autoBuildNumber ?? false) ? !((version != null && version.isNotEmpty) || (buildNumber != null && buildNumber.isNotEmpty)) : false;
|
||||
var autoBuildNumber = (data.autoBuildNumber ?? false)
|
||||
? !((version != null && version.isNotEmpty) ||
|
||||
(buildNumber != null && buildNumber.isNotEmpty))
|
||||
: false;
|
||||
if (autoBuildNumber) {
|
||||
var appID = await getAppIdentifier(
|
||||
data.workspace, xcodeproj, data.scheme, data.setAppID);
|
||||
|
|
@ -44,7 +47,8 @@ class BuildiOS extends Command {
|
|||
throw Exception(
|
||||
'If autoVersionNumber = true then must set apiKeyPath.');
|
||||
}
|
||||
var fastFile = await initializeFastlane(data.workspace!, data.apiKeyPath!, appID);
|
||||
var fastFile =
|
||||
await initializeFastlane(data.workspace!, data.apiKeyPath!, appID);
|
||||
var fastlaneContent = fastFile.readAsStringSync();
|
||||
|
||||
//Find PREPARE_FOR_SUBMISSION state Version
|
||||
|
|
@ -55,7 +59,14 @@ class BuildiOS extends Command {
|
|||
var process = await ProcessExecutor.run(shell);
|
||||
var arr = process.stdout.toString().split('\n');
|
||||
const result = '[RESULT]: ';
|
||||
var needIncrementVersionState = ['WAITING_FOR_REVIEW', 'WAITING_FOR_REVIEW', 'IN_REVIEW', 'PENDING_DEVELOPER_RELEASE', 'PENDING_APPLE_RELEASE', 'REPLACED_WITH_NEW_VERSION'];
|
||||
var needIncrementVersionState = [
|
||||
'WAITING_FOR_REVIEW',
|
||||
'WAITING_FOR_REVIEW',
|
||||
'IN_REVIEW',
|
||||
'PENDING_DEVELOPER_RELEASE',
|
||||
'PENDING_APPLE_RELEASE',
|
||||
'REPLACED_WITH_NEW_VERSION'
|
||||
];
|
||||
List<dynamic> jsonArr;
|
||||
String? readyForSaleVersion = null;
|
||||
for (var item in arr) {
|
||||
|
|
@ -79,11 +90,11 @@ class BuildiOS extends Command {
|
|||
}
|
||||
}
|
||||
if (targetVersion == null) {
|
||||
if(readyForSaleVersion != null) {
|
||||
if (readyForSaleVersion != null) {
|
||||
targetVersion = incrementVersion(readyForSaleVersion);
|
||||
} else {
|
||||
throw Exception(
|
||||
'Can not find target version when state = PREPARE_FOR_SUBMISSION, PENDING_DEVELOPER_RELEASE');
|
||||
'Can not find target version when state = PREPARE_FOR_SUBMISSION, PENDING_DEVELOPER_RELEASE');
|
||||
}
|
||||
}
|
||||
version = targetVersion;
|
||||
|
|
@ -102,14 +113,17 @@ class BuildiOS extends Command {
|
|||
if (item.contains(result)) {
|
||||
var json =
|
||||
jsonDecode(item.substring(item.indexOf(result) + result.length));
|
||||
targetBuildNumber = json['latest_build_number'];
|
||||
var key = 'latest_build_number';
|
||||
if (json is Map && json.containsKey(key)) {
|
||||
targetBuildNumber = json[key].toString();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (targetBuildNumber == null) {
|
||||
throw Exception('Can not find target build number.');
|
||||
}
|
||||
buildNumber = incrementVersion(targetBuildNumber);
|
||||
buildNumber = incrementVersion(targetBuildNumber, fixedLength: 4);
|
||||
}
|
||||
|
||||
String? target = data.target;
|
||||
|
|
@ -119,7 +133,8 @@ class BuildiOS extends Command {
|
|||
'${data.workspace}/$xcodeproj/project.pbxproj', version);
|
||||
} else {
|
||||
target = target ?? await getTargetXcodeproj(data.workspace!, xcodeproj!);
|
||||
version = await getSettingXcodeproj(data.workspace!, xcodeproj!, target!, 'MARKETING_VERSION');
|
||||
version = await getSettingXcodeproj(
|
||||
data.workspace!, xcodeproj!, target!, 'MARKETING_VERSION');
|
||||
}
|
||||
//buildNumber가 있을경우 세팅, 없을경우 기존 버전값을 메모리에 가지고 있음
|
||||
if (buildNumber != null && buildNumber.isNotEmpty) {
|
||||
|
|
@ -127,12 +142,18 @@ class BuildiOS extends Command {
|
|||
'${data.workspace}/$xcodeproj/project.pbxproj', buildNumber);
|
||||
} else {
|
||||
target = target ?? await getTargetXcodeproj(data.workspace!, xcodeproj!);
|
||||
buildNumber = await getSettingXcodeproj(data.workspace!, xcodeproj!, target!, 'CURRENT_PROJECT_VERSION');
|
||||
buildNumber = await getSettingXcodeproj(
|
||||
data.workspace!, xcodeproj!, target!, 'CURRENT_PROJECT_VERSION');
|
||||
}
|
||||
|
||||
var setVersion = data.setVersion != null && data.setVersion!.isNotEmpty ? data.setVersion! : '<@property.version>';
|
||||
var setVersion = data.setVersion != null && data.setVersion!.isNotEmpty
|
||||
? data.setVersion!
|
||||
: '<@property.version>';
|
||||
setProperty(setVersion, version);
|
||||
var setBuildNumber = data.setBuildNumber != null && data.setBuildNumber!.isNotEmpty ? data.setBuildNumber! : '<@property.buildNumber>';
|
||||
var setBuildNumber =
|
||||
data.setBuildNumber != null && data.setBuildNumber!.isNotEmpty
|
||||
? data.setBuildNumber!
|
||||
: '<@property.buildNumber>';
|
||||
setProperty(setBuildNumber, buildNumber);
|
||||
|
||||
var os = 'iOS';
|
||||
|
|
@ -206,25 +227,26 @@ class BuildiOS extends Command {
|
|||
}
|
||||
}
|
||||
|
||||
static Future<File> initializeFastlane(String workspace, String apiKeyPath, String appID) async {
|
||||
static Future<File> initializeFastlane(
|
||||
String workspace, String apiKeyPath, String appID) async {
|
||||
var json = jsonDecode(File(apiKeyPath).readAsStringSync());
|
||||
var fastlaneContent = fastlaneTemplete;
|
||||
fastlaneContent = fastlaneContent
|
||||
.replaceFirst('[APP_IDENTIFIER]', appID)
|
||||
.replaceFirst('[API_KEY_ID]', json['key_id'])
|
||||
.replaceFirst('[API_ISSUER_ID]', json['issuer_id'])
|
||||
.replaceFirst('[AUTH_KEY_CONTENT]',
|
||||
json['key'].toString().replaceAll('\n', '\\n'));
|
||||
var fastlaneContent = fastlaneTemplete;
|
||||
fastlaneContent = fastlaneContent
|
||||
.replaceFirst('[APP_IDENTIFIER]', appID)
|
||||
.replaceFirst('[API_KEY_ID]', json['key_id'])
|
||||
.replaceFirst('[API_ISSUER_ID]', json['issuer_id'])
|
||||
.replaceFirst('[AUTH_KEY_CONTENT]',
|
||||
json['key'].toString().replaceAll('\n', '\\n'));
|
||||
|
||||
var shell = StringBuffer();
|
||||
shell.write('cd $workspace');
|
||||
shell.write(' && rm -rf "$workspace/fastlane"');
|
||||
shell.write(' && yes | fastlane init');
|
||||
await ProcessExecutor.run(shell);
|
||||
var shell = StringBuffer();
|
||||
shell.write('cd $workspace');
|
||||
shell.write(' && rm -rf "$workspace/fastlane"');
|
||||
shell.write(' && yes | fastlane init');
|
||||
await ProcessExecutor.run(shell);
|
||||
|
||||
var fastFile = File('$workspace/fastlane/Fastfile');
|
||||
fastFile.writeAsStringSync(fastlaneContent, flush: true);
|
||||
return dataFutrue(fastFile);
|
||||
var fastFile = File('$workspace/fastlane/Fastfile');
|
||||
fastFile.writeAsStringSync(fastlaneContent, flush: true);
|
||||
return dataFutrue(fastFile);
|
||||
}
|
||||
|
||||
Future<String?> getAppIdentifier(String? workspace, String? xcodeproj,
|
||||
|
|
@ -337,16 +359,18 @@ class BuildiOS extends Command {
|
|||
await file.writeAsString(updatedLines.join('\n'));
|
||||
}
|
||||
|
||||
Future<String?> getSettingXcodeproj(String workspace, String xcodeproj, String target, String marker) async {
|
||||
Future<String?> getSettingXcodeproj(
|
||||
String workspace, String xcodeproj, String target, String marker) async {
|
||||
String? version;
|
||||
var shell = StringBuffer();
|
||||
shell.write('cd $workspace');
|
||||
shell.write(' && xcodebuild -project $xcodeproj -target $target -showBuildSettings | grep $marker');
|
||||
shell.write(
|
||||
' && xcodebuild -project $xcodeproj -target $target -showBuildSettings | grep $marker');
|
||||
|
||||
var mark = '$marker = ';
|
||||
var process = await ProcessExecutor.run(shell);
|
||||
var arr = process.stdout.toString().split('\n');
|
||||
for(var item in arr) {
|
||||
for (var item in arr) {
|
||||
if (item.contains(mark)) {
|
||||
version = item.replaceAll(mark, '').trim();
|
||||
break;
|
||||
|
|
@ -355,15 +379,17 @@ class BuildiOS extends Command {
|
|||
return dataFutrue(version);
|
||||
}
|
||||
|
||||
Future<String?> getTargetXcodeproj(String workspace, String xcoodeproj) async {
|
||||
Future<String?> getTargetXcodeproj(
|
||||
String workspace, String xcoodeproj) async {
|
||||
String? target;
|
||||
var shell = StringBuffer();
|
||||
shell.write('cd $workspace');
|
||||
shell.write(" && xcodebuild -project $xcoodeproj -list | awk '/Targets:/ {getline; print; exit}'");
|
||||
shell.write(
|
||||
" && xcodebuild -project $xcoodeproj -list | awk '/Targets:/ {getline; print; exit}'");
|
||||
|
||||
var process = await ProcessExecutor.run(shell);
|
||||
var arr = process.stdout.toString().split('\n');
|
||||
for(var item in arr) {
|
||||
for (var item in arr) {
|
||||
item = item.trim();
|
||||
if (item.isNotEmpty) {
|
||||
target = item.trim();
|
||||
|
|
|
|||
Loading…
Reference in a new issue