Class: Deliver::Options
- Inherits:
-
Object
- Object
- Deliver::Options
- Defined in:
- deliver/lib/deliver/options.rb
Overview
rubocop:disable Metrics/ClassLength
Class Method Summary collapse
Class Method Details
.available_options ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 |
# File 'deliver/lib/deliver/options.rb', line 9 def self. user = CredentialsManager::AppfileConfig.try_fetch_value(:itunes_connect_id) user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id) user ||= ENV["DELIVER_USER"] [ FastlaneCore::ConfigItem.new(key: :api_key_path, env_names: ["DELIVER_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"], description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)", optional: true, conflicting_options: [:api_key], verify_block: proc do |value| UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value) end), FastlaneCore::ConfigItem.new(key: :api_key, env_names: ["DELIVER_API_KEY", "APP_STORE_CONNECT_API_KEY"], description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)", type: Hash, optional: true, sensitive: true, conflicting_options: [:api_key_path]), FastlaneCore::ConfigItem.new(key: :username, short_option: "-u", env_name: "DELIVER_USERNAME", description: "Your Apple ID Username", optional: true, default_value: user, default_value_dynamic: true), FastlaneCore::ConfigItem.new(key: :app_identifier, short_option: "-a", env_name: "DELIVER_APP_IDENTIFIER", description: "The bundle identifier of your app", optional: true, code_gen_sensitive: true, default_value: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier), default_value_dynamic: true), # version FastlaneCore::ConfigItem.new(key: :app_version, short_option: '-z', env_name: "DELIVER_APP_VERSION", description: "The version that should be edited or created", optional: true), # binary / build FastlaneCore::ConfigItem.new(key: :ipa, short_option: "-i", optional: true, env_name: "DELIVER_IPA_PATH", description: "Path to your ipa file", code_gen_sensitive: true, default_value: Dir["*.ipa"].sort_by { |x| File.mtime(x) }.last, default_value_dynamic: true, verify_block: proc do |value| UI.user_error!("Could not find ipa file at path '#{File.(value)}'") unless File.exist?(value) UI.user_error!("'#{value}' doesn't seem to be an ipa file") unless value.end_with?(".ipa") end, conflicting_options: [:pkg], conflict_block: proc do |value| UI.user_error!("You can't use 'ipa' and '#{value.key}' options in one run.") end), FastlaneCore::ConfigItem.new(key: :pkg, short_option: "-c", optional: true, env_name: "DELIVER_PKG_PATH", description: "Path to your pkg file", code_gen_sensitive: true, default_value: Dir["*.pkg"].sort_by { |x| File.mtime(x) }.last, default_value_dynamic: true, verify_block: proc do |value| UI.user_error!("Could not find pkg file at path '#{File.(value)}'") unless File.exist?(value) UI.user_error!("'#{value}' doesn't seem to be a pkg file") unless value.end_with?(".pkg") end, conflicting_options: [:ipa], conflict_block: proc do |value| UI.user_error!("You can't use 'pkg' and '#{value.key}' options in one run.") end), FastlaneCore::ConfigItem.new(key: :build_number, short_option: "-n", env_name: "DELIVER_BUILD_NUMBER", description: "If set the given build number (already uploaded to iTC) will be used instead of the current built one", optional: true, conflicting_options: [:ipa, :pkg], conflict_block: proc do |value| UI.user_error!("You can't use 'build_number' and '#{value.key}' options in one run.") end), FastlaneCore::ConfigItem.new(key: :platform, short_option: "-j", env_name: "DELIVER_PLATFORM", description: "The platform to use (optional)", optional: true, default_value: "ios", verify_block: proc do |value| UI.user_error!("The platform can only be ios, appletvos, xros or osx") unless %('ios', 'appletvos', 'xros', 'osx').include?(value) end), # live version FastlaneCore::ConfigItem.new(key: :edit_live, short_option: "-o", optional: true, default_value: false, env_name: "DELIVER_EDIT_LIVE", description: "Modify live metadata, this option disables ipa upload and screenshot upload", type: Boolean), FastlaneCore::ConfigItem.new(key: :use_live_version, env_name: "DELIVER_USE_LIVE_VERSION", description: "Force usage of live version rather than edit version", type: Boolean, default_value: false), # paths FastlaneCore::ConfigItem.new(key: :metadata_path, short_option: '-m', env_name: "DELIVER_METADATA_PATH", description: "Path to the folder containing the metadata files", optional: true), FastlaneCore::ConfigItem.new(key: :screenshots_path, short_option: '-w', env_name: "DELIVER_SCREENSHOTS_PATH", description: "Path to the folder containing the screenshots", optional: true), # skip FastlaneCore::ConfigItem.new(key: :skip_binary_upload, env_name: "DELIVER_SKIP_BINARY_UPLOAD", description: "Skip uploading an ipa or pkg to App Store Connect", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :skip_screenshots, env_name: "DELIVER_SKIP_SCREENSHOTS", description: "Don't upload the screenshots", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :skip_metadata, env_name: "DELIVER_SKIP_METADATA", description: "Don't upload the metadata (e.g. title, description). This will still upload screenshots", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :skip_app_version_update, env_name: "DELIVER_SKIP_APP_VERSION_UPDATE", description: "Don’t create or update the app version that is being prepared for submission", type: Boolean, default_value: false), # how to operate FastlaneCore::ConfigItem.new(key: :force, short_option: "-f", env_name: "DELIVER_FORCE", description: "Skip verification of HTML preview file", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :overwrite_screenshots, env_name: "DELIVER_OVERWRITE_SCREENSHOTS", description: "Clear all previously uploaded screenshots before uploading the new ones", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :screenshot_processing_timeout, env_name: "DELIVER_SCREENSHOT_PROCESSING_TIMEOUT", description: "Timeout in seconds to wait before considering screenshot processing as failed, used to handle cases where uploads to the App Store are stuck in processing", type: Integer, default_value: 3600), FastlaneCore::ConfigItem.new(key: :sync_screenshots, env_name: "DELIVER_SYNC_SCREENSHOTS", description: "Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :submit_for_review, env_name: "DELIVER_SUBMIT_FOR_REVIEW", description: "Submit the new version for Review after uploading everything", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :verify_only, env_name: "DELIVER_VERIFY_ONLY", description: "Verifies archive with App Store Connect without uploading", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :reject_if_possible, env_name: "DELIVER_REJECT_IF_POSSIBLE", description: "Rejects the previously submitted build if it's in a state where it's possible", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :version_check_wait_retry_limit, env_name: "DELIVER_VERSION_CHECK_WAIT_RETRY_LIMIT", description: "After submitting a new version, App Store Connect takes some time to recognize the new version and we must wait until it's available before attempting to upload metadata for it. There is a mechanism that will check if it's available and retry with an exponential backoff if it's not available yet. " \ "This option specifies how many times we should retry before giving up. Setting this to a value below 5 is not recommended and will likely cause failures. Increase this parameter when Apple servers seem to be degraded or slow", type: Integer, default_value: 7, verify_block: proc do |value| UI.user_error!("'#{value}' needs to be greater than 0") if value <= 0 end), # release FastlaneCore::ConfigItem.new(key: :automatic_release, env_name: "DELIVER_AUTOMATIC_RELEASE", description: "Should the app be automatically released once it's approved? (Cannot be used together with `auto_release_date`)", type: Boolean, optional: true), FastlaneCore::ConfigItem.new(key: :auto_release_date, env_name: "DELIVER_AUTO_RELEASE_DATE", description: "Date in milliseconds for automatically releasing on pending approval (Cannot be used together with `automatic_release`)", type: Integer, optional: true, conflicting_options: [:automatic_release], conflict_block: proc do |value| UI.user_error!("You can't use 'auto_release_date' and '#{value.key}' options together.") end, verify_block: proc do |value| now_in_ms = Time.now.to_i * 1000 if value < now_in_ms UI.user_error!("'#{value}' needs to be in the future and in milliseconds (current time is '#{now_in_ms}')") end end), FastlaneCore::ConfigItem.new(key: :phased_release, env_name: "DELIVER_PHASED_RELEASE", description: "Enable the phased release feature of iTC", optional: true, type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :reset_ratings, env_name: "DELIVER_RESET_RATINGS", description: "Reset the summary rating when you release a new version of the application", optional: true, type: Boolean, default_value: false), # other app configuration FastlaneCore::ConfigItem.new(key: :price_tier, short_option: "-r", env_name: "DELIVER_PRICE_TIER", description: "The price tier of this application", type: Integer, optional: true), FastlaneCore::ConfigItem.new(key: :app_rating_config_path, short_option: "-g", env_name: "DELIVER_APP_RATING_CONFIG_PATH", description: "Path to the app rating's config", optional: true, verify_block: proc do |value| UI.user_error!("Could not find config file at path '#{File.(value)}'") unless File.exist?(value) UI.user_error!("'#{value}' doesn't seem to be a JSON file") unless FastlaneCore::Helper.json_file?(File.(value)) end), FastlaneCore::ConfigItem.new(key: :submission_information, short_option: "-b", description: "Extra information for the submission (e.g. compliance specifications)", type: Hash, optional: true), # affiliation FastlaneCore::ConfigItem.new(key: :team_id, short_option: "-k", env_name: "DELIVER_TEAM_ID", description: "The ID of your App Store Connect team if you're in multiple teams", optional: true, skip_type_validation: true, # as we also allow integers, which we convert to strings anyway code_gen_sensitive: true, default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_team_id), default_value_dynamic: true, verify_block: proc do |value| ENV["FASTLANE_ITC_TEAM_ID"] = value.to_s end), FastlaneCore::ConfigItem.new(key: :team_name, short_option: "-e", env_name: "DELIVER_TEAM_NAME", description: "The name of your App Store Connect team if you're in multiple teams", optional: true, code_gen_sensitive: true, default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_team_name), default_value_dynamic: true, verify_block: proc do |value| ENV["FASTLANE_ITC_TEAM_NAME"] = value.to_s end), FastlaneCore::ConfigItem.new(key: :dev_portal_team_id, short_option: "-s", env_name: "DELIVER_DEV_PORTAL_TEAM_ID", description: "The short ID of your Developer Portal team, if you're in multiple teams. Different from your iTC team ID!", optional: true, code_gen_sensitive: true, default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_id), default_value_dynamic: true, verify_block: proc do |value| ENV["FASTLANE_TEAM_ID"] = value.to_s end), FastlaneCore::ConfigItem.new(key: :dev_portal_team_name, short_option: "-y", env_name: "DELIVER_DEV_PORTAL_TEAM_NAME", description: "The name of your Developer Portal team if you're in multiple teams", optional: true, code_gen_sensitive: true, default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_name), default_value_dynamic: true, verify_block: proc do |value| ENV["FASTLANE_TEAM_NAME"] = value.to_s end), # rubocop:disable Layout/LineLength FastlaneCore::ConfigItem.new(key: :itc_provider, env_name: "DELIVER_ITC_PROVIDER", description: "The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `pathToXcode.app/Contents/Applications/Application\\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column", optional: true, code_gen_sensitive: true, default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_provider), default_value_dynamic: true), # rubocop:enable Layout/LineLength # precheck FastlaneCore::ConfigItem.new(key: :run_precheck_before_submit, short_option: "-x", env_name: "DELIVER_RUN_PRECHECK_BEFORE_SUBMIT", description: "Run precheck before submitting to app review", type: Boolean, default_value: true), FastlaneCore::ConfigItem.new(key: :precheck_default_rule_level, short_option: "-d", env_name: "DELIVER_PRECHECK_DEFAULT_RULE_LEVEL", description: "The default precheck rule level unless otherwise configured", type: Symbol, default_value: :warn), # App Metadata FastlaneCore::ConfigItem.new(key: :individual_metadata_items, env_names: ["DELIVER_INDIVUDAL_METADATA_ITEMS", "DELIVER_INDIVIDUAL_METADATA_ITEMS"], # The version with typo must be deprecated description: "An array of localized metadata items to upload individually by language so that errors can be identified. E.g. ['name', 'keywords', 'description']. Note: slow", deprecated: "Removed after the migration to the new App Store Connect API in June 2020", type: Array, optional: true), # Non Localised FastlaneCore::ConfigItem.new(key: :app_icon, env_name: "DELIVER_APP_ICON_PATH", description: "Metadata: The path to the app icon", deprecated: "Removed after the migration to the new App Store Connect API in June 2020", optional: true, short_option: "-l"), FastlaneCore::ConfigItem.new(key: :apple_watch_app_icon, env_name: "DELIVER_APPLE_WATCH_APP_ICON_PATH", description: "Metadata: The path to the Apple Watch app icon", deprecated: "Removed after the migration to the new App Store Connect API in June 2020", optional: true, short_option: "-q"), FastlaneCore::ConfigItem.new(key: :copyright, env_name: "DELIVER_COPYRIGHT", description: "Metadata: The copyright notice", optional: true), FastlaneCore::ConfigItem.new(key: :primary_category, env_name: "DELIVER_PRIMARY_CATEGORY", description: "Metadata: The english name of the primary category (e.g. `Business`, `Books`)", optional: true), FastlaneCore::ConfigItem.new(key: :secondary_category, env_name: "DELIVER_SECONDARY_CATEGORY", description: "Metadata: The english name of the secondary category (e.g. `Business`, `Books`)", optional: true), FastlaneCore::ConfigItem.new(key: :primary_first_sub_category, env_name: "DELIVER_PRIMARY_FIRST_SUB_CATEGORY", description: "Metadata: The english name of the primary first sub category (e.g. `Educational`, `Puzzle`)", optional: true), FastlaneCore::ConfigItem.new(key: :primary_second_sub_category, env_name: "DELIVER_PRIMARY_SECOND_SUB_CATEGORY", description: "Metadata: The english name of the primary second sub category (e.g. `Educational`, `Puzzle`)", optional: true), FastlaneCore::ConfigItem.new(key: :secondary_first_sub_category, env_name: "DELIVER_SECONDARY_FIRST_SUB_CATEGORY", description: "Metadata: The english name of the secondary first sub category (e.g. `Educational`, `Puzzle`)", optional: true), FastlaneCore::ConfigItem.new(key: :secondary_second_sub_category, env_name: "DELIVER_SECONDARY_SECOND_SUB_CATEGORY", description: "Metadata: The english name of the secondary second sub category (e.g. `Educational`, `Puzzle`)", optional: true), FastlaneCore::ConfigItem.new(key: :trade_representative_contact_information, description: "Metadata: A hash containing the trade representative contact information", optional: true, deprecated: "This is no longer used by App Store Connect", type: Hash), FastlaneCore::ConfigItem.new(key: :app_review_information, description: "Metadata: A hash containing the review information", optional: true, type: Hash), FastlaneCore::ConfigItem.new(key: :app_review_attachment_file, env_name: "DELIVER_APP_REVIEW_ATTACHMENT_FILE", description: "Metadata: Path to the app review attachment file", optional: true), # Localised FastlaneCore::ConfigItem.new(key: :description, description: "Metadata: The localised app description", optional: true, type: Hash), FastlaneCore::ConfigItem.new(key: :name, description: "Metadata: The localised app name", optional: true, type: Hash), FastlaneCore::ConfigItem.new(key: :subtitle, description: "Metadata: The localised app subtitle", optional: true, type: Hash, verify_block: proc do |value| UI.user_error!(":subtitle must be a hash, with the language being the key") unless value.kind_of?(Hash) end), FastlaneCore::ConfigItem.new(key: :keywords, description: "Metadata: An array of localised keywords", optional: true, type: Hash, verify_block: proc do |value| UI.user_error!(":keywords must be a hash, with the language being the key") unless value.kind_of?(Hash) value.each do |language, keywords| # Auto-convert array to string keywords = keywords.join(", ") if keywords.kind_of?(Array) value[language] = keywords UI.user_error!("keywords must be a hash with all values being strings") unless keywords.kind_of?(String) end end), FastlaneCore::ConfigItem.new(key: :promotional_text, description: "Metadata: An array of localised promotional texts", optional: true, type: Hash, verify_block: proc do |value| UI.user_error!(":keywords must be a hash, with the language being the key") unless value.kind_of?(Hash) end), FastlaneCore::ConfigItem.new(key: :release_notes, description: "Metadata: Localised release notes for this version", optional: true, type: Hash), FastlaneCore::ConfigItem.new(key: :privacy_url, description: "Metadata: Localised privacy url", optional: true, type: Hash), FastlaneCore::ConfigItem.new(key: :apple_tv_privacy_policy, description: "Metadata: Localised Apple TV privacy policy text", optional: true, type: Hash), FastlaneCore::ConfigItem.new(key: :support_url, description: "Metadata: Localised support url", optional: true, type: Hash), FastlaneCore::ConfigItem.new(key: :marketing_url, description: "Metadata: Localised marketing url", optional: true, type: Hash), # The verify_block has been removed from here and verification now happens in Deliver::DetectValues # Verification needed Spaceship::Tunes.client which required the Deliver::Runner to already by started FastlaneCore::ConfigItem.new(key: :languages, env_name: "DELIVER_LANGUAGES", description: "Metadata: List of languages to activate", type: Array, optional: true), FastlaneCore::ConfigItem.new(key: :ignore_language_directory_validation, env_name: "DELIVER_IGNORE_LANGUAGE_DIRECTORY_VALIDATION", description: "Ignore errors when invalid languages are found in metadata and screenshot directories", default_value: false, type: Boolean), FastlaneCore::ConfigItem.new(key: :precheck_include_in_app_purchases, env_name: "PRECHECK_INCLUDE_IN_APP_PURCHASES", description: "Should precheck check in-app purchases?", type: Boolean, optional: true, default_value: true), # internal FastlaneCore::ConfigItem.new(key: :app, short_option: "-p", env_name: "DELIVER_APP_ID", description: "The (spaceship) app ID of the app you want to use/modify", optional: true, type: Integer) ] end |