619d5f921d
- 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
76 lines
2.1 KiB
Ruby
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
|