Class: Fastlane::Actions::SetChangelogAction
- Inherits:
-
Fastlane::Action
- Object
- Fastlane::Action
- Fastlane::Actions::SetChangelogAction
- Defined in:
- lib/fastlane/actions/set_changelog.rb
Constant Summary
Constants inherited from Fastlane::Action
Fastlane::Action::AVAILABLE_CATEGORIES
Documentation collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .category ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .example_code ⇒ Object
- .is_supported?(platform) ⇒ Boolean
Class Method Summary collapse
Methods inherited from Fastlane::Action
action_name, author, lane_context, method_missing, other_action, output, return_value, sample_return_value, sh, step_text
Class Method Details
.authors ⇒ Object
128 129 130 |
# File 'lib/fastlane/actions/set_changelog.rb', line 128 def self. ["KrauseFx"] end |
.available_options ⇒ Object
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 |
# File 'lib/fastlane/actions/set_changelog.rb', line 83 def self. user = CredentialsManager::AppfileConfig.try_fetch_value(:itunes_connect_id) user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id) [ FastlaneCore::ConfigItem.new(key: :app_identifier, short_option: "-a", env_name: "FASTLANE_APP_IDENTIFIER", description: "The bundle identifier of your app", default_value: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)), FastlaneCore::ConfigItem.new(key: :username, short_option: "-u", env_name: "FASTLANE_USERNAME", description: "Your Apple ID Username", default_value: user), FastlaneCore::ConfigItem.new(key: :version, env_name: "FL_SET_CHANGELOG_VERSION", description: "The version number to create/update", optional: true), FastlaneCore::ConfigItem.new(key: :changelog, env_name: "FL_SET_CHANGELOG_CHANGELOG", description: "Changelog text that should be uploaded to iTunes Connect", optional: true), FastlaneCore::ConfigItem.new(key: :team_id, short_option: "-k", env_name: "FL_SET_CHANGELOG_TEAM_ID", description: "The ID of your iTunes Connect team if you're in multiple teams", optional: true, is_string: false, # as we also allow integers, which we convert to strings anyway default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_team_id), 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: "FL_SET_CHANGELOG_TEAM_NAME", description: "The name of your iTunes Connect team if you're in multiple teams", optional: true, default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_team_name), verify_block: proc do |value| ENV["FASTLANE_ITC_TEAM_NAME"] = value.to_s end) ] end |
.category ⇒ Object
142 143 144 |
# File 'lib/fastlane/actions/set_changelog.rb', line 142 def self.category :beta end |
.description ⇒ Object
72 73 74 |
# File 'lib/fastlane/actions/set_changelog.rb', line 72 def self.description "Set the changelog for all languages on iTunes Connect" end |
.details ⇒ Object
76 77 78 79 80 81 |
# File 'lib/fastlane/actions/set_changelog.rb', line 76 def self.details [ "This is useful if you have only one changelog for all languages.", "You can store the changelog in `./fastlane/changelog.txt` and it will automatically get loaded from there. This integration is useful if you support e.g. 10 languages and want to use the same \"What's new\"-text for all languages." ].join("\n") end |
.example_code ⇒ Object
136 137 138 139 140 |
# File 'lib/fastlane/actions/set_changelog.rb', line 136 def self.example_code [ 'set_changelog(app_identifier: "com.krausefx.app", version: "1.0", changelog: "All Languages")' ] end |
.is_supported?(platform) ⇒ Boolean
132 133 134 |
# File 'lib/fastlane/actions/set_changelog.rb', line 132 def self.is_supported?(platform) [:ios, :mac].include? platform end |
.run(params) ⇒ Object
4 5 6 7 8 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 |
# File 'lib/fastlane/actions/set_changelog.rb', line 4 def self.run(params) require 'spaceship' UI.("Login to iTunes Connect (#{params[:username]})") Spaceship::Tunes.login(params[:username]) Spaceship::Tunes.select_team UI.("Login successful") app = Spaceship::Application.find(params[:app_identifier]) version_number = params[:version] unless version_number # Automatically fetch the latest version UI.("Fetching the latest version for this app") if app.edit_version and app.edit_version.version version_number = app.edit_version.version else UI.("You have to specify a new version number: ") version_number = STDIN.gets.strip end end UI.("Going to update version #{version_number}") changelog = params[:changelog] unless changelog path = "./fastlane/changelog.txt" UI.("Looking for changelog in '#{path}'...") if File.exist? path changelog = File.read(path) else UI.error("Couldn't find changelog.txt") UI.("Please enter the changelog here:") changelog = STDIN.gets end end UI.important("Going to update the changelog to:\n\n#{changelog}\n\n") if (v = app.edit_version) if v.version != version_number # Version is already there, make sure it matches the one we want to create UI.("Changing existing version number from '#{v.version}' to '#{version_number}'") v.version = version_number v.save! else UI.("Updating changelog for existing version #{v.version}") end else UI.("Creating the new version: #{version_number}") app.create_version!(version_number) app = Spaceship::Application.find(params[:app_identifier]) # Replace with .reload method once available v = app.edit_version end v.release_notes.languages.each do |lang| v.release_notes[lang] = changelog end UI.("Uploading changes to iTunes Connect...") v.save! UI.success("👼 Successfully pushed the new changelog to #{v.url}") end |