Use negromate.commands entry_point

This commit is contained in:
Ales (Shagi) Zabala Alava 2020-11-06 16:27:16 +01:00
parent d7f9017abd
commit f06aef8c75
3 changed files with 6 additions and 69 deletions

View File

@ -1,44 +0,0 @@
import argparse
import sys
from . import run, build, thumbnail, rsync, ipfs
def main():
"""
Build parser for all the commands and launch appropiate command.
Each command must be a module with at least the following members:
* name: String with the command name. Will be used for
argparse subcommand.
* help_text: String with the help text.
* options: Function to build the parser of the command. Takes
one parametter, the argparser parser instance for this
subcommand.
* run: Function that runs the actual command. Takes one
parametter, the Namespace with the arguments.
"""
commands = [
build,
run,
thumbnail,
rsync,
ipfs,
]
parser = argparse.ArgumentParser()
parser.set_defaults(command=None)
subparsers = parser.add_subparsers()
for command in commands:
command_parser = subparsers.add_parser(command.name, help=command.help_text)
command_parser.set_defaults(command=command.name)
command.options(command_parser)
args = parser.parse_args()
if args.command is None:
parser.print_usage()
else:
for command in commands:
if args.command == command.name:
command.run(args)

View File

@ -1,22 +0,0 @@
from pathlib import Path
from negromate.songs.utils import generate_cover, generate_thumbnail
name = 'thumbnail'
help_text = 'Generate cover and thumbnail for a video.'
def options(parser):
parser.add_argument(
'video', help="Video of the song.", type=Path)
parser.add_argument(
'second', type=int,
help='Take snapshot at this second.')
def run(args):
video = args.video
cover = video.parent / 'cover.jpg'
thumbnail = video.parent / 'thumb.jpg'
generate_cover(video, cover, args.second)
generate_thumbnail(cover, thumbnail)

View File

@ -23,11 +23,14 @@ python_requires = >= 3.4
install_requires = install_requires =
Jinja2 Jinja2
ass ==0.4.4 ass ==0.4.4
negromate.songs ==1.0 negromate.songs ==1.1
[options.entry_points] [options.entry_points]
console_scripts = negromate.commands =
negromate-web = negromate.web.commands:main build = negromate.web.commands.build
run = negromate.web.commands.run
rsync = negromate.web.commands.rsync
ipfs = negromate.web.commands.ipfs
[bdist_wheel] [bdist_wheel]
# This flag says to generate wheels that support both Python 2 and Python # This flag says to generate wheels that support both Python 2 and Python