|
|
|
@ -6,20 +6,37 @@ def get_app_class(template):
|
|
|
|
|
class App(template): |
|
|
|
|
def F_main(self): |
|
|
|
|
pattern = self.argv[1].encode("utf-8") |
|
|
|
|
file = self.argv[2] |
|
|
|
|
files = self.argv[2:] |
|
|
|
|
|
|
|
|
|
if files: |
|
|
|
|
prefix = len(files) > 1 |
|
|
|
|
for file in files: |
|
|
|
|
try: |
|
|
|
|
with open(file, "rb") as f: |
|
|
|
|
for line in f.readlines(): |
|
|
|
|
if re.search(pattern, line): |
|
|
|
|
self.console.write((f"{file}:".encode("utf-8") if prefix else b"") + line) |
|
|
|
|
except OSError as e: |
|
|
|
|
try: |
|
|
|
|
os.listdir(file) |
|
|
|
|
console.print(self.console, f"grep: {file}: Is a directory") |
|
|
|
|
except OSError: |
|
|
|
|
console.print(self.console, f"grep: {file}: No such file or directory") |
|
|
|
|
self.exit() |
|
|
|
|
else: |
|
|
|
|
self.store["pattern"] = pattern |
|
|
|
|
self.store["buffer"] = [] |
|
|
|
|
self.jump("loop") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def F_loop(self): |
|
|
|
|
try: |
|
|
|
|
with open(file, "rb") as f: |
|
|
|
|
for line in f.readlines(): |
|
|
|
|
if re.search(pattern, line): |
|
|
|
|
self.console.write(line) |
|
|
|
|
except OSError as e: |
|
|
|
|
try: |
|
|
|
|
os.listdir(file) |
|
|
|
|
console.print(self.console, f"grep: {file}: Is a directory") |
|
|
|
|
except OSError: |
|
|
|
|
console.print(self.console, f"grep: {file}: No such file or directory") |
|
|
|
|
line = console.read(self.console, self.store["buffer"]) |
|
|
|
|
except EOFError: |
|
|
|
|
self.exit() |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
self.exit() |
|
|
|
|
if line and re.search(self.store["pattern"], line): |
|
|
|
|
self.console.write(line + b"\n") |
|
|
|
|
|
|
|
|
|
return App |
|
|
|
|