[scripts] add rm.py
to simplify removing extractor modules
This commit is contained in:
141
scripts/rm.py
Executable file
141
scripts/rm.py
Executable file
@@ -0,0 +1,141 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user