File: enforced-editing-wrapper

package info (click to toggle)
ubuntu-dev-tools 0.207
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,180 kB
  • sloc: python: 9,113; sh: 1,304; perl: 135; makefile: 10
file content (62 lines) | stat: -rwxr-xr-x 2,241 bytes parent folder | download | duplicates (3)
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
61
62
#!/usr/bin/python3
#
# Copyright (C) 2011, Stefano Rivera <stefanor@ubuntu.com>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
#
# Wraps sensisible-editor in checks for remaining boilerplate.
# Configured through environment variables:
# UDT_EDIT_WRAPPER_EDITOR: The user's usual $EDITOR
# UDT_EDIT_WRAPPER_VISUAL: The user's usual $VISUAL
# UDT_EDIT_WRAPPER_TEMPLATE_RE: An extra boilerplate-detecting regex.
# UDT_EDIT_WRAPPER_FILE_DESCRIPTION: The type of file being edited.

# pylint: disable=invalid-name
# pylint: enable=invalid-name

import argparse
import os
import re

from ubuntutools.question import EditFile


def main():
    parser = argparse.ArgumentParser(usage="%(prog)s [options] filename")
    parser.add_argument("filename", help=argparse.SUPPRESS)
    args = parser.parse_args()
    if not os.path.isfile(args.filename):
        parser.error(f"File {args.filename} does not exist")

    if "UDT_EDIT_WRAPPER_EDITOR" in os.environ:
        os.environ["EDITOR"] = os.environ["UDT_EDIT_WRAPPER_EDITOR"]
    else:
        del os.environ["EDITOR"]

    if "UDT_EDIT_WRAPPER_VISUAL" in os.environ:
        os.environ["VISUAL"] = os.environ["UDT_EDIT_WRAPPER_VISUAL"]
    else:
        del os.environ["VISUAL"]

    placeholders = []
    if "UDT_EDIT_WRAPPER_TEMPLATE_RE" in os.environ:
        placeholders.append(re.compile(os.environ["UDT_EDIT_WRAPPER_TEMPLATE_RE"]))

    description = os.environ.get("UDT_EDIT_WRAPPER_FILE_DESCRIPTION", "file")

    EditFile(args.filename, description, placeholders).edit()


if __name__ == "__main__":
    main()