Class: Fastlane::Actions::FirebaseManagementApiAddAppAction
- Inherits:
-
Action
- Object
- Action
- Fastlane::Actions::FirebaseManagementApiAddAppAction
- Defined in:
- lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb
Class Method Summary collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .is_supported?(platform) ⇒ Boolean
- .return_value ⇒ Object
- .run(params) ⇒ Object
Class Method Details
.authors ⇒ Object
118 119 120 |
# File 'lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb', line 118 def self. ["Ackee, s.r.o."] end |
.available_options ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb', line 131 def self. [ FastlaneCore::ConfigItem.new(key: :email, env_name: "FIREBASE_EMAIL", description: "User's email to identify stored credentials", optional: true), FastlaneCore::ConfigItem.new(key: :client_secret_json_path, env_name: "FIREBASE_CLIENT_SECRET_JSON_PATH", description: "Path to client secret json file", optional: true), FastlaneCore::ConfigItem.new(key: :service_account_json_path, env_name: "FIREBASE_SERVICE_ACCOUNT_JSON_PATH", description: "Path to service account json key", optional: true), FastlaneCore::ConfigItem.new(key: :project_id, env_name: "FIREBASE_PROJECT_ID", description: "Project id", optional: true), FastlaneCore::ConfigItem.new(key: :download_config, env_name: "FIREBASE_DOWNLOAD_CONFIG", description: "Should download config for created client", optional: false, is_string: false, default_value: false), FastlaneCore::ConfigItem.new(key: :type, env_name: "FIREBASE_TYPE", description: "Type of client (ios, android)", verify_block: proc do |value| types = [:ios, :android] UI.user_error!("Type must be in #{types}") unless types.include?(value.to_sym) end ), FastlaneCore::ConfigItem.new(key: :bundle_id, env_name: "FIREBASE_BUNDLE_ID", description: "Bundle ID (package name)", optional: false), FastlaneCore::ConfigItem.new(key: :display_name, env_name: "FIREBASE_DISPLAY_NAME", description: "Display name", optional: true), FastlaneCore::ConfigItem.new(key: :output_path, env_name: "FIREBASE_OUTPUT_PATH", description: "Path for the downloaded config", optional: false, default_value: "./"), FastlaneCore::ConfigItem.new(key: :output_name, env_name: "FIREBASE_OUTPUT_NAME", description: "Name of the downloaded file", optional: true) ] end |
.description ⇒ Object
114 115 116 |
# File 'lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb', line 114 def self.description "Add new app to Firebase project" end |
.details ⇒ Object
126 127 128 129 |
# File 'lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb', line 126 def self.details # Optional: "Firebase plugin helps you list your projects, create applications and download configuration files." end |
.is_supported?(platform) ⇒ Boolean
191 192 193 194 195 196 197 |
# File 'lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb', line 191 def self.is_supported?(platform) # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example) # See: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Platforms.md # # [:ios, :mac, :android].include?(platform) true end |
.return_value ⇒ Object
122 123 124 |
# File 'lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb', line 122 def self.return_value # If your method provides a return value, you can describe here what it does end |
.run(params) ⇒ Object
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 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 |
# File 'lib/fastlane/plugin/firebase_management_api/actions/firebase_add_app_action.rb', line 5 def self.run(params) manager = FirebaseManagementApi::Manager.new # login api = nil if params[:service_account_json_path] != nil then api = manager.serviceAccountLogin(params[:service_account_json_path]) elsif params[:email] != nil && params[:client_secret_json_path] != nil then api = manager.userLogin(params[:email], params[:client_secret_json_path]) else UI.error "You must define service_account_json_path or email with client_secret_json_path." return nil end # select project project_id = params[:project_id] || manager.select_project(nil)["projectId"] # select type type = params[:type].to_sym bundle_id = params[:bundle_id] display_name = params[:display_name] case type when :ios # download apps for project apps = api.ios_app_list(project_id) # search for newly created app app = apps.detect {|app| app["bundleId"] == bundle_id } UI.success "Start detect app " if app != nil then UI.success "You already have app with id: #{app["appId"]}" else UI.success "Start create new app " # create new ios app on Firebase api.add_ios_app(project_id, bundle_id, display_name) # App creation is a long-running operation. # Creation endpoint returns operation ID which should be used to check # the result of the operation. This requires another Google API to be # enabled and other stuff to do so just wait for 3 seconds here, fetch # apps from Firebase and check whether the new app is there. sleep 3 # download apps for project apps = api.ios_app_list(project_id) # search for newly created app app = apps.detect {|app| app["bundleId"] == bundle_id } # present result to user if app != nil then UI.success "New app with id: #{app["appId"]} successfully created" else UI.crash! "Unable to create new app" end end when :android # download apps for project apps = api.android_app_list(project_id) # search for newly created app app = apps.detect {|app| app["packageName"] == bundle_id } if app != nil then UI.success "You already have app with id: #{app["appId"]}" else # create new android app on Firebase api.add_android_app(project_id, bundle_id, display_name) # see reason described above sleep 3 # download apps for project apps = api.android_app_list(project_id) # search for newly created app app = apps.detect {|app| app["packageName"] == bundle_id } # present result to user if app != nil then UI.success "New app with id: #{app["appId"]} successfully created" else UI.crash! "Unable to create new app" end end end if params[:download_config] then #Download config Actions::FirebaseManagementApiDownloadConfigAction.run( service_account_json_path: params[:service_account_json_path], project_id: project_id, app_id: app["appId"], type: type, output_path: params[:output_path] ) end end |