File: PC-Phone USB Sync/code/PC-Phone USB Sync--source/__sloc__.py
#!/usr/bin/python
"""
A simple limited-scope source-code line count (a.k.a. sloc) script.
See in-app About tab for license, attribution, and other logistics.
"""
import sys, os, sys
from glob import glob
# '*.py*' includes 2.X .pyc's (moot here)
mains = glob('*.py') + glob('*.kv')
# *.spec are gray (generated and edited)
extras1 = glob('*.spec') + glob('*.xml') + glob('res/values/*.xml')
extras1+= glob('pc-build/*.py') + glob('pc-build/*.spec')
extras1+= glob('usbsync-pc/*.desktop')
extras1+= glob('../_website/*.py') + glob('../_website/*.sh') # [1.5] moved up
extras1+= glob('../_website/PC-Phone USB Sync/*.py')
extras1+= glob('../_website/PC-Phone USB Sync/+screenshots/*.sh')
extras1+= glob('../_website/PC-Phone USB Sync/+screenshots/_etc/*/*.sh')
extras1+= glob('_dev-misc/UPLOAD-KEY/*.sh')
# omit special-case dup for 'open source' publication [1.3.0] ([1.3.2]|[1.4.0]: trimmed)
if os.path.exists('../_website/PC-Phone USB Sync/main.py'):
extras1.remove('../_website/PC-Phone USB Sync/main.py')
# embedded system (forked/tweaked); ppus-shutil.py is gray (a copy)
extras2 = glob('mergeall/*.py')
# in-app docs (but not _website docs)
extras3 = glob('*.txt') + glob('*.html')
tally = count = 0
def segment(files, accum=True):
global tally, count
stally, scount = 0, 0
for fname in sorted(files):
if True or not fname.startswith('__sloc'): # include this script too,
fobj = open(fname, 'r') # but updating its output changes it! -
lcnt = len(fobj.readlines()) # run twice if add/del files
stally += lcnt
scount += 1
print(f'{fname} => {lcnt:,}')
print(f'Segment sloc in {scount:,} file(s): {stally:,}\n')
if accum:
tally += stally
count += scount
segment(mains)
segment(extras1, accum=True)
segment(extras2, accum=True)
segment(extras3, accum=False)
print(f'Total sloc in {count:,} files: {tally:,} '
'(sans some doc txts + website htmls + showcode mods + build mods)')
if sys.platform.startswith('win'):
input('Press Enter') # if clicked
"""
================================================================================
Example output - and current source-code counts/manifest:
'''
Not counting mods to build/dists template files in ./.buildozer: see ../HOW-*.txt
Added here in 1.5.0:
1k lines, 3 files: __sloc__.py, pc-build/build-source.py, website/_publish--*.sh,
Added here after last 1.4.0 android app build:
_website/PPUS/+screenshots/_generate.sh grew 2 lines for new galleries
pc-build/build.py grew 7 lines for late Linux build changes
'''
__sloc__.py => 142
main.py => 10,621
pcphoneusbsync.kv => 2,003
purgatory.py => 64
run_script_as_process.py => 61
run_script_as_service.py => 296
run_script_as_thread.py => 371
Segment sloc in 7 file(s): 13,558
../_website/PC-Phone USB Sync/+screenshots/_etc/windows-wsl-linux/_generate.sh => 29
../_website/PC-Phone USB Sync/+screenshots/_generate.sh => 34
../_website/PC-Phone USB Sync/normalize-unicode-filenames.py => 117
../_website/PC-Phone USB Sync/restore-symlinks-from-backup.py => 124
../_website/_analytics.py => 25
../_website/_publish--ADDS.sh => 126
../_website/_publish--BASE.sh => 116
_dev-misc/UPLOAD-KEY/set-env-vars--PRIOR.sh => 27
_dev-misc/UPLOAD-KEY/set-env-vars.sh => 36
buildozer.spec => 1,049
fileprovider_paths.xml => 3
manifest-insert-application-attrs.xml => 3
manifest-manual-application-postattrs.xml => 59
manifest-unused-manifest-preapplication.xml => 7
pc-build/_Windows--PC-Phone USB Sync.spec => 91
pc-build/_macOS-Catalina--PC-Phone USB Sync.spec => 72
pc-build/_macOS-Sequoia--PC-Phone USB Sync.spec => 72
pc-build/_winver-maker.py => 20
pc-build/build-source.py => 182
pc-build/build.py => 972
res/values/styles.xml => 13
usbsync-pc/ppus-linux.desktop => 40
Segment sloc in 22 file(s): 3,217
mergeall/__sloc__.py => 117
mergeall/__version__.py => 7
mergeall/autoflush.py => 49
mergeall/backup.py => 1,138
mergeall/cpall.py => 729
mergeall/deltas.py => 869
mergeall/diffall.py => 471
mergeall/dirdiff.py => 134
mergeall/fix-fat-dst-modtimes.py => 136
mergeall/fix-nonportable-filenames.py => 239
mergeall/fixfrozenpaths.py => 119
mergeall/fixlongpaths.py => 486
mergeall/fixunicodedups.py => 741
mergeall/guimaker_pp4e.py => 113
mergeall/launch-mergeall-Console.py => 387
mergeall/mergeall.py => 2,052
mergeall/mergeall_configs.py => 425
mergeall/nuke-cruft-files.py => 633
mergeall/ppus_shutil.py => 1,441
mergeall/rollback.py => 161
mergeall/scandir_defunct.py => 320
mergeall/skipcruft.py => 135
Segment sloc in 22 file(s): 10,902
about-template.txt => 52
help-message.txt => 563
terms-of-use.txt => 17
Segment sloc in 3 file(s): 632
Total sloc in 51 files: 27,677 (sans some doc txts + website htmls + showcode mods + build mods)
[EOF]
================================================================================
"""