mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	 b1b4d7b819
			
		
	
	
		b1b4d7b819
		
			
		
	
	
	
	
		
			
			This way bash won't expand and post-process variable values in any way. The changes are driven with [`shellcheck`](https://github.com/koalaman/shellcheck)
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| set -e
 | |
| set +x
 | |
| 
 | |
| trap "cd $(pwd -P)" EXIT
 | |
| cd "$(dirname "$0")"
 | |
| SCRIPT_PATH=$(pwd -P)
 | |
| 
 | |
| main() {
 | |
|   if [[ ("$1" == "-h") || ("$1" == "--help") ]]; then
 | |
|     echo "usage: $(basename "$0") [output-absolute-path]"
 | |
|     echo
 | |
|     echo "Generate distributable .zip archive from ./output folder that was previously downloaded."
 | |
|     echo
 | |
|     exit 0
 | |
|   fi
 | |
| 
 | |
|   ZIP_PATH=$1
 | |
| 
 | |
|   if [[ $ZIP_PATH != /* ]]; then
 | |
|     echo "ERROR: path $ZIP_PATH is not absolute"
 | |
|     exit 1
 | |
|   fi
 | |
|   if [[ $ZIP_PATH != *.zip ]]; then
 | |
|     echo "ERROR: path $ZIP_PATH must have .zip extension"
 | |
|     exit 1
 | |
|   fi
 | |
|   if [[ -f $ZIP_PATH ]]; then
 | |
|     echo "ERROR: path $ZIP_PATH exists; can't do anything."
 | |
|     exit 1
 | |
|   fi
 | |
|   if ! [[ -d $(dirname "$ZIP_PATH") ]]; then
 | |
|     echo "ERROR: folder for path $($ZIP_PATH) does not exist."
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   BUILD_TYPE=$2
 | |
|   if [[ "${BUILD_TYPE}" == "--compile"* ]]; then
 | |
|     archive_compiled_chromium "${BUILD_TYPE}"
 | |
|   elif [[ "${BUILD_TYPE}" == "--mirror"* ]]; then
 | |
|     archive_mirrored_chromium "${BUILD_TYPE}"
 | |
|   else
 | |
|     echo "ERROR: unknown build type - ${BUILD_TYPE}"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   cd "${SCRIPT_PATH}"
 | |
|   cp output/build.zip "$ZIP_PATH"
 | |
| }
 | |
| 
 | |
| function archive_compiled_chromium() {
 | |
|   CHROMIUM_FOLDER_NAME=""
 | |
|   CHROMIUM_FILES_TO_ARCHIVE=()
 | |
| 
 | |
|   if [[ $1 == "--compile-mac"* ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-mac"
 | |
|     CHROMIUM_FILES_TO_ARCHIVE=("Chromium.app")
 | |
|   elif [[ $1 == "--compile-linux" ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-linux"
 | |
|     # Run python script and convert output to array.
 | |
|     IFS=$'\n' CHROMIUM_FILES_TO_ARCHIVE=($(python "${SCRIPT_PATH}/compute_files_to_archive.py" 64bit "${CR_CHECKOUT_PATH}/src/chrome/tools/build/linux/FILES.cfg"))
 | |
|     unset IFS
 | |
|   elif [[ $1 == "--compile-win32" ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-win"
 | |
|     IFS=$'\n\r' CHROMIUM_FILES_TO_ARCHIVE=($(python "${SCRIPT_PATH}/compute_files_to_archive.py" 32bit "${CR_CHECKOUT_PATH}/src/chrome/tools/build/win/FILES.cfg"))
 | |
|     unset IFS
 | |
|   elif [[ $1 == "--compile-win64" ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-win"
 | |
|     IFS=$'\n\r' CHROMIUM_FILES_TO_ARCHIVE=($(python "${SCRIPT_PATH}/compute_files_to_archive.py" 64bit "${CR_CHECKOUT_PATH}/src/chrome/tools/build/win/FILES.cfg"))
 | |
|     unset IFS
 | |
|   else
 | |
|     echo "ERROR: unknown command, use --help for details"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   # Prepare resulting archive.
 | |
|   cd "$SCRIPT_PATH"
 | |
|   rm -rf output
 | |
|   mkdir -p "output/${CHROMIUM_FOLDER_NAME}"
 | |
| 
 | |
|   # On Mac, use 'ditto' to copy directories instead of 'cp'.
 | |
|   COPY_COMMAND="cp -R"
 | |
|   if [[ $(uname) == "Darwin" ]]; then
 | |
|     COPY_COMMAND="ditto"
 | |
|   fi
 | |
| 
 | |
|   for ((i = 0; i < ${#CHROMIUM_FILES_TO_ARCHIVE[@]}; i++)) do
 | |
|     file="${CHROMIUM_FILES_TO_ARCHIVE[$i]}"
 | |
|     mkdir -p "output/${CHROMIUM_FOLDER_NAME}/$(dirname "${file}")"
 | |
|     $COPY_COMMAND "${CR_CHECKOUT_PATH}/src/out/Default/${file}" "output/${CHROMIUM_FOLDER_NAME}/${file}"
 | |
|   done
 | |
| 
 | |
|   if [[ $1 == "--compile-win"* ]]; then
 | |
|     $COPY_COMMAND "${CR_CHECKOUT_PATH}/src/out/Default/"*.manifest "output/${CHROMIUM_FOLDER_NAME}/"
 | |
|   fi
 | |
| 
 | |
|   cd output
 | |
|   zip --symlinks -r build.zip "${CHROMIUM_FOLDER_NAME}"
 | |
| }
 | |
| 
 | |
| archive_mirrored_chromium() {
 | |
|   cd "${SCRIPT_PATH}/output"
 | |
| 
 | |
|   CHROMIUM_FOLDER_NAME=""
 | |
|   CHROMIUM_FILES_TO_REMOVE=()
 | |
| 
 | |
|   PLATFORM="$1"
 | |
|   if [[ "${PLATFORM}" == "--mirror-win32" ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-win"
 | |
|     CHROMIUM_FILES_TO_REMOVE+=("chrome-win/interactive_ui_tests.exe")
 | |
|   elif [[ "${PLATFORM}" == "--mirror-win64" ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-win"
 | |
|     CHROMIUM_FILES_TO_REMOVE+=("chrome-win/interactive_ui_tests.exe")
 | |
|   elif [[ "${PLATFORM}" == "--mirror-mac" ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-mac"
 | |
|   elif [[ "${PLATFORM}" == "--mirror-linux" ]]; then
 | |
|     CHROMIUM_FOLDER_NAME="chrome-linux"
 | |
|   else
 | |
|     echo "ERROR: unknown platform to build: $PLATFORM"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   for file in ${CHROMIUM_FILES_TO_REMOVE[@]}; do
 | |
|     rm -f "${file}"
 | |
|   done
 | |
| 
 | |
|   zip --symlinks -r build.zip "${CHROMIUM_FOLDER_NAME}"
 | |
| }
 | |
| 
 | |
| main "$@"
 |