Files
FamilyMealPlanner/fastlane/Fastfile
T
alexandrev-tibco 619d5f921d 1.2.0: localized App Store screenshots (es/de/fr/it/pt-BR) + 1.2.0 release notes
- Caption-localized the 5 iPhone 6.7" + 5 iPad 12.9" screenshots into the 5
  non-English locales, reusing the en-US framed captures (in-frame UI stays EN).
  Tooling in fastlane/screenshot_localize/ (Pillow: repaints the pastel caption
  band, re-renders headline/subtitle in SF Pro; auto-fits + wraps per language).
- Rewrote release_notes 1.2.0 in all 6 languages: since 1.1.5 never shipped
  publicly (last public = 1.1.4), the notes consolidate 1.1.5 + 1.2.0 features.
- Fastfile: new `publish` lane — uploads metadata + screenshots for an existing
  TestFlight build (skip_binary_upload, no submit) so offer codes can be set up
  before submission.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BkanrydYtrme8wipTzWssG
2026-07-09 10:42:44 +02:00

76 lines
2.1 KiB
Ruby

default_platform(:ios)
# Credentials: App Store Connect API key via `pass`.
# The api_key block uses the key inline — no session/2FA needed.
platform :ios do
EXPORT_OPTIONS = {
method: "app-store",
signingStyle: "manual",
manageAppVersionAndBuildNumber: false,
provisioningProfiles: {
"com.alexandrevazquez.mealmood" => "com.alexandrevazquez.mealmood AppStore",
"com.alexandrevazquez.mealmood.widget" => "com.alexandrevazquez.mealmood.widget AppStore"
}
}
def asc_api_key
app_store_connect_api_key(
key_id: `pass show appstore/api-key-id`.strip,
issuer_id: `pass show appstore/issuer-id`.strip,
key_content: `pass show appstore/api-key-p8`.strip,
in_house: false
)
end
desc "Push a new beta build to TestFlight"
lane :beta do
increment_build_number(xcodeproj: "MealMood.xcodeproj")
build_app(
scheme: "MealMood",
export_method: "app-store",
sdk: "iphoneos26.5",
export_options: EXPORT_OPTIONS
)
upload_to_testflight(
api_key: asc_api_key,
skip_waiting_for_build_processing: true
)
end
desc "Upload metadata + localized screenshots for an existing TestFlight build (no rebuild, no submit)"
lane :publish do |options|
version = options[:version] || "1.2.0"
build = options[:build] || "55"
upload_to_app_store(
api_key: asc_api_key,
app_version: version,
build_number: build,
skip_binary_upload: true,
skip_metadata: false,
skip_screenshots: false,
overwrite_screenshots: true,
submit_for_review: false,
automatic_release: false,
precheck_include_in_app_purchases: false,
force: true,
run_precheck_before_submit: false
)
end
desc "Push a new release build to the App Store"
lane :release do
increment_build_number(xcodeproj: "MealMood.xcodeproj")
build_app(
scheme: "MealMood",
sdk: "iphoneos26.5",
export_options: EXPORT_OPTIONS
)
upload_to_app_store(
api_key: asc_api_key,
automatic_release: true,
force: true
)
end
end