mirror of
https://github.com/rudrankriyam/App-Store-Connect-CLI.git
synced 2026-04-25 15:45:48 +03:00
[PR #767] [MERGED] Audit issues #759-#765 and implement high-value CLI changes #772
Labels
No labels
bug
bug
documentation
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/App-Store-Connect-CLI#772
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/767
Author: @rudrankriyam
Created: 2/25/2026
Status: ✅ Merged
Merged: 2/25/2026
Merged by: @rudrankriyam
Base:
main← Head:cursor/issues-759-765-audit-5401📝 Commits (2)
f79d463Implement and audit issues 759-765 CLI enhancements2ea528cfix live build/test-notes regressions in 759-765 audit branch📊 Changes
28 files changed (+2093 additions, -46 deletions)
View changed files
📝
internal/asc/client_builds.go(+9 -2)📝
internal/asc/client_http_test.go(+66 -0)📝
internal/asc/client_options.go(+20 -0)📝
internal/asc/client_publish.go(+2 -0)📝
internal/asc/client_publish_test.go(+31 -0)📝
internal/asc/client_queries.go(+2 -0)📝
internal/asc/client_test.go(+22 -0)📝
internal/asc/publish.go(+1 -0)📝
internal/cli/betabuildlocalizations/beta_build_localizations.go(+14 -4)📝
internal/cli/betabuildlocalizations/beta_build_localizations_test.go(+19 -1)📝
internal/cli/builds/build_test_notes.go(+12 -4)📝
internal/cli/builds/builds.go(+91 -7)📝
internal/cli/builds/builds_commands.go(+59 -0)📝
internal/cli/builds/builds_commands_test.go(+78 -0)➕
internal/cli/builds/builds_find.go(+70 -0)📝
internal/cli/builds/builds_group_resolver_test.go(+36 -0)➕
internal/cli/builds/builds_wait.go(+215 -0)➕
internal/cli/cmdtest/beta_build_localizations_upsert_test.go(+160 -0)➕
internal/cli/cmdtest/builds_add_groups_internal_test.go(+224 -0)➕
internal/cli/cmdtest/builds_find_test.go(+123 -0)...and 8 more files
📄 Description
Summary
This PR audits issues #759-#765 and implements all high-value items in one pass.
Issue-by-issue outcome
asc builds list --processing-state(VALID|PROCESSING|FAILED|INVALID|all) with API filter wiring.asc builds waitsubcommand (wait by--buildor--app+--build-number, timeout/poll/terminal states).asc builds add-groups --skip-internal, improved actionable internal-group errors, safe no-op when only internal groups are provided.not plannedwith owner rationale.asc beta-build-localizations create --upsertusing existing shared upsert logic.asc builds find --app --build-number [--platform].asc publish testflightsupports existing-build flows via--build/--build-number(skip upload), with mode validation and preserved wait/test-notes/group/notify flow.Design/architecture notes
builds,publish,beta-build-localizations).filter[processingState],filter[preReleaseVersion.platform]).publish testflight.2semantics.Testing
Local automated
ASC_BYPASS_KEYCHAIN=1 go test ./internal/asc -run 'TestBuildBuildsQuery_WithProcessingStates|TestGetBuilds_WithProcessingStateFilter|TestBuildBuildsQuery_WithPreReleasePlatforms|TestGetBuilds_WithPreReleasePlatforms'ASC_BYPASS_KEYCHAIN=1 go test ./internal/cli/builds -run 'TestBuildsListCommand_ProcessingStateFlagDescription|TestNormalizeBuildProcessingStateFilter|TestResolveBuildBetaGroupsFromListIncludesInternalMetadata'ASC_BYPASS_KEYCHAIN=1 go test ./internal/cli/betabuildlocalizations -run 'TestBetaBuildLocalizationsCommandConstructors|TestBetaBuildLocalizationsCreateCommandUpsertFlag'ASC_BYPASS_KEYCHAIN=1 go test ./internal/cli/publish -run 'TestValidateIPAPathRejectsSymlink|TestValidateIPAPathAllowsRegularFile'ASC_BYPASS_KEYCHAIN=1 go test ./internal/cli/cmdtest -run 'TestBuildsListProcessingStateFilterUsesTopLevelBuildsEndpoint|TestBuildsListProcessingStateAllExpandsToAllStates|TestBuildsListProcessingStateInvalidValueReturnsUsageError|TestBuildsWaitByBuildIDPollsUntilValid|TestBuildsWaitByAppAndBuildNumberResolvesThenWaits|TestBuildsWaitFailOnInvalidReturnsError|TestBuildsAddGroupsInternalGroupReturnsActionableError|TestBuildsAddGroupsSkipInternalAddsOnlyExternalGroups|TestBuildsAddGroupsSkipInternalWithOnlyInternalGroupsIsNoOp|TestBetaBuildLocalizationsCreateUpsertUpdatesExistingLocale|TestBetaBuildLocalizationsCreateUpsertCreatesWhenLocaleMissing|TestBuildsFindByBuildNumberSuccess|TestBuildsFindByBuildNumberNotFound|TestPublishTestflightExistingBuildIDSkipsUpload|TestPublishTestflightExistingBuildNumberResolvesAndWaits|TestPublishValidationErrors|TestBuildsWaitValidationErrors|TestBuildsFindValidationErrors|TestRun_UsageValidationErrorsReturnExitUsage'PATH="$(go env GOPATH)/bin:$PATH" make formatPATH="$(go env GOPATH)/bin:$PATH" make lint(falls back togo vetifgolangci-lintis unavailable)PATH="$(go env GOPATH)/bin:$PATH" ASC_BYPASS_KEYCHAIN=1 make testBuilt-binary exit behavior
go build -o /tmp/asc ./tmp/asc builds list --app APP_123 --processing-state WRONG(exit code 2)/tmp/asc builds wait(exit code 2)/tmp/asc publish testflight --app APP_123 --group GROUP_ID(exit code 2)Live smoke tests with ASC credentials
Read-only / low-risk live checks were run for new flows:
builds list --processing-state all|PROCESSINGbuilds findbuilds waitbuilds add-groupsinternal-group hint +--skip-internalno-oppublish testflight --buildand--build-numberwith API debug logs verifying upload endpoints are skippedAlternatives considered
shared/findBuildByNumberfromshared/build_wait.godirectly forbuilds find/publish --build-number./v1/buildsserver-side filters with platform + processing-state, reducing API round-trips and ambiguity.Expected invocation examples
asc builds list --app "$ASC_APP_ID" --processing-state allasc builds wait --app "$ASC_APP_ID" --build-number "312" --platform IOSasc builds add-groups --build BUILD_ID --group INTERNAL,EXTERNAL --skip-internalasc beta-build-localizations create --build BUILD_ID --locale en-US --whats-new "notes" --upsertasc builds find --app "$ASC_APP_ID" --build-number "312" --platform IOSasc publish testflight --app "$ASC_APP_ID" --build BUILD_ID --group GROUP_ID --waitasc publish testflight --app "$ASC_APP_ID" --build-number 312 --group GROUP_ID --waitCloses #759
Closes #760
Closes #761
Closes #763
Closes #764
Closes #765
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.