spaceship/lib/spaceship/spaceauth_runner.rb in fastlane_hotfix-2.165.1 vs spaceship/lib/spaceship/spaceauth_runner.rb in fastlane_hotfix-2.187.0
- old
+ new
@@ -1,17 +1,19 @@
require 'colored'
require 'credentials_manager/appfile_config'
require 'yaml'
+require 'fastlane_core'
require_relative 'tunes/tunes_client'
module Spaceship
class SpaceauthRunner
- def initialize(username: nil)
+ def initialize(username: nil, copy_to_clipboard: nil)
@username = username
@username ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
@username ||= ask("Username: ")
+ @copy_to_clipboard = copy_to_clipboard
end
def run
begin
puts("Logging into to App Store Connect (#{@username})...")
@@ -20,11 +22,11 @@
puts("")
rescue => ex
puts("Could not login to App Store Connect".red)
puts("Please check your credentials and try again.".yellow)
puts("This could be an issue with App Store Connect,".yellow)
- puts("Please try unsetting the FASTLANE_SESSION environment variable".yellow)
+ puts("Please try unsetting the FASTLANE_SESSION environment variable by calling 'unset FASTLANE_SESSION'".yellow)
puts("(if it is set) and re-run `fastlane spaceauth`".yellow)
puts("")
puts("Exception type: #{ex.class}")
raise ex
end
@@ -35,37 +37,58 @@
# We're not sure if the key changes
#
# Example:
# name: DES5c148586daa451e55afb017aa62418f91
# value: HSARMTKNSRVTWFlaF/ek8asaa9lymMA0dN8JQ6pY7B3F5kdqTxJvMT19EVEFX8EQudB/uNwBHOHzaa30KYTU/eCP/UF7vGTgxs6PAnlVWKscWssOVHfP2IKWUPaa4Dn+I6ilA7eAFQsiaaVT
- cookies = YAML.safe_load(
- itc_cookie_content,
- [HTTP::Cookie, Time], # classes allowlist
- [], # symbols allowlist
- true # allow YAML aliases
- )
+ cookies = load_cookies(itc_cookie_content)
# We remove all the un-needed cookies
cookies.select! do |cookie|
cookie.name.start_with?("myacinfo") || cookie.name == "dqsid" || cookie.name.start_with?("DES")
end
- yaml = cookies.to_yaml.gsub("\n", "\\n")
+ @yaml = cookies.to_yaml.gsub("\n", "\\n")
puts("---")
puts("")
puts("Pass the following via the FASTLANE_SESSION environment variable:")
- puts(yaml.cyan.underline)
+ puts(@yaml.cyan.underline)
puts("")
puts("")
puts("Example:")
- puts("export FASTLANE_SESSION='#{yaml}'".cyan.underline)
+ puts("export FASTLANE_SESSION='#{@yaml}'".cyan.underline)
- if mac? && Spaceship::Client::UserInterface.interactive? && agree("🙄 Should fastlane copy the cookie into your clipboard, so you can easily paste it? (y/n)", true)
- require 'open3'
- Open3.popen3('pbcopy') { |input, _, _| input << yaml }
- puts("Successfully copied text into your clipboard 🎨".green)
+ if @copy_to_clipboard == false
+ puts("Skipped asking to copy the session string into your clipboard ⏭️".green)
+ elsif @copy_to_clipboard || (mac? && Spaceship::Client::UserInterface.interactive? && agree("🙄 Should fastlane copy the cookie into your clipboard, so you can easily paste it? (y/n)", true))
+ FastlaneCore::Clipboard.copy(content: @yaml)
+ puts("Successfully copied the session string into your clipboard 🎨".green)
end
+
+ return self
+ end
+
+ def load_cookies(content)
+ # When Ruby 2.5 support is dropped, we can safely get rid of the latter branch.
+ if YAML.name == 'Psych' && Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1')
+ YAML.safe_load(
+ content,
+ permitted_classes: [HTTP::Cookie, Time],
+ aliases: true
+ )
+ else
+ YAML.safe_load(
+ content,
+ [HTTP::Cookie, Time], # classes allowlist
+ [], # symbols allowlist
+ true # allow YAML aliases
+ )
+ end
+ end
+
+ def session_string
+ FastlaneCore::UI.user_error!("`#{__method__}` method called before calling `run` in `SpaceauthRunner`") unless @yaml
+ @yaml
end
def mac?
(/darwin/ =~ RUBY_PLATFORM) != nil
end