142 lines
3.3 KiB
Python
Executable File
142 lines
3.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright 2025 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.
|
|
|
|
"""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()
|