[PR #131] [CLOSED] Add metadata management and fastlane compatibility features #313

Closed
opened 2026-02-26 21:34:32 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/131
Author: @cameronehrlich
Created: 1/24/2026
Status: Closed

Base: mainHead: main


📝 Commits (10+)

  • 29cc5e1 Add assets upload support
  • cc9eb1e Fix race in asset upload test
  • 834a5aa Add IAP and subscriptions management
  • 3174d90 docs: Add ASO enhancement specification
  • 256bb20 Merge upstream assets management branch
  • 33d66e9 Merge upstream IAP and subscriptions branch
  • 12d6a13 Merge upstream pricing and availability branch
  • 5ddd534 feat: Add versions create and delete commands
  • 12fd45e feat: Add categories list command
  • d72eaec feat: Add fastlane migrate import/export commands

📊 Changes

37 files changed (+9672 additions, -10 deletions)

View changed files

📝 README.md (+62 -0)
cmd/assets.go (+784 -0)
cmd/categories.go (+153 -0)
📝 cmd/commands_test.go (+318 -0)
cmd/iap.go (+454 -0)
cmd/migrate.go (+761 -0)
cmd/migrate_output.go (+212 -0)
cmd/migrate_test.go (+406 -0)
📝 cmd/root.go (+5 -0)
cmd/subscriptions.go (+804 -0)
📝 cmd/versions.go (+207 -0)
📝 cmd/xcode_cloud.go (+83 -0)
docs/ASO-ENHANCEMENT-SPEC.md (+929 -0)
docs/SKILL.md (+336 -0)
internal/asc/assets.go (+115 -0)
internal/asc/assets_output.go (+387 -0)
internal/asc/assets_upload.go (+134 -0)
internal/asc/assets_upload_test.go (+96 -0)
internal/asc/categories.go (+144 -0)
internal/asc/categories_output.go (+35 -0)

...and 17 more files

📄 Description

Summary

This PR adds metadata management and fastlane compatibility features to the CLI.

Features Added

1. Fastlane Migration (asc migrate)

Enables workflows for users migrating from or integrating with Fastlane:

# Validate metadata character limits before upload
asc migrate validate --fastlane-dir ./metadata

# Import metadata from fastlane directory to App Store Connect
asc migrate import --app APP_ID --fastlane-dir ./metadata

# Export metadata from App Store Connect to fastlane format
asc migrate export --app APP_ID --output ./exported-metadata

Validates App Store Connect character limits:

Field Limit
Description 4000 chars
Keywords 100 chars
What's New 4000 chars
Promotional Text 170 chars
Name 30 chars
Subtitle 30 chars

2. Categories Management (asc categories)

# List all App Store categories
asc categories list --output table

# Set primary/secondary categories for an app
asc categories set --app APP_ID --primary GAMES --secondary ENTERTAINMENT

3. Version CRUD (asc versions)

Complete version lifecycle management:

# Create a new app store version
asc versions create --app APP_ID --version 1.2.0 --platform IOS

# Update version attributes
asc versions update --version VERSION_ID --copyright "© 2026 Acme" --release-type MANUAL

# Delete a version (PREPARE_FOR_SUBMISSION only)
asc versions delete --version VERSION_ID

Production Testing

Tested against a production app (Stitch It, App ID 554594252):

Metadata Validation

$ asc migrate validate --fastlane-dir ./metadata
✓ Validation passed: 0 errors, 0 warnings

en-US:
  keywords: 97/100 chars ✓
  description: 876/4000 chars ✓
  promotional_text: 155/170 chars ✓

Version Creation + Metadata Upload

$ asc versions create --app 554594252 --version 3.0.3 --platform IOS
Created App Store version:
  ID: 431ba67a-393f-4a8d-9c4a-1dbe139324dd
  Version: 3.0.3
  State: PREPARE_FOR_SUBMISSION

$ asc localizations upload --version 431ba67a-... --path ./en-US.strings
Updated 1 app store version localization(s)
Updated 1 app info localization(s)

Categories List

$ asc categories list --output table | head -5
ID                    PLATFORMS
GAMES                 IOS, MAC_OS, TV_OS
ENTERTAINMENT         IOS, MAC_OS, TV_OS
PHOTO_AND_VIDEO       IOS, MAC_OS

Test Coverage

  • 15+ unit tests for validation logic (cmd/migrate_test.go)
  • HTTP mock tests for API interactions (internal/asc/client_http_test.go)
  • All existing tests pass

Files Changed

File Purpose
cmd/migrate.go Fastlane import/export/validate commands
cmd/migrate_output.go Validation result formatting
cmd/migrate_test.go Validation tests
cmd/categories.go Categories list + set commands
cmd/versions.go Version create/update/delete
internal/asc/categories.go Categories API client
internal/asc/client_versions.go Version API extensions

Use Cases

  1. CI/CD pipelines - Validate metadata before upload, catch errors early
  2. Fastlane migration - Import existing fastlane metadata to ASC workflow
  3. Bulk operations - Create versions and upload metadata programmatically
  4. Category management - Set app categories without App Store Connect UI

Breaking Changes

None. All features are additive.


🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/131 **Author:** [@cameronehrlich](https://github.com/cameronehrlich) **Created:** 1/24/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (10+) - [`29cc5e1`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/29cc5e107c932fef68531b7c833c171b179b3bbe) Add assets upload support - [`cc9eb1e`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/cc9eb1e2804993dbc55ed5895532b29f79fedaf3) Fix race in asset upload test - [`834a5aa`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/834a5aa43137b7d9e16fdc40d27a45089791daf7) Add IAP and subscriptions management - [`3174d90`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/3174d9088131271807093b75e5304f9b82f78287) docs: Add ASO enhancement specification - [`256bb20`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/256bb204d1d9e2f04b696fb7c22162f9e91a7441) Merge upstream assets management branch - [`33d66e9`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/33d66e97c61f5bf843b8629d51f969fb08f64a8f) Merge upstream IAP and subscriptions branch - [`12d6a13`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/12d6a13aa2623ba0b8636dc7dda16e6bceabeea9) Merge upstream pricing and availability branch - [`5ddd534`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/5ddd5345edecb59eab7e0a428a08d44099163323) feat: Add versions create and delete commands - [`12fd45e`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/12fd45e51e6756a74348199e9ec9049f6879ff41) feat: Add categories list command - [`d72eaec`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/d72eaeca5e83289b71f9a9798644663439d55b6b) feat: Add fastlane migrate import/export commands ### 📊 Changes **37 files changed** (+9672 additions, -10 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+62 -0) ➕ `cmd/assets.go` (+784 -0) ➕ `cmd/categories.go` (+153 -0) 📝 `cmd/commands_test.go` (+318 -0) ➕ `cmd/iap.go` (+454 -0) ➕ `cmd/migrate.go` (+761 -0) ➕ `cmd/migrate_output.go` (+212 -0) ➕ `cmd/migrate_test.go` (+406 -0) 📝 `cmd/root.go` (+5 -0) ➕ `cmd/subscriptions.go` (+804 -0) 📝 `cmd/versions.go` (+207 -0) 📝 `cmd/xcode_cloud.go` (+83 -0) ➕ `docs/ASO-ENHANCEMENT-SPEC.md` (+929 -0) ➕ `docs/SKILL.md` (+336 -0) ➕ `internal/asc/assets.go` (+115 -0) ➕ `internal/asc/assets_output.go` (+387 -0) ➕ `internal/asc/assets_upload.go` (+134 -0) ➕ `internal/asc/assets_upload_test.go` (+96 -0) ➕ `internal/asc/categories.go` (+144 -0) ➕ `internal/asc/categories_output.go` (+35 -0) _...and 17 more files_ </details> ### 📄 Description ## Summary This PR adds **metadata management and fastlane compatibility** features to the CLI. ### Features Added #### 1. Fastlane Migration (`asc migrate`) Enables workflows for users migrating from or integrating with Fastlane: ```bash # Validate metadata character limits before upload asc migrate validate --fastlane-dir ./metadata # Import metadata from fastlane directory to App Store Connect asc migrate import --app APP_ID --fastlane-dir ./metadata # Export metadata from App Store Connect to fastlane format asc migrate export --app APP_ID --output ./exported-metadata ``` **Validates App Store Connect character limits:** | Field | Limit | |-------|-------| | Description | 4000 chars | | Keywords | 100 chars | | What's New | 4000 chars | | Promotional Text | 170 chars | | Name | 30 chars | | Subtitle | 30 chars | #### 2. Categories Management (`asc categories`) ```bash # List all App Store categories asc categories list --output table # Set primary/secondary categories for an app asc categories set --app APP_ID --primary GAMES --secondary ENTERTAINMENT ``` #### 3. Version CRUD (`asc versions`) Complete version lifecycle management: ```bash # Create a new app store version asc versions create --app APP_ID --version 1.2.0 --platform IOS # Update version attributes asc versions update --version VERSION_ID --copyright "© 2026 Acme" --release-type MANUAL # Delete a version (PREPARE_FOR_SUBMISSION only) asc versions delete --version VERSION_ID ``` --- ## Production Testing ✅ Tested against a production app (Stitch It, App ID 554594252): ### Metadata Validation ``` $ asc migrate validate --fastlane-dir ./metadata ✓ Validation passed: 0 errors, 0 warnings en-US: keywords: 97/100 chars ✓ description: 876/4000 chars ✓ promotional_text: 155/170 chars ✓ ``` ### Version Creation + Metadata Upload ``` $ asc versions create --app 554594252 --version 3.0.3 --platform IOS Created App Store version: ID: 431ba67a-393f-4a8d-9c4a-1dbe139324dd Version: 3.0.3 State: PREPARE_FOR_SUBMISSION $ asc localizations upload --version 431ba67a-... --path ./en-US.strings Updated 1 app store version localization(s) Updated 1 app info localization(s) ``` ### Categories List ``` $ asc categories list --output table | head -5 ID PLATFORMS GAMES IOS, MAC_OS, TV_OS ENTERTAINMENT IOS, MAC_OS, TV_OS PHOTO_AND_VIDEO IOS, MAC_OS ``` --- ## Test Coverage - **15+ unit tests** for validation logic (`cmd/migrate_test.go`) - **HTTP mock tests** for API interactions (`internal/asc/client_http_test.go`) - All existing tests pass --- ## Files Changed | File | Purpose | |------|---------| | `cmd/migrate.go` | Fastlane import/export/validate commands | | `cmd/migrate_output.go` | Validation result formatting | | `cmd/migrate_test.go` | Validation tests | | `cmd/categories.go` | Categories list + set commands | | `cmd/versions.go` | Version create/update/delete | | `internal/asc/categories.go` | Categories API client | | `internal/asc/client_versions.go` | Version API extensions | --- ## Use Cases 1. **CI/CD pipelines** - Validate metadata before upload, catch errors early 2. **Fastlane migration** - Import existing fastlane metadata to ASC workflow 3. **Bulk operations** - Create versions and upload metadata programmatically 4. **Category management** - Set app categories without App Store Connect UI --- ## Breaking Changes None. All features are additive. --- 🤖 Generated with [Claude Code](https://claude.ai/code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-26 21:34:32 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/App-Store-Connect-CLI#313
No description provided.