Last active
July 25, 2023 15:01
-
-
Save jlecour/9ac7d7d3705a022c72133c20ae433ac5 to your computer and use it in GitHub Desktop.
Revisions
-
jlecour renamed this gist
Jul 25, 2023 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
jlecour revised this gist
Jul 25, 2023 . 1 changed file with 18 additions and 15 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -4,12 +4,14 @@ import os import json def clean_lines(lines): clean_lines=[] # TODO: a map/reduce or a comprehension might be better for line in lines: # remove linebreaks # TODO: see if a proper regex is needed clean_line = line.replace("\n","") # don't return empty lines if len(clean_line) > 0: clean_lines.append(clean_line) return clean_lines @@ -19,36 +21,37 @@ def read_entry(path): lines = clean_lines(f.readlines()) if len(lines) > 1: # return multiple lines as array return lines else: # return single lines as string return lines[0] def build_dict(dir): data = {} for path in os.listdir(dir): if os.path.isfile(os.path.join(dir, path)): # if entry is a file, the value is the content of the file data[path] = read_entry(os.path.join(dir, path)) elif os.path.isdir(os.path.join(dir, path)): # is entry is a directory, add recursively data[path] = build_dict(os.path.join(dir, path)) return data def main(): if len(sys.argv) > 1: basedir = sys.argv[1] else: print("You must provide a base directory", file=sys.stderr) sys.exit(2) if os.path.isdir(basedir): data = build_dict(basedir) print(json.dumps(data, sort_keys=True)) sys.exit(0) else: print("Directory "+basedir+" not found", file=sys.stderr) sys.exit(1) if __name__ == "__main__": -
jlecour created this gist
Jul 25, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,57 @@ #!/bin/env python import sys import os import json default_basedir="/etc/evolinux/data" def clean_lines(lines): clean_lines=[] for line in lines: clean_line = line.replace("\n","") if len(clean_line) > 0: clean_lines.append(clean_line) return clean_lines def read_entry(path): f = open(path,"r") lines = clean_lines(f.readlines()) if len(lines) > 1: return lines else: return lines[0] def list_entries(data, dir): for path in os.listdir(dir): if os.path.isfile(os.path.join(dir, path)): data[path] = read_entry(os.path.join(dir, path)) elif os.path.isdir(os.path.join(dir, path)): data[path] = list_entries({}, os.path.join(dir, path)) return data def build_dict(basedir): return list_entries({}, basedir) def main(): if len(sys.argv) > 1: evofs_basedir = sys.argv[1] else: # print("You must provide a base directory for evofs", file=sys.stderr) # sys.exit(1) evofs_basedir = default_basedir if os.path.isdir(evofs_basedir): evofs_data = build_dict(evofs_basedir) print(json.dumps(evofs_data, sort_keys=True)) sys.exit(0) else: print("Directory "+evofs_basedir+" not found", file=sys.stderr) sys.exit(1) if __name__ == "__main__": main() sys.exit(0) This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,22 @@ { "client_hostname": "foo.example.com", "client_number": "FOOBAR", "dir1": { "dir2": { "baz": [ "1", "2", "3", "4", "5" ], "foo-ln": "bar" }, "foo": "bar" }, "dir3": { "hook_db": "0", "mail": "[email protected]" }, "monitoring": "everytime" } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,11 @@ ├── client_hostname ├── client_number ├── dir1 │ ├── dir2 │ │ ├── baz │ │ └── foo-ln -> ../foo │ └── foo ├── dir3 │ ├── hook_db │ └── mail └── monitoring