Module: FIR::Publish
- Included in:
- Util::ClassMethods
- Defined in:
- lib/fir/util/publish.rb
Instance Method Summary collapse
- #binary_information ⇒ Object
- #fetch_app_info ⇒ Object
- #fetch_release_id ⇒ Object
- #fetch_uploading_info ⇒ Object
- #icon_information ⇒ Object
- #logger_info_app_short_and_qrcode ⇒ Object
- #logger_info_publishing_message ⇒ Object
- #publish(*args, options) ⇒ Object
- #update_app_info ⇒ Object
- #upload_app ⇒ Object
- #upload_device_info ⇒ Object
- #upload_file(postfix) ⇒ Object
- #upload_mapping_file_with_publish ⇒ Object
- #uploading_binary_info ⇒ Object
- #uploading_icon_info ⇒ Object
Instance Method Details
#binary_information ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/fir/util/publish.rb', line 104 def binary_information { build: @app_info[:build], fname: File.basename(@file_path), key: @binary_cert[:key], name: @app_info[:display_name] || @app_info[:name], origin: 'fir-cli', parent_id: @app_id, release_tag: 'develop', fsize: File.size(@file_path), release_type: @app_info[:release_type], distribution_name: @app_info[:distribution_name], token: @binary_cert[:token], version: @app_info[:version], changelog: @changelog, user_id: @user_info[:id] }.reject { |x| x.nil? || x == '' } end |
#fetch_app_info ⇒ Object
173 174 175 176 177 178 179 |
# File 'lib/fir/util/publish.rb', line 173 def fetch_app_info logger.info 'Fetch app info from fir.im' @fir_app_info = get(fir_api[:app_url] + "/#{@app_id}", api_token: @token) write_app_info(id: @fir_app_info[:id], short: @fir_app_info[:short], name: @fir_app_info[:name]) @fir_app_info end |
#fetch_release_id ⇒ Object
169 170 171 |
# File 'lib/fir/util/publish.rb', line 169 def fetch_release_id get "#{fir_api[:base_url]}/apps/#{@app_id}/releases/find_release_by_key", api_token: @token, key: @binary_cert[:key] end |
#fetch_uploading_info ⇒ Object
158 159 160 161 162 163 164 165 166 167 |
# File 'lib/fir/util/publish.rb', line 158 def fetch_uploading_info logger.info "Fetching #{@app_info[:identifier]}@fir.im uploading info......" logger.info "Uploading app: #{@app_info[:name]}-#{@app_info[:version]}(Build #{@app_info[:build]})" post fir_api[:app_url], type: @app_info[:type], bundle_id: @app_info[:identifier], skip_icon_upload: @options[:skip_update_icon], manual_callback: true, api_token: @token end |
#icon_information ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/fir/util/publish.rb', line 93 def icon_information { key: @icon_cert[:key], token: @icon_cert[:token], origin: 'fir-cli', parent_id: @app_id, fsize: File.size(@uncrushed_icon_path), fname: 'blob' } end |
#logger_info_app_short_and_qrcode ⇒ Object
192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/fir/util/publish.rb', line 192 def logger_info_app_short_and_qrcode @download_url = "#{fir_api[:domain]}/#{@fir_app_info[:short]}" @download_url += "?release_id=#{@app_uploaded_callback_data[:release_id]}" if !![:need_release_id] logger.info "Published succeed: #{@download_url}" @qrcode_path = "#{File.dirname(@file_path)}/fir-#{@app_info[:name]}.png" FIR.generate_rqrcode(@download_url, @qrcode_path) logger.info "Local qrcode file: #{@qrcode_path}" if @export_qrcode end |
#logger_info_publishing_message ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/fir/util/publish.rb', line 29 def user_info = fetch_user_info(@token) email = user_info.fetch(:email, '') name = user_info.fetch(:name, '') logger.info "Publishing app via #{name}<#{email}>......." logger_info_dividing_line end |
#publish(*args, options) ⇒ 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 |
# File 'lib/fir/util/publish.rb', line 4 def publish(*args, ) (args, ) @options = check_supported_file_and_token @app_info = send("#{@file_type}_info", @file_path, full_info: true) @user_info = fetch_user_info(@token) @uploading_info = fetch_uploading_info @app_id = @uploading_info[:id] logger.info "begin to upload ..." upload_app logger.info "end upload " logger_info_dividing_line logger_info_app_short_and_qrcode dingtalk_notifier upload_mapping_file_with_publish logger_info_blank_line clean_files end |
#update_app_info ⇒ Object
148 149 150 151 152 153 154 155 156 |
# File 'lib/fir/util/publish.rb', line 148 def update_app_info update_info = { short: @short, passwd: @passwd, is_opened: @is_opened }.compact return if update_info.blank? logger.info 'Updating app info......' patch fir_api[:app_url] + "/#{@app_id}", update_info.merge(api_token: @token) end |
#upload_app ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/fir/util/publish.rb', line 39 def upload_app @icon_cert = @uploading_info[:cert][:icon] @binary_cert = @uploading_info[:cert][:binary] logger.debug "in upload app begin to upload icon" upload_app_icon unless @skip_update_icon logger.debug "in upload icon finished" logger.debug "in upload app begin to upload binary" @app_uploaded_callback_data = upload_app_binary logger.debug "in upload binary" @release_id = @app_uploaded_callback_data[:release_id] force_pin_release if @force_pin_history logger.info "App id is #{@app_id}" logger.info "Release id is #{@app_uploaded_callback_data[:release_id]}" upload_device_info update_app_info fetch_app_info end |
#upload_device_info ⇒ Object
138 139 140 141 142 143 144 145 146 |
# File 'lib/fir/util/publish.rb', line 138 def upload_device_info return if @app_info[:devices].blank? logger.info 'Updating devices info......' post fir_api[:udids_url], key: @binary_cert[:key], udids: @app_info[:devices].join(','), api_token: @token end |
#upload_file(postfix) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/fir/util/publish.rb', line 69 def upload_file(postfix) logger.info "Uploading app #{postfix}......" url = @uploading_info[:cert][postfix.to_sym][:upload_url] info = send("uploading_#{postfix}_info") logger.debug "url = #{url}, info = #{info}" uploaded_info = post(url, info.merge(manual_callback: true), params_to_json: false, header: nil) rescue StandardError => e logger.error "Uploading app #{postfix} failed" exit 1 end |
#upload_mapping_file_with_publish ⇒ Object
181 182 183 184 185 186 187 188 189 190 |
# File 'lib/fir/util/publish.rb', line 181 def upload_mapping_file_with_publish return if ![:mappingfile] || ![:proj] logger_info_blank_line mapping [:mappingfile], proj: [:proj], build: @app_info[:build], version: @app_info[:version], token: @token end |
#uploading_binary_info ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/fir/util/publish.rb', line 123 def uploading_binary_info { key: @binary_cert[:key], token: @binary_cert[:token], file: File.new(@file_path, 'rb'), # Custom variables 'x:name' => @app_info[:display_name] || @app_info[:name], 'x:build' => @app_info[:build], 'x:version' => @app_info[:version], 'x:changelog' => @changelog, 'x:release_type' => @app_info[:release_type], 'x:distribution_name' => @app_info[:distribution_name] } end |
#uploading_icon_info ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/fir/util/publish.rb', line 82 def uploading_icon_info large_icon_path = @app_info[:icons].max_by { |f| File.size(f) } @uncrushed_icon_path = @specify_icon_file_path || convert_icon(large_icon_path) { key: @icon_cert[:key], token: @icon_cert[:token], file: File.new(@uncrushed_icon_path, 'rb'), 'x:is_converted' => '1' } end |