Commit 9e5d3636 authored by Tommy Olofsson's avatar Tommy Olofsson
Browse files

The csv tool can follow files now.

parent c6627bc8
#!/usr/bin/env python #!/usr/bin/env python
import sys import argparse
import labcomm import labcomm
import subprocess
import sys
class Reader(object): class Reader(object):
...@@ -18,6 +20,18 @@ class Reader(object): ...@@ -18,6 +20,18 @@ class Reader(object):
pass pass
class FollowingReader(object):
def __init__(self, file_):
self.tail_proc = subprocess.Popen(['tail', '-c', '+0', '-f', file_],
stdout=subprocess.PIPE)
def read(self, count):
return self.tail_proc.stdout.read(count)
def mark(self, value, decl):
pass
def flatten(sample, _type): def flatten(sample, _type):
if isinstance(_type, labcomm.sample): if isinstance(_type, labcomm.sample):
flatten(sample, _type.decl) flatten(sample, _type.decl)
...@@ -70,9 +84,15 @@ def dump_labels(current, _type): ...@@ -70,9 +84,15 @@ def dump_labels(current, _type):
def main(): def main():
if len(sys.argv) != 2: parser = argparse.ArgumentParser()
sys.exit("Give input file as argument\n") parser.add_argument('elc', type=str, help="The log file.")
d = labcomm.Decoder(Reader(sys.argv[1])) parser.add_argument('-f', '--follow', action='store_true',
help="Find all registrations that already "
"exist, then watch the file for changes. All "
"future registrations are ignored (because "
"the header has already been written).")
args = parser.parse_args()
d = labcomm.Decoder(Reader(args.elc))
seen = {} seen = {}
current = {} current = {}
_type = {} _type = {}
...@@ -92,7 +112,8 @@ def main(): ...@@ -92,7 +112,8 @@ def main():
# Do another pass to extract the data. # Do another pass to extract the data.
current = {} current = {}
d = labcomm.Decoder(Reader(sys.argv[1])) reader = FollowingReader(args.elc) if args.follow else Reader(args.elc)
d = labcomm.Decoder(reader)
while True: while True:
try: try:
o, t = d.decode() o, t = d.decode()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment