| #!/bin/bash | |
| INTERPRETER_UNDER_TEST="$1" | |
| if [[ ! -x "${INTERPRETER_UNDER_TEST}" ]]; then | |
| echo "Interpreter must be the command line argument." | |
| exit 4 | |
| fi | |
| EXECUTABLE="$0" exec "${INTERPRETER_UNDER_TEST}" -E - <<END_OF_PYTHON | |
| import os | |
| import zipfile | |
| namespace = {} | |
| filename = os.environ['EXECUTABLE'] | |
| print(f'Opening {filename} as a zipfile.') | |
| with zipfile.ZipFile(filename, mode='r') as exe_zip: | |
| for file_info in exe_zip.infolist(): | |
| data = exe_zip.read(file_info) | |
| exec(data, namespace, namespace) | |
| break # Only use the first file in the archive. | |
| print('Favorite number in executable:', namespace["FAVORITE_NUMBER"]) | |
| ### Archive contents will be appended after this file. ### | |
| END_OF_PYTHON |