| # Copyright 2020 The Chromium Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| from recipe_engine import recipe_api | |
| class FirebaseApi(recipe_api.RecipeApi): | |
| """Provides utilities to upload docs to Firebase. | |
| This API only works on Linux machines. | |
| """ | |
| def deploy_docs(self, env, env_prefixes, docs_path, project): | |
| """Deploys docs to Firebase. | |
| Args: | |
| env(dict): Current environment variables. | |
| env_prefixes(dict): Current environment prefixes variables. | |
| docs_path(Path): A path with the directory containing the docs to | |
| upload. | |
| project(str): A string with the firebase project where docs will be | |
| uploaded. | |
| """ | |
| service_account = self.m.service_account.default() | |
| access_token = service_account.get_access_token( | |
| scopes=["https://www.googleapis.com/auth/cloud-platform"] | |
| ) | |
| access_token_path = self.m.path.mkstemp() | |
| self.m.file.write_text( | |
| "write token", access_token_path, access_token, include_log=False | |
| ) | |
| env['TOKEN_PATH'] = access_token_path | |
| env['GCP_PROJECT'] = project | |
| with self.m.step.nest('Deploy docs'): | |
| with self.m.context(env=env, env_prefixes=env_prefixes, cwd=docs_path): | |
| resource_name = self.resource('firebase_deploy.sh') | |
| self.m.step('Set execute permission', ['chmod', '755', resource_name]) | |
| self.m.step('Firebase deploy', [resource_name]) |