Class: Fastlane::SetupIos
- Inherits:
-
Setup
- Object
- Setup
- Fastlane::SetupIos
show all
- Defined in:
- lib/fastlane/setup/setup_ios.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Setup
#ask_for_crash_reporting, #is_android?, #is_ios?, #show_analytics
Instance Attribute Details
the tools that are already enabled
4
5
6
|
# File 'lib/fastlane/setup/setup_ios.rb', line 4
def tools
@tools
end
|
Instance Method Details
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
|
# File 'lib/fastlane/setup/setup_ios.rb', line 85
def ask_to_enable_other_tools
if @tools[:deliver] Helper.log.info 'Since all files are moved into the `fastlane` subfolder, you have to adapt your Deliverfile'.yellow
else
if agree("Do you want to setup 'deliver', which is used to upload app screenshots, app metadata and app updates to the App Store? This requires the app to be in the App Store already. (y/n)".yellow, true)
Helper.log.info "Loading up 'deliver', this might take a few seconds"
require 'deliver'
require 'deliver/setup'
options = FastlaneCore::Configuration.create(Deliver::Options.available_options, {})
Deliver::Runner.new(options) Deliver::Setup.new.run(options)
@tools[:deliver] = true
end
end
unless @tools[:snapshot]
if Helper.mac? and agree("Do you want to setup 'snapshot', which will help you to automatically take screenshots of your iOS app in all languages/devices? (y/n)".yellow, true)
Helper.log.info "Loading up 'snapshot', this might take a few seconds"
require 'snapshot'
require 'snapshot/setup'
Snapshot::Setup.create(folder)
@tools[:snapshot] = true
end
end
@tools[:sigh] = true if agree("Do you want to use 'sigh', which will maintain and download the provisioning profile for your app? (y/n)".yellow, true)
end
|
#copy_existing_files ⇒ Object
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/fastlane/setup/setup_ios.rb', line 49
def copy_existing_files
files_to_copy.each do |current|
current = File.join(File.expand_path('..', FastlaneFolder.path), current)
next unless File.exist?(current)
file_name = File.basename(current)
to_path = File.join(folder, file_name)
Helper.log.info "Moving '#{current}' to '#{to_path}'".green
FileUtils.mv(current, to_path)
end
end
|
75
76
77
78
79
80
81
82
83
|
# File 'lib/fastlane/setup/setup_ios.rb', line 75
def detect_installed_tools
@tools = {}
@tools[:deliver] = File.exist?(File.join(folder, 'Deliverfile'))
@tools[:snapshot] = File.exist?(File.join(folder, 'Snapfile'))
@tools[:xctool] = File.exist?(File.join(File.expand_path('..', folder), '.xctool-args'))
@tools[:cocoapods] = File.exist?(File.join(File.expand_path('..', folder), 'Podfile'))
@tools[:carthage] = File.exist?(File.join(File.expand_path('..', folder), 'Cartfile'))
@tools[:sigh] = false
end
|
#files_to_copy ⇒ Object
45
46
47
|
# File 'lib/fastlane/setup/setup_ios.rb', line 45
def files_to_copy
['Deliverfile', 'deliver', 'screenshots']
end
|
#folder ⇒ Object
144
145
146
|
# File 'lib/fastlane/setup/setup_ios.rb', line 144
def folder
FastlaneFolder.path
end
|
#generate_appfile ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/fastlane/setup/setup_ios.rb', line 60
def generate_appfile
Helper.log.info '------------------------------'
Helper.log.info 'To not re-enter your username and app identifier every time you run one of the fastlane tools or fastlane, these will be stored from now on.'.green
app_identifier = ask('App Identifier (com.krausefx.app): '.yellow)
apple_id = ask('Your Apple ID ([email protected]): '.yellow)
template = File.read("#{Helper.gem_path('fastlane')}/lib/assets/AppfileTemplate")
template.gsub!('[[APP_IDENTIFIER]]', app_identifier)
template.gsub!('[[APPLE_ID]]', apple_id)
path = File.join(folder, 'Appfile')
File.write(path, template)
Helper.log.info "Created new file '#{path}'. Edit it to manage your preferred app metadata information.".green
end
|
#generate_fastfile ⇒ Object
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
|
# File 'lib/fastlane/setup/setup_ios.rb', line 116
def generate_fastfile
template = File.read("#{Helper.gem_path('fastlane')}/lib/assets/FastfileTemplate")
scheme = ask("Optional: The scheme name of your app (If you don't need one, just hit Enter): ").to_s.strip
if scheme.length > 0
template.gsub!('[[SCHEME]]', "(scheme: \"#{scheme}\")")
else
template.gsub!('[[SCHEME]]', "")
end
template.gsub!('deliver', '# deliver') unless @tools[:deliver]
template.gsub!('snapshot', '# snapshot') unless @tools[:snapshot]
template.gsub!('sigh', '# sigh') unless @tools[:sigh]
template.gsub!('xctool', '# xctool') unless @tools[:xctool]
template.gsub!('cocoapods', '') unless @tools[:cocoapods]
template.gsub!('carthage', '') unless @tools[:carthage]
template.gsub!('[[FASTLANE_VERSION]]', Fastlane::VERSION)
@tools.each do |key, value|
Helper.log.info "'#{key}' enabled.".magenta if value
Helper.log.info "'#{key}' not enabled.".yellow unless value
end
path = File.join(folder, 'Fastfile')
File.write(path, template)
Helper.log.info "Created new file '#{path}'. Edit it to manage your own deployment lanes.".green
end
|
#restore_previous_state ⇒ Object
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
# File 'lib/fastlane/setup/setup_ios.rb', line 148
def restore_previous_state
files_to_copy.each do |current|
from_path = File.join(folder, current)
to_path = File.basename(current)
if File.exist?(from_path)
Helper.log.info "Moving '#{from_path}' to '#{to_path}'".yellow
FileUtils.mv(from_path, to_path)
end
end
Helper.log.info "Deleting the 'fastlane' folder".yellow
FileUtils.rm_rf(folder)
end
|
#run ⇒ Object
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
|
# File 'lib/fastlane/setup/setup_ios.rb', line 6
def run
if FastlaneFolder.setup? and !Helper.is_test?
Helper.log.info "Fastlane already set up at path #{folder}".yellow
return
end
show_infos
response = agree('Do you have everything commited in version control? If not please do so now! (y/n)'.yellow, true)
return unless response
begin
FastlaneFolder.create_folder! unless Helper.is_test?
copy_existing_files
generate_appfile
detect_installed_tools ask_to_enable_other_tools
FileUtils.mkdir(File.join(FastlaneFolder.path, 'actions'))
generate_fastfile
show_analytics
Helper.log.info 'Successfully finished setting up fastlane'.green
rescue Exception => ex Helper.log.fatal 'Error occurred with the setup program! Reverting changes now!'.red
restore_previous_state
raise ex
end
end
|
#show_infos ⇒ Object
37
38
39
40
41
42
43
|
# File 'lib/fastlane/setup/setup_ios.rb', line 37
def show_infos
Helper.log.info 'This setup will help you get up and running in no time.'.green
Helper.log.info 'First, it will move the config files from `deliver` and `snapshot`'.green
Helper.log.info "into the subfolder `fastlane`.\n".green
Helper.log.info "fastlane will check what tools you're already using and set up".green
Helper.log.info 'the tool automatically for you. Have fun! '.green
end
|