Skip to content

Instantly share code, notes, and snippets.

@jlecour
Last active July 25, 2023 15:01
Show Gist options
  • Select an option

  • Save jlecour/9ac7d7d3705a022c72133c20ae433ac5 to your computer and use it in GitHub Desktop.

Select an option

Save jlecour/9ac7d7d3705a022c72133c20ae433ac5 to your computer and use it in GitHub Desktop.

Revisions

  1. jlecour renamed this gist Jul 25, 2023. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. jlecour revised this gist Jul 25, 2023. 1 changed file with 18 additions and 15 deletions.
    33 changes: 18 additions & 15 deletions script.py
    Original file line number Diff line number Diff line change
    @@ -4,12 +4,14 @@
    import os
    import json

    default_basedir="/etc/evolinux/data"

    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 list_entries(data, dir):
    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)):
    data[path] = list_entries({}, os.path.join(dir, path))
    # is entry is a directory, add recursively
    data[path] = build_dict(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]
    basedir = sys.argv[1]
    else:
    # print("You must provide a base directory for evofs", file=sys.stderr)
    # sys.exit(1)
    evofs_basedir = default_basedir
    print("You must provide a base directory", file=sys.stderr)
    sys.exit(2)

    if os.path.isdir(evofs_basedir):
    evofs_data = build_dict(evofs_basedir)
    if os.path.isdir(basedir):
    data = build_dict(basedir)

    print(json.dumps(evofs_data, sort_keys=True))
    print(json.dumps(data, sort_keys=True))
    sys.exit(0)
    else:
    print("Directory "+evofs_basedir+" not found", file=sys.stderr)
    print("Directory "+basedir+" not found", file=sys.stderr)
    sys.exit(1)

    if __name__ == "__main__":
  3. jlecour created this gist Jul 25, 2023.
    57 changes: 57 additions & 0 deletions script.py
    Original 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)
    22 changes: 22 additions & 0 deletions structure.json
    Original 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"
    }
    11 changes: 11 additions & 0 deletions structure.tree
    Original 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