| # Copyright 2021 Google LLC |
| |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| |
| import pathlib |
| import shutil |
| import subprocess |
| import tempfile |
| |
| import describe |
| import changesummary |
| |
| |
| SCRIPTS_DIR = pathlib.Path(__file__).parent.resolve() |
| DISCOVERY_DOC_DIR = ( |
| SCRIPTS_DIR / ".." / "googleapiclient" / "discovery_cache" / "documents" |
| ) |
| REFERENCE_DOC_DIR = SCRIPTS_DIR / ".." / "docs" / "dyn" |
| TEMP_DIR = SCRIPTS_DIR / "temp" |
| |
| # Clear discovery documents and reference documents directory |
| shutil.rmtree(DISCOVERY_DOC_DIR, ignore_errors=True) |
| shutil.rmtree(REFERENCE_DOC_DIR, ignore_errors=True) |
| |
| # Clear temporary directory |
| shutil.rmtree(TEMP_DIR, ignore_errors=True) |
| |
| # Check out a fresh copy |
| subprocess.call(["git", "checkout", DISCOVERY_DOC_DIR]) |
| subprocess.call(["git", "checkout", REFERENCE_DOC_DIR]) |
| |
| # Snapshot current discovery artifacts to a temporary directory |
| with tempfile.TemporaryDirectory() as current_discovery_doc_dir: |
| shutil.copytree(DISCOVERY_DOC_DIR, current_discovery_doc_dir, dirs_exist_ok=True) |
| |
| # Download discovery artifacts and generate documentation |
| describe.generate_all_api_documents() |
| |
| # Get a list of files changed using `git diff` |
| git_diff_output = subprocess.check_output( |
| [ |
| "git", |
| "diff", |
| "origin/master", |
| "--name-only", |
| "--", |
| DISCOVERY_DOC_DIR / "*.json", |
| REFERENCE_DOC_DIR / "*.html", |
| REFERENCE_DOC_DIR / "*.md", |
| ], |
| universal_newlines=True, |
| ) |
| |
| # Create lists of the changed files |
| all_changed_files = [ |
| pathlib.Path(file_name).name for file_name in git_diff_output.split("\n") |
| ] |
| json_changed_files = [file for file in all_changed_files if file.endswith(".json")] |
| |
| # Create temporary directory |
| pathlib.Path(TEMP_DIR).mkdir() |
| |
| # Analyze the changes in discovery artifacts using the changesummary module |
| changesummary.ChangeSummary( |
| DISCOVERY_DOC_DIR, current_discovery_doc_dir, TEMP_DIR, json_changed_files |
| ).detect_discovery_changes() |
| |
| # Write a list of the files changed to a file called `changed files` which will be used in the `createcommits.sh` script. |
| with open(TEMP_DIR / "changed_files", "w") as f: |
| f.writelines("\n".join(all_changed_files)) |