| #!/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 |