require "colored" require "credentials_manager" require_relative 'tunes/tunes' require_relative 'portal/portal' module Spaceship class Playground def initialize(username: nil) # Make sure the user has pry installed begin Gem::Specification.find_by_name("pry") rescue Gem::LoadError puts("Could not find gem 'pry'".red) puts("") puts("If you installed spaceship using `sudo gem install spaceship` run") puts(" sudo gem install pry".yellow) puts("to install the missing gem") puts("") puts("If you use a Gemfile add this to your Gemfile:") puts(" gem 'pry'".yellow) puts("and run " + "`bundle install`".yellow) abort end require 'pry' @username = username @username ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id) @username ||= ask("Username: ") end def run begin puts "Logging into to iTunes Connect (#{@username})..." Spaceship::Tunes.login(@username) puts "Successfully logged in to iTunes Connect".green puts "" rescue puts "Could not login to iTunes Connect...".red end begin puts "Logging into the Developer Portal (#{@username})..." Spaceship::Portal.login(@username) puts "Successfully logged in to the Developer Portal".green puts "" rescue puts "Could not login to the Developer Portal...".red end puts "---------------------------------------".green puts "| Welcome to the spaceship playground |".green puts "---------------------------------------".green puts "" puts "Enter #{'docs'.yellow} to open up the documentation" puts "Enter #{'exit'.yellow} to exit the spaceship playground" puts "Enter #{'_'.yellow} to access the return value of the last executed command" puts "" puts "Just enter the commands and confirm with Enter".green # rubocop:disable Lint/Debugger binding.pry(quiet: true) # rubocop:enable Lint/Debugger puts "" # Fixes https://github.com/fastlane/spaceship/issues/203 end def docs url = 'https://github.com/fastlane/fastlane/tree/master/spaceship/docs' `open '#{url}'` url end end end