From edf31f9a7c22bea4076791864fa315fcbb39c2b3 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Mon, 23 Oct 2023 13:51:11 -0400 Subject: [PATCH] Add port-job for making clipclear.py platform-specific Former-commit-id: 6aafd4dfcddefc31bf61d3018b63ef48c156d8a8 Former-commit-id: c016e6872d71bc4bb347d85cf964dd9e7b7fe149 --- lib/clipclear.py | 7 +++--- port-jobs/CLIPBOARD.py | 54 ++++++++++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/lib/clipclear.py b/lib/clipclear.py index e23f99b..073c2bc 100755 --- a/lib/clipclear.py +++ b/lib/clipclear.py @@ -6,12 +6,12 @@ from time import sleep # set period of time to wait before attempting to clear clipboard sleep(30) - -# store a hash of the current clipboard contents for later comparison +# enable the storing of clipboard contents hash for later comparison _hash_paste = sha512() + +# PORT START CLIPCLEAR if argv[2] == 'wsl': _hash_paste.update(run(('powershell.exe', '-c', 'Get-Clipboard'), stdout=PIPE).stdout.strip()) - # if the supplied hash matches the hash of the current clipboard contents, clear the clipboard if argv[1] == _hash_paste.hexdigest(): run(('powershell.exe', '-c', 'Set-Clipboard')) @@ -39,3 +39,4 @@ elif argv[2] == 'x11': _hash_paste.update(run(('xclip', '-o', '-sel', 'c'), stdout=PIPE).stdout.strip()) if argv[1] == _hash_paste.hexdigest(): run(('xclip', '-i', '/dev/null', '-sel', 'c')) +# PORT END CLIPCLEAR diff --git a/port-jobs/CLIPBOARD.py b/port-jobs/CLIPBOARD.py index 31ae706..6e927af 100755 --- a/port-jobs/CLIPBOARD.py +++ b/port-jobs/CLIPBOARD.py @@ -3,42 +3,60 @@ import re from sys import argv, exit as s_exit # read arguments -arguments, replacement = argv[1:], None +arguments, clip_replacement, clear_replacement = argv[1:], None, None # define replacement text depending on arguments if len(arguments) > 0: if arguments[0] == 'WSL': - replacement = """run(('powershell.exe', '-c', "Set-Clipboard '" + _copy_subject.replace("'", "''") + "'")) + clip_replacement = """run(('powershell.exe', '-c', "Set-Clipboard '" + _copy_subject.replace("'", "''") + "'")) Popen((realpath(__file__).rsplit('/', 1)[0] + "/clipclear.py", _hash.hexdigest(), 'wsl'), stdout=DEVNULL, stderr=DEVNULL)""" + clear_replacement = """_hash_paste.update(run(('powershell.exe', '-c', 'Get-Clipboard'), stdout=PIPE).stdout.strip()) +if argv[1] == _hash_paste.hexdigest(): + run(('powershell.exe', '-c', 'Set-Clipboard'))""" elif arguments[0] == 'MAC': - replacement = """run('pbcopy', stdin=Popen(('printf', '%b', _copy_subject.replace('\\\\\\', '\\\\\\\\\\\\\\')), stdout=PIPE).stdout) + clip_replacement = """run('pbcopy', stdin=Popen(('printf', '%b', _copy_subject.replace('\\\\\\', '\\\\\\\\\\\\\\')), stdout=PIPE).stdout) Popen((realpath(__file__).rsplit('/', 1)[0] + "/clipclear.py", _hash.hexdigest(), 'mac'))""" + clear_replacement = """_hash_paste.update(run(('pbpaste'), stdout=PIPE).stdout.strip()) +if argv[1] == _hash_paste.hexdigest(): + run('pbcopy', input=b'')""" elif arguments[0] == 'HAIKU': - replacement = """run(('clipboard', '-c', _copy_subject)) + clip_replacement = """run(('clipboard', '-c', _copy_subject)) Popen((realpath(__file__).rsplit('/', 1)[0] + "/clipclear.py", _hash.hexdigest(), 'haiku'))""" + clear_replacement = """_hash_paste.update(run(('clipboard', '-p'), stdout=PIPE).stdout.strip()) +if argv[1] == _hash_paste.hexdigest(): + run(('clipboard', '-r'))""" elif arguments[0] == 'TERMUX': - replacement = """run(('termux-clipboard-set', _copy_subject)) + clip_replacement = """run(('termux-clipboard-set', _copy_subject)) Popen((realpath(__file__).rsplit('/', 1)[0] + "/clipclear.py", _hash.hexdigest(), 'termux'))""" + clear_replacement = """_hash_paste.update(run(('termux-clipboard-get'), stdout=PIPE).stdout.strip()) +if argv[1] == _hash_paste.hexdigest(): + run(("termux-clipboard-set", "''"))""" elif arguments[0] in ('LINUX', 'BSD'): - replacement = """if 'WAYLAND_DISPLAY' in environ: + clip_replacement = """if 'WAYLAND_DISPLAY' in environ: run('wl-copy', stdin=Popen(('printf', '%b', _copy_subject.replace('\\\\\\', '\\\\\\\\\\\\\\')), stdout=PIPE).stdout) Popen((realpath(__file__).rsplit('/', 1)[0] + "/clipclear.py", _hash.hexdigest(), 'wayland')) else: run(('xclip', '-sel', 'c'), stdin=Popen(('printf', '%b', _copy_subject.replace('\\\\\\', '\\\\\\\\\\\\\\')), stdout=PIPE).stdout) Popen((realpath(__file__).rsplit('/', 1)[0] + "/clipclear.py", _hash.hexdigest(), 'x11'))""" + clear_replacement = """if argv[2] == 'wayland': + _hash_paste.update(run('wl-paste', stdout=PIPE).stdout.strip()) + if argv[1] == _hash_paste.hexdigest(): + run(('wl-copy', '-c')) +else + _hash_paste.update(run(('xclip', '-o', '-sel', 'c'), stdout=PIPE).stdout.strip()) + if argv[1] == _hash_paste.hexdigest(): + run(('xclip', '-i', '/dev/null', '-sel', 'c'))""" else: s_exit() -# define PORT target -string1 = '# PORT START CLIPBOARD' -string2 = '# PORT END CLIPBOARD' +targets = (('CLIPBOARD', 'sshyp.py', '', '', clip_replacement), + ('CLIPCLEAR', 'clipclear.py', '\n', '', clear_replacement)) -# read input file -text = open('working/sshyp.py', 'r').read() - -# find and replace the defined PORT target -regex = re.compile(f"{string1}.*?{string2}", re.DOTALL) -new_text = re.sub(regex, replacement, text) - -# write updated text -open('working/sshyp.py', 'w').write(new_text) +for target in targets: + # read text from target file + text = open(f"working/{target[1]}", 'r').read() + # compile regex and modify text + regex = re.compile(f"{target[2]}# PORT START {target[0]}.*?# PORT END {target[0]}{target[3]}", re.DOTALL) + new_text = re.sub(regex, target[4], text) + # write updated text to target file + open(f"working/{target[1]}", 'w').write(new_text)