Skip to content

Instantly share code, notes, and snippets.

@michaelmhoffman
Last active August 25, 2020 14:47
Show Gist options
  • Select an option

  • Save michaelmhoffman/15e0fc61dab94a689e73542a29eaaae1 to your computer and use it in GitHub Desktop.

Select an option

Save michaelmhoffman/15e0fc61dab94a689e73542a29eaaae1 to your computer and use it in GitHub Desktop.

Revisions

  1. michaelmhoffman revised this gist Apr 29, 2020. No changes.
  2. michaelmhoffman created this gist Apr 29, 2020.
    31 changes: 31 additions & 0 deletions auto-insert-python.el
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    (defun new-copyright ()
    "Generate new copyright string."
    (format-time-string "Copyright %Y Michael M. Hoffman <[email protected]>"))

    (define-auto-insert 'python-mode
    `(
    "Description: "
    "#!/usr/bin/env python3.6" \n
    "\"\"\"" (setq basename (buffer-file-basename)) ": " str \n
    "\"\"\"" \n \n
    "__version__ = \"0.1\"" \n \n
    "# " (new-copyright) \n \n
    "from argparse import Namespace" \n
    "from os import EX_OK" \n
    "import sys" \n
    "from typing import List, Optional" \n \n \n
    "def " (setq namebase (file-name-sans-extension basename)) "(args: Namespace) -> int:\n"
    " return EX_OK\n\n\n"
    "def parse_args(args: List[str]) -> Namespace:\n"
    " from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser\n\n"
    " description = __doc__.splitlines()[0].partition(\": \")[2]\n"
    " parser = ArgumentParser(description=description,\n"
    " formatter_class=ArgumentDefaultsHelpFormatter)\n\n"
    " version = f\"%(prog)s {__version__}\"\n"
    " parser.add_argument(\"--version\", action=\"version\", version=version)\n\n"
    " return parser.parse_args(args)\n\n\n"
    "def main(argv: List[str] = sys.argv[1:]) -> int:\n"
    " args = parse_args(argv)\n\n"
    " return " namebase "(args)\n\n\n"
    "if __name__ == \"__main__\":\n"
    " sys.exit(main())\n"))
    39 changes: 39 additions & 0 deletions template.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    #!/usr/bin/env python3.6
    """REPLACE_THIS.py: REPLACE_WITH_DESCRIPTION
    """

    __version__ = "0.1"

    # Copyright 2020 Michael M. Hoffman <[email protected]>

    from argparse import Namespace
    from os import EX_OK
    import sys
    from typing import List, Optional


    def REPLACE_THIS(args: Namespace) -> int:
    return EX_OK


    def parse_args(args: List[str]) -> Namespace:
    from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser

    description = __doc__.splitlines()[0].partition(": ")[2]
    parser = ArgumentParser(description=description,
    formatter_class=ArgumentDefaultsHelpFormatter)

    version = f"%(prog)s {__version__}"
    parser.add_argument("--version", action="version", version=version)

    return parser.parse_args(args)


    def main(argv: List[str] = sys.argv[1:]) -> int:
    args = parse_args(argv)

    return REPLACE_THIS(args)


    if __name__ == "__main__":
    sys.exit(main())