[PR #137] [CLOSED] Add fastlane migration commands for metadata validation and import/export #318

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

📋 Pull Request Information

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

Base: mainHead: feature/migrate


📝 Commits (1)

  • deaf34c Add fastlane migration commands for metadata validation and import/export

📊 Changes

5 files changed (+1405 additions, -0 deletions)

View changed files

📝 README.md (+25 -0)
cmd/migrate.go (+761 -0)
cmd/migrate_output.go (+212 -0)
cmd/migrate_test.go (+406 -0)
📝 cmd/root.go (+1 -0)

📄 Description

Summary

Adds asc migrate command with three subcommands for fastlane compatibility and offline metadata validation.

Commands Added

# Validate metadata against App Store Connect character limits (no API calls)
asc migrate validate --fastlane-dir ./metadata

# Import metadata from fastlane directory structure
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

Character Limits Validated

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

Production Testing

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

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

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

Test Coverage

  • 15+ unit tests for validation logic in cmd/migrate_test.go
  • Tests cover all character limit validations and edge cases
  • All existing tests continue to pass
$ go test -v -run "TestMigrate|TestValidate" ./cmd/
PASS (15 tests)

Files Changed

File Purpose
cmd/migrate.go Main command implementation
cmd/migrate_output.go Validation result formatting
cmd/migrate_test.go Unit tests
cmd/root.go Register MigrateCommand
README.md Documentation

Use Cases

  1. CI/CD pipelines - Validate metadata before upload, fail fast on character limit violations
  2. Fastlane migration - Import existing fastlane metadata workflows to ASC
  3. Backup/restore - Export metadata to fastlane format for version control
  4. Offline validation - Check limits without API authentication

Breaking Changes

None. This is an additive feature.


🤖 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/137 **Author:** [@cameronehrlich](https://github.com/cameronehrlich) **Created:** 1/25/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feature/migrate` --- ### 📝 Commits (1) - [`deaf34c`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/deaf34c01f01da6735b35e0159b8d43d23d15d25) Add fastlane migration commands for metadata validation and import/export ### 📊 Changes **5 files changed** (+1405 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+25 -0) ➕ `cmd/migrate.go` (+761 -0) ➕ `cmd/migrate_output.go` (+212 -0) ➕ `cmd/migrate_test.go` (+406 -0) 📝 `cmd/root.go` (+1 -0) </details> ### 📄 Description ## Summary Adds `asc migrate` command with three subcommands for fastlane compatibility and offline metadata validation. ### Commands Added ```bash # Validate metadata against App Store Connect character limits (no API calls) asc migrate validate --fastlane-dir ./metadata # Import metadata from fastlane directory structure 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 ``` ### Character Limits Validated | Field | Limit | |-------|-------| | Description | 4000 chars | | Keywords | 100 chars | | What's New | 4000 chars | | Promotional Text | 170 chars | | Name | 30 chars | | Subtitle | 30 chars | --- ## Production Testing ✅ Tested against a production app (Stitch It, App ID 554594252): ``` $ asc migrate validate --fastlane-dir ./optimized ✓ Validation passed: 0 errors, 0 warnings en-US: keywords: 97/100 chars ✓ description: 876/4000 chars ✓ promotional_text: 155/170 chars ✓ ``` --- ## Test Coverage - **15+ unit tests** for validation logic in `cmd/migrate_test.go` - Tests cover all character limit validations and edge cases - All existing tests continue to pass ```bash $ go test -v -run "TestMigrate|TestValidate" ./cmd/ PASS (15 tests) ``` --- ## Files Changed | File | Purpose | |------|---------| | `cmd/migrate.go` | Main command implementation | | `cmd/migrate_output.go` | Validation result formatting | | `cmd/migrate_test.go` | Unit tests | | `cmd/root.go` | Register MigrateCommand | | `README.md` | Documentation | --- ## Use Cases 1. **CI/CD pipelines** - Validate metadata before upload, fail fast on character limit violations 2. **Fastlane migration** - Import existing fastlane metadata workflows to ASC 3. **Backup/restore** - Export metadata to fastlane format for version control 4. **Offline validation** - Check limits without API authentication --- ## Breaking Changes None. This is an additive feature. --- 🤖 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:33 +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#318
No description provided.