Followers
0
Following
0
Joined
Last Online
-
sreyemnayr
Here's the re-worked script, which throws as many of those dummies at the top of each file as it needs to stop the madness.
EDIT: There are some problems with this method as well, as it bounces the lines indicating the encoding style, which breaks a bunch of stuff... I ended up having to regex replace them back to the top, but will work this script out to do it better later. Just be aware that this will happen!
# Change these: pylib_path1 = '/path/to/PythonistaKit.framework/pylib' pylib_path2 = '/path/to/PythonistaKit.framework/pylib_ext' import shutil import os import subprocess def check_is_executable(file_path): file_output = subprocess.check_output(['file', file_path]) if 'executable' in file_output: return True, file_output return False, file_output def fix_executable(file_path): with open(file_path, 'r') as f: source = f.read() with open(file_path, 'w') as f: f.write('#\input texinfo\n' + source) is_executable, out = check_is_executable(file_path) return not is_executable def fix_pylib(pylib_path, dry_run=False): for path, dirs, files in os.walk(pylib_path): for filename in files: full_path = full_path = os.path.join(path, filename) is_executable, file_output = check_is_executable(full_path) if is_executable: extension = os.path.splitext(full_path)[1].lower() if extension == '.py' or extension == '.pym' or filename == 'command_template': if dry_run: print '### Executable found: %s' % (filename,) else: print 'Fixing %s...' % (filename,) fixed = False counter = 0 while not fixed: fixed = fix_executable(full_path) counter = counter + 1 print 'Fixed with '+str(counter)+' dummy lines.' else: print '### Executable found, but does not seem to be Python code: %s' % (full_path,) if __name__ == '__main__': fix_pylib(pylib_path1) fix_pylib(pylib_path2)```