File: android-deltas-sync/_etc/_rebrand-oct22.py
""" ==================================================================== (Package admin script - not for general use, Oct-2022 [1.2]) Change all occurrences of the prior program name in examples, etc. "Android Deltas Scripts" => "Android Deltas Sync" "android-deltas-scripts" => "android-deltas-sync" This isn't the same as a rerun, but the examples worked as shown. This won't catch names that straddle lines; re would, but a test using the following showed no such spanners in the target trees: retitle = re.compile(r'Android(\s+)Deltas(\s+)Scripts') ntitle = len(retitle.findall(text)) text = retitle.sub('Android\1Deltas\2Sync', text) Typical output: $ cd $A $ py3 _etc/_rebrand-oct22.py _etc | more Folder: _etc ...File "_publish.sh": 0 title, 35 folder ...File "convertunicode.py": 1 title, 3 folder Folder: _etc/screenshots ...File "index.html": 2 title, 0 folder Folder: _etc/screenshots/_thumbspage Folder: _etc/gadgetpics ...... Files: 324, Changed: 82, Titles: 50, Folders: 13514 Caution: if you don't exclude this script in skipfile() below, this script will UPDATE ITSELF... after which it will always pointlessly but harmlessly update both the files it already updated, as well as any files you may have updated manually earlier (it will change Sync => Sync in all, on every run). This effect will be further obfuscated if you happen to have this script's original form open in a text editor, and resave it as such between runs. Because it happened. Related: the triage on this spawned Mergeall's post-diffall-auto-compare.py. ==================================================================== """ import sys, os, re verbose = lambda *a: None # or print to show UPDATE = 1 # 0=listonly, 1=update topfolder = sys.argv[1] #os.chdir(topfolder) #fileshere = os.listdir('.') def skipfile(filename): return ( (filename in ['.DS_Store', '_rebrand-oct22.py']) or (re.match('_README.*\\.html', filename)) or (os.path.splitext(filename)[1].lower() in ['.zip', '.gif', '.png', '.jpg', '.pyc']) ) nfiles = nchanged = nalltitle = nallfolder = 0 for (folder, subs, files) in os.walk(topfolder): print('Folder:', folder) for filename in files: filepath = os.path.join(folder, filename) if skipfile(filename): verbose('...Skipped:', filename) continue nfiles += 1 file = open(filepath, 'r', encoding='utf8') text = file.read() file.close() ntitle = text.count("Android Deltas Scripts") nfolder = text.count("android-deltas-scripts") if ntitle + nfolder > 0: nchanged += 1 nalltitle += ntitle nallfolder += nfolder print('...File "%s": %d title, %d folder' % (filename, ntitle, nfolder)) # no: discards too much history #text = text.replace("Android Deltas Scripts 1.0", "Android Deltas Sync 1.2") #text = text.replace("Android Deltas Scripts 1.1", "Android Deltas Sync 1.2") text = text.replace("Android Deltas Scripts", "Android Deltas Sync") text = text.replace("android-deltas-scripts", "android-deltas-sync") if UPDATE: file = open(filepath, 'w', encoding='utf8') file.write(text) file.close() summary = 'Files: %s, Changed: %d, Titles: %d, Folders: %d' print(summary % (nfiles, nchanged, nalltitle, nallfolder))