summaryrefslogtreecommitdiffstats
path: root/scripts/man.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/man.py')
-rwxr-xr-xscripts/man.py304
1 files changed, 0 insertions, 304 deletions
diff --git a/scripts/man.py b/scripts/man.py
deleted file mode 100755
index 91608a3..0000000
--- a/scripts/man.py
+++ /dev/null
@@ -1,304 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-# Copyright 2019 Mike Fährmann
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-
-"""Generate man pages"""
-
-import re
-import datetime
-
-import util
-import gallery_dl.option
-import gallery_dl.version
-
-
-def build_gallery_dl_1(path=None):
-
- OPTS_FMT = """.TP\n.B "{}" {}\n{}"""
-
- TEMPLATE = r"""
-.TH "GALLERY-DL" "1" "%(date)s" "%(version)s" "gallery-dl Manual"
-.\" disable hyphenation
-.nh
-
-.SH NAME
-gallery-dl \- download image-galleries and -collections
-
-.SH SYNOPSIS
-.B gallery-dl
-[OPTION]... URL...
-
-.SH DESCRIPTION
-.B gallery-dl
-is a command-line program to download image-galleries and -collections
-from several image hosting sites. It is a cross-platform tool
-with many configuration options and powerful filenaming capabilities.
-
-.SH OPTIONS
-%(options)s
-
-.SH EXAMPLES
-.TP
-gallery-dl \f[I]URL\f[]
-Download images from \f[I]URL\f[].
-.TP
-gallery-dl -g -u <username> -p <password> \f[I]URL\f[]
-Print direct URLs from a site that requires authentication.
-.TP
-gallery-dl --filter 'type == "ugoira"' --range '2-4' \f[I]URL\f[]
-Apply filter and range expressions. This will only download
-the second, third, and fourth file where its type value is equal to "ugoira".
-.TP
-gallery-dl r:\f[I]URL\f[]
-Scan \f[I]URL\f[] for other URLs and invoke \f[B]gallery-dl\f[] on them.
-.TP
-gallery-dl oauth:\f[I]SITE\-NAME\f[]
-Gain OAuth authentication tokens for
-.IR deviantart ,
-.IR flickr ,
-.IR reddit ,
-.IR smugmug ", and"
-.IR tumblr .
-
-.SH FILES
-.TP
-.I /etc/gallery-dl.conf
-The system wide configuration file.
-.TP
-.I ~/.config/gallery-dl/config.json
-Per user configuration file.
-.TP
-.I ~/.gallery-dl.conf
-Alternate per user configuration file.
-
-.SH BUGS
-https://github.com/mikf/gallery-dl/issues
-
-.SH AUTHORS
-Mike Fährmann <mike_faehrmann@web.de>
-.br
-and https://github.com/mikf/gallery-dl/graphs/contributors
-
-.SH "SEE ALSO"
-.BR gallery-dl.conf (5)
-"""
-
- options = []
- for action in gallery_dl.option.build_parser()._actions:
- if action.help.startswith("=="):
- continue
- options.append(OPTS_FMT.format(
- ", ".join(action.option_strings).replace("-", r"\-"),
- r"\f[I]{}\f[]".format(action.metavar) if action.metavar else "",
- action.help,
- ))
-
- if not path:
- path = util.path("gallery-dl.1")
- with open(path, "w", encoding="utf-8") as file:
- file.write(TEMPLATE.lstrip() % {
- "options": "\n".join(options),
- "version": gallery_dl.version.__version__,
- "date" : datetime.datetime.now().strftime("%Y-%m-%d"),
- })
-
-
-def build_gallery_dl_conf_5(path=None):
-
- TEMPLATE = r"""
-.TH "GALLERY-DL.CONF" "5" "%(date)s" "%(version)s" "gallery-dl Manual"
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-
-.SH NAME
-gallery-dl.conf \- gallery-dl configuration file
-
-.SH DESCRIPTION
-gallery-dl will search for configuration files in the following places
-every time it is started, unless
-.B --ignore-config
-is specified:
-.PP
-.RS 4
-.nf
-.I /etc/gallery-dl.conf
-.I $HOME/.config/gallery-dl/config.json
-.I $HOME/.gallery-dl.conf
-.fi
-.RE
-.PP
-It is also possible to specify additional configuration files with the
-.B -c/--config
-command-line option or to add further option values with
-.B -o/--option
-as <key>=<value> pairs,
-
-Configuration files are JSON-based and therefore don't allow any ordinary
-comments, but, since unused keys are simply ignored, it is possible to utilize
-those as makeshift comments by settings their values to arbitrary strings.
-
-.SH EXAMPLE
-{
-.RS 4
-"base-directory": "/tmp/",
-.br
-"extractor": {
-.RS 4
-"pixiv": {
-.RS 4
-"directory": ["Pixiv", "Works", "{user[id]}"],
-.br
-"filename": "{id}{num}.{extension}",
-.br
-"username": "foo",
-.br
-"password": "bar"
-.RE
-},
-.br
-"flickr": {
-.RS 4
-"_comment": "OAuth keys for account 'foobar'",
-.br
-"access-token": "0123456789-0123456789abcdef",
-.br
-"access-token-secret": "fedcba9876543210"
-.RE
-}
-.RE
-},
-.br
-"downloader": {
-.RS 4
-"retries": 3,
-.br
-"timeout": 2.5
-.RE
-}
-.RE
-}
-
-%(options)s
-
-.SH BUGS
-https://github.com/mikf/gallery-dl/issues
-
-.SH AUTHORS
-Mike Fährmann <mike_faehrmann@web.de>
-.br
-and https://github.com/mikf/gallery-dl/graphs/contributors
-
-.SH "SEE ALSO"
-.BR gallery-dl (1)
-"""
-
- sections = parse_docs_configuration()
- content = []
-
- for sec_name, section in sections.items():
- content.append(".SH " + sec_name.upper())
-
- for opt_name, option in section.items():
- content.append(".SS " + opt_name)
-
- for field, text in option.items():
- if field in ("Type", "Default"):
- content.append('.IP "{}:" {}'.format(field, len(field)+2))
- content.append(strip_rst(text))
- else:
- content.append('.IP "{}:" 4'.format(field))
- content.append(strip_rst(text, field != "Example"))
-
- if not path:
- path = util.path("gallery-dl.conf.5")
- with open(path, "w", encoding="utf-8") as file:
- file.write(TEMPLATE.lstrip() % {
- "options": "\n".join(content),
- "version": gallery_dl.version.__version__,
- "date" : datetime.datetime.now().strftime("%Y-%m-%d"),
- })
-
-
-def parse_docs_configuration():
-
- doc_path = util.path("docs", "configuration.rst")
- with open(doc_path, encoding="utf-8") as file:
- doc_lines = file.readlines()
-
- sections = {}
- sec_name = None
- options = None
- opt_name = None
- opt_desc = None
- name = None
- last = last2 = None
- for line in doc_lines:
-
- # start of new section
- if re.match(r"^=+$", line):
- if sec_name and options:
- sections[sec_name] = options
- sec_name = last.strip()
- options = {}
-
- elif re.match(r"^=+ =+$", line):
- # start of option table
- if re.match(r"^-+$", last):
- opt_name = last2.strip()
- opt_desc = {}
- # end of option table
- elif opt_desc:
- options[opt_name] = opt_desc
- opt_name = None
- name = None
-
- # inside option table
- elif opt_name:
- if line[0].isalpha():
- name, _, line = line.partition(" ")
- opt_desc[name] = ""
- line = line.strip()
- if line.startswith(("* ", "- ")):
- line = "\n" + line
- elif line.startswith("| "):
- line = line[2:] + "\n.br"
- opt_desc[name] += line + "\n"
-
- last2 = last
- last = line
- sections[sec_name] = options
-
- return sections
-
-
-def strip_rst(text, extended=True, *, ITALIC=r"\\f[I]\1\\f[]", REGULAR=r"\1"):
-
- text = text.replace("\\", "\\\\")
-
- # ``foo``
- repl = ITALIC if extended else REGULAR
- text = re.sub(r"``([^`]+)``", repl, text)
- # |foo|_
- text = re.sub(r"\|([^|]+)\|_*", ITALIC, text)
- # `foo`_
- text = re.sub(r"`([^`]+)`_+", ITALIC, text)
- # `foo`
- text = re.sub(r"`([^`]+)`", REGULAR, text)
- # foo_
- text = re.sub(r"([A-Za-z0-9-]+)_+(?=\s)", ITALIC, text)
- # -------
- text = re.sub(r"---+", "", text)
-
- return text
-
-
-if __name__ == "__main__":
- build_gallery_dl_1()
- build_gallery_dl_conf_5()