You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
713 B
25 lines
713 B
2 years ago
|
#!/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
|