| #!/usr/bin/env bash |
| |
| # Copyright 2022 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| set -e |
| |
| # Use the stateful partition to download the new custom chrome image because it |
| # has more space. |
| CUSTOM_CHROME_DIR="/mnt/stateful_partition/custom_chrome" |
| # Archives the non-custom chrome build that was running before |
| # download_custom_chrome.sh. This is so that it can be restored in the future if |
| # desired via revert_custom_chrome.sh. |
| OLD_CHROME_ARCHIVE_DIR="/mnt/stateful_partition/old_chrome_archive" |
| CHROME_EXE_DIR="/opt/google/chrome" |
| CUSTOM_CHROME_FILE_INDICATOR="custom_chrome" |
| |
| main() { |
| local arg_count=$# |
| if [ $arg_count -lt 1 ]; then |
| print_help |
| exit 1 |
| fi |
| |
| clear_and_create_directory $CUSTOM_CHROME_DIR |
| cd $CUSTOM_CHROME_DIR |
| curl -L --progress-bar https://storage.googleapis.com/chromeos-throw-away-bucket/easy-chrome/${1}/chrome.tar.zst | tar --zstd -xvf - |
| # Use a blank file as an indicator that this is a custom chrome build. This |
| # helps if download_custom_chrome.sh is run again because the indicator |
| # tells the script that a custom chrome build is already running in |
| # /opt/google/chrome, so it should not be archived in the |
| # OLD_CHROME_ARCHIVE_DIR. |
| touch $CUSTOM_CHROME_DIR/$CUSTOM_CHROME_FILE_INDICATOR |
| |
| stop ui || true |
| |
| if [ ! -f "$CHROME_EXE_DIR/$CUSTOM_CHROME_FILE_INDICATOR" ]; then |
| clear_and_create_directory $OLD_CHROME_ARCHIVE_DIR |
| cp -r ${CHROME_EXE_DIR}/* $OLD_CHROME_ARCHIVE_DIR |
| fi |
| |
| cp -r ${CUSTOM_CHROME_DIR}/* $CHROME_EXE_DIR |
| |
| start ui |
| |
| rm -rf $CUSTOM_CHROME_DIR |
| } |
| |
| print_help() { |
| cat <<END_OF_HELP |
| |
| Usage: download_custom_chrome.sh <easy-chrome bucket> |
| |
| Example: download_custom_chrome.sh esum_KNG60 |
| |
| Downloads and runs a custom chrome build that has been uploaded to |
| https://storage.googleapis.com/chromeos-throw-away-bucket/easy-chrome/... |
| |
| The script's only argument dictates the path within the storage bucket. |
| In the example above, the full url would become: |
| https://storage.googleapis.com/chromeos-throw-away-bucket/easy-chrome/esum_KNG60/chrome.tar.zst |
| |
| Note it is recommended to add several randomly generated characters to the end |
| of your bucket name as in the example above. |
| |
| After the script finishes, the new build should be running if there were no |
| errors. It should be run as the "root" user on the Chromebook itself. It can be |
| run from any directory. |
| END_OF_HELP |
| |
| } |
| |
| clear_and_create_directory() { |
| rm -rf $1 |
| mkdir -p $1 |
| } |
| |
| |
| main "$@" |