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))