"""Delete an extractor module"""
import os
import re
import logging
import argparse
import util
LOG = logging.getLogger("rm")
def remove_file(args, path):
try:
os.unlink(path)
except Exception:
pass
def remove_from_docs_configurationrst(args, path):
with util.lines(path) as lines:
needle = f'{args.category}`'
for idx, line in enumerate(lines):
if needle in line:
lines[idx] = ""
rm = False
needle = f'extractor.{args.category}.'
for idx, line in enumerate(lines):
if rm:
lines[idx] = ""
if line == "\n":
rm -= 1
elif line.startswith(needle):
lines[idx] = ""
rm = 2
def remove_from_docs_gallerydlconf(args, path):
rm = False
needle = f' "{args.category}":\n'
with util.lines(path) as lines:
for idx, line in enumerate(lines):
if rm:
lines[idx] = ""
if line.startswith(" }"):
break
elif line == needle:
lines[idx] = ""
rm = True
def remove_from_extractor_init(args, path):
needle = f' "{args.category}",\n'
with util.lines(path) as lines:
try:
lines.remove(needle)
except ValueError:
pass
def remove_from_scripts_supportedsites(args, path):
pattern = re.compile(
r'\s+(\w+\[)?'
f'"{args.category}"'
r'(: (\{)?|\] = )')
with util.lines(path) as lines:
for idx, line in enumerate(lines):
if pattern.match(line):
lines[idx] = ""
def update_docs_supportedsites(args, path):
import supportedsites
supportedsites.main()
def parse_args(args=None):
parser = argparse.ArgumentParser(args)
parser.add_argument("-g", "--git", action="store_true")
parser.add_argument("CATEGORY")
args = parser.parse_args()
args.category = args.cat = args.CATEGORY
return args
def main():
args = parse_args()
files = [
(util.path("gallery_dl", "extractor", f"{args.category}.py"),
remove_file),
(util.path("test", "results", f"{args.category}.py"),
remove_file),
(util.path("docs", "configuration.rst"),
remove_from_docs_configurationrst),
(util.path("docs", "gallery-dl.conf"),
remove_from_docs_gallerydlconf),
(util.path("gallery_dl", "extractor", "__init__.py"),
remove_from_extractor_init),
(util.path("scripts", "supportedsites.py"),
remove_from_scripts_supportedsites),
(util.path("docs", "supportedsites.md"),
update_docs_supportedsites),
]
for path, func in files:
path_tr = util.trim(path)
LOG.info(path_tr)
func(args, path)
if args.git:
util.git("add", "--", path_tr)
if __name__ == "__main__":
logging.basicConfig(
level=logging.DEBUG,
format="[%(levelname)s] %(message)s",
)
main()