mirror of https://github.com/Desuuuu/klipper.git
extractconfig: Add helper script that extracts config files from a log
Add a helper script that can read a klippy.log file and extract the printer.cfg files from it. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
f6d4284d5c
commit
ef09ac5a7f
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python2
|
||||
# Script to extract a config file from a log
|
||||
#
|
||||
# Copyright (C) 2017 Kevin O'Connor <kevin@koconnor.net>
|
||||
#
|
||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||
import sys
|
||||
|
||||
def format_comment(line_num, line):
|
||||
return "# %6d: %s" % (line_num, line)
|
||||
|
||||
def main():
|
||||
logname = sys.argv[1]
|
||||
f = open(logname, 'rb')
|
||||
last_git = last_start = ''
|
||||
config_count = config_line_num = 0
|
||||
configs = {}
|
||||
config_lines = []
|
||||
info = None
|
||||
# Parse log file
|
||||
for line_num, line in enumerate(f):
|
||||
line = line.strip()
|
||||
line_num += 1
|
||||
if config_line_num:
|
||||
if line == '=======================':
|
||||
lines = tuple(config_lines)
|
||||
info = configs.get(lines)
|
||||
if info is None:
|
||||
config_count += 1
|
||||
configs[lines] = info = (config_count, [])
|
||||
info[1].append(format_comment(config_line_num, "config file"))
|
||||
if last_git:
|
||||
info[1].append(last_git)
|
||||
if last_start:
|
||||
info[1].append(last_start)
|
||||
config_line_num = 0
|
||||
config_lines = []
|
||||
else:
|
||||
config_lines.append(line)
|
||||
elif line.startswith('Git version'):
|
||||
last_git = format_comment(line_num, line)
|
||||
elif line.startswith('Start printer at'):
|
||||
last_start = format_comment(line_num, line)
|
||||
elif line == '===== Config file =====':
|
||||
config_line_num = line_num
|
||||
elif info is not None and (
|
||||
' shutdown: ' in line or line.startswith('Dumping ')):
|
||||
info[1].append(format_comment(line_num, line))
|
||||
# Write found config files
|
||||
for lines, (count, comments) in configs.items():
|
||||
f = open("%s.config%04d.cfg" % (logname, count), 'wb')
|
||||
f.write('\n'.join(tuple(comments) + lines))
|
||||
f.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue