File: make_backend_docs.py

package info (click to toggle)
rclone 1.45-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 24,300 kB
  • sloc: python: 364; sh: 255; makefile: 190; xml: 30
file content (60 lines) | stat: -rwxr-xr-x 2,035 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python2
"""
Make backend documentation
"""

import os
import subprocess

marker = "<!--- autogenerated options"
start = marker + " start"
stop = marker + " stop"

def find_backends():
    """Return a list of all backends"""
    return [ x for x in os.listdir("backend") if x not in ("all",) ]

def output_docs(backend, out):
    """Output documentation for backend options to out"""
    out.flush()
    subprocess.check_call(["rclone", "help", "backend", backend], stdout=out)

def alter_doc(backend):
    """Alter the documentation for backend"""
    doc_file = "docs/content/"+backend+".md"
    if not os.path.exists(doc_file):
        raise ValueError("Didn't find doc file %s" % (doc_file,))
    new_file = doc_file+"~new~"
    altered = False
    with open(doc_file, "r") as in_file, open(new_file, "w") as out_file:
        in_docs = False
        for line in in_file:
            if not in_docs:
                if start in line:
                    in_docs = True
                    start_full = start + " - DO NOT EDIT, instead edit fs.RegInfo in backend/%s/%s.go then run make backenddocs -->\n" % (backend, backend)
                    out_file.write(start_full)
                    output_docs(backend, out_file)
                    out_file.write(stop+" -->\n")
                    altered = True
            if not in_docs:
                out_file.write(line)
            if in_docs:
                if stop in line:
                    in_docs = False
    os.rename(doc_file, doc_file+"~")
    os.rename(new_file, doc_file)
    if not altered:
        raise ValueError("Didn't find '%s' markers for in %s" % (start, doc_file))

if __name__ == "__main__":
    failed, success = 0, 0
    for backend in find_backends():
        try:
            alter_doc(backend)
        except Exception, e:
            print "Failed adding docs for %s backend: %s" % (backend, e)
            failed += 1
        else:
            success += 1
    print "Added docs for %d backends with %d failures" % (success, failed)