...
This commit is contained in:
195
scripts/nav/lf-raw-mode-shell-pipe/main.py
Normal file
195
scripts/nav/lf-raw-mode-shell-pipe/main.py
Normal file
@@ -0,0 +1,195 @@
|
||||
|
||||
import shlex
|
||||
from pathlib import Path
|
||||
from os import path
|
||||
import os
|
||||
import argparse
|
||||
import sys, tty, termios
|
||||
import subprocess
|
||||
import signal
|
||||
|
||||
DB_FILE = "/home/me/work/config/scripts/nav/db"
|
||||
|
||||
|
||||
def main():
|
||||
pwd = Path(os.getcwd())
|
||||
db_matches = get_db_matches(pwd, DB_FILE)
|
||||
folder_db_matches = get_folder_db_matches(pwd)
|
||||
folder_matches = get_folder_matches(pwd)
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-m', '--mode', help='mode of the program', type=str)
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.mode == "lf":
|
||||
|
||||
cmd = "ps" # | grep lf | awk '{print $1}'"
|
||||
cmd2 = "ps | grep lf | awk '{print $1}'"
|
||||
#p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
|
||||
|
||||
#result = subprocess.run(cmd2, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
#pid = result.stdout.decode('utf-8').strip()
|
||||
|
||||
#print("hiiiiiiiiii:", b)
|
||||
#a = p.stdout.readlines()
|
||||
#a = subprocess.check_output(["ps"]).decode("utf-8")
|
||||
|
||||
#a = input("hello --" + f"/proc/{pid}/fd/0" + "--")
|
||||
|
||||
#signal.signal(signal)
|
||||
|
||||
out = open("/home/me/p1", "w")
|
||||
sys.stdout = out
|
||||
sys.stderr = out
|
||||
|
||||
|
||||
path = "/proc/2778149/fd/0"
|
||||
|
||||
print("my stdin:", os.readlink('/proc/self/fd/0'))
|
||||
print("lf stdin:", os.readlink(path))
|
||||
print("pid:", os.getpid())
|
||||
input()
|
||||
print("after first input")
|
||||
|
||||
file = open("/dev/pts/16", "r")
|
||||
os.setpgid(os.getpid(), 2778149)
|
||||
|
||||
subprocess.run(["ps", "-j"], stdout=out, stderr=out)
|
||||
|
||||
exec("file.read(1)")
|
||||
#file.read(1)
|
||||
|
||||
a = input()
|
||||
print("input was:", a)
|
||||
|
||||
out.close()
|
||||
file.close()
|
||||
|
||||
exit()
|
||||
|
||||
#out.write("test" + pid + "\n")
|
||||
out.flush()
|
||||
|
||||
#path = f"/proc/{pid}/fd/0"
|
||||
|
||||
|
||||
out.write(f"before path: {path}\n")
|
||||
out.flush()
|
||||
|
||||
os.system("echo from echo $SHELL > /home/me/p2")
|
||||
#os.system("/bin/bash /home/me/work/config/scripts/nav/run.sh 2>/home/me/p2 1>/home/me/p2")
|
||||
os.system(f"python /home/me/work/config/scripts/nav/test.py </home/me/test/file 2>/home/me/p2 1>/home/me/p2")
|
||||
|
||||
#os.system(f"cat {path}")
|
||||
#old_settings = termios.tcgetattr(fd)
|
||||
|
||||
try:
|
||||
|
||||
file = open(path, "r")
|
||||
tty.setraw(file.fileno())
|
||||
|
||||
out.write(f"before path: {file}\n")
|
||||
out.flush()
|
||||
|
||||
b = file.read(1)
|
||||
|
||||
out.write("got: " + b + "\n")
|
||||
out.flush()
|
||||
|
||||
file.close()
|
||||
except e:
|
||||
out.write("ERROR: " + str(e) + "\n")
|
||||
|
||||
#while True:
|
||||
#b = file.read(1)
|
||||
#out.write("got: " + b + "\n")
|
||||
|
||||
out.close()
|
||||
|
||||
|
||||
"""
|
||||
while True:
|
||||
fd = sys.stdin.fileno()
|
||||
print("fd", fd)
|
||||
old_settings = termios.tcgetattr(fd)
|
||||
try:
|
||||
tty.setraw(sys.stdin.fileno())
|
||||
ch = sys.stdin.read(1)
|
||||
finally:
|
||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
||||
if ch == "q":
|
||||
break
|
||||
print("hello: ", ch)
|
||||
"""
|
||||
|
||||
#os.system("echo hello-world")
|
||||
#while True:
|
||||
#print("test", a)
|
||||
#input()
|
||||
#input("end: ")
|
||||
|
||||
|
||||
else:
|
||||
print("test", my_resolve("~"))
|
||||
print("db:", db_matches)
|
||||
print("folder db:", folder_db_matches)
|
||||
print("folder:", folder_matches)
|
||||
|
||||
|
||||
def get_db_matches(directory, db_file):
|
||||
matches = []
|
||||
with open(db_file, "r") as file:
|
||||
for line in file.readlines():
|
||||
line = line.strip()
|
||||
if line == "":
|
||||
continue
|
||||
tmp = shlex.split(line)
|
||||
try:
|
||||
dir_in = tmp[0]
|
||||
shortcut = tmp[1]
|
||||
dest = tmp[2]
|
||||
except:
|
||||
eprint("db parse error on:", line)
|
||||
continue
|
||||
|
||||
if dir_in == "*":
|
||||
matches.append((shortcut, dest))
|
||||
|
||||
elif my_resolve(directory) == my_resolve(dir_in):
|
||||
matches.append((shortcut, dest))
|
||||
|
||||
return matches
|
||||
|
||||
def get_folder_matches(directory):
|
||||
matches = []
|
||||
ls = os.listdir(directory)
|
||||
|
||||
for path in ls:
|
||||
if path[0] == ".":
|
||||
path_as_list = list(str(path))
|
||||
path_as_list.pop(0)
|
||||
path = "".join(path_as_list)
|
||||
|
||||
|
||||
return matches
|
||||
|
||||
def get_folder_db_matches(directory):
|
||||
if os.path.exists(directory / ".nav_db"):
|
||||
return get_db_matches(directory, directory / ".nav_db")
|
||||
else:
|
||||
return []
|
||||
|
||||
def my_resolve(path):
|
||||
if path == ".":
|
||||
return Path(os.getcwd())
|
||||
if str(path)[0] == "~":
|
||||
path_as_list = list(str(path))
|
||||
path_as_list.pop(0)
|
||||
return Path(str(Path.home()) + "".join(path_as_list))
|
||||
|
||||
return path.resolve()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
7
scripts/nav/lf-raw-mode-shell-pipe/run.sh
Executable file
7
scripts/nav/lf-raw-mode-shell-pipe/run.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
echo from script
|
||||
#script=$(cat ./test.py)
|
||||
#python -c "$script"
|
||||
|
||||
python /home/me/work/config/scripts/nav/test.py #2>/home/me/p2 1>/home/me/p2
|
||||
33
scripts/nav/lf-raw-mode-shell-pipe/test.py
Normal file
33
scripts/nav/lf-raw-mode-shell-pipe/test.py
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
print("hiiiiiiiiiiiiiiiiiiiii:")
|
||||
|
||||
#import sys
|
||||
import os
|
||||
|
||||
|
||||
#path = input("path: ")
|
||||
path = "/proc/2767310/fd/0"
|
||||
print("path:", path)
|
||||
|
||||
#os.system(f"cat {path}")
|
||||
#print("hi:", os.path.abspath(sys.stdin.name))
|
||||
print("my stdin:", os.readlink('/proc/self/fd/0'))
|
||||
print("lf stdin:", os.readlink(path))
|
||||
|
||||
#os.system(f"cat /dev/pts/16")
|
||||
#os.system("stty -F /proc/2763309/fd/0 -raw -icanon -echo; cat /proc/2763309/fd/0 > /home/me/p2")
|
||||
exit()
|
||||
|
||||
try:
|
||||
file = open(path, "r")
|
||||
|
||||
print(f"before path: {path}\n")
|
||||
print(f"before path: {file}\n")
|
||||
|
||||
b = file.read(1)
|
||||
|
||||
print("got: " + b + "\n")
|
||||
|
||||
file.close()
|
||||
except Exception as e:
|
||||
print("ERROR: " + str(e) + "\n")
|
||||
Reference in New Issue
Block a user