diff --git a/Makefile b/Makefile index d471b52..0b244ed 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,2 @@ install: - cp dist/pyinstaller/manylinux_2_39_x86_64/doomcc /home/tynan/.local/bin/dcc + cp dist/pyinstaller/manylinux_2_39_x86_64/dcc /home/tynan/.local/bin/dcc diff --git a/doomcc/__init__.py b/dcc/__init__.py similarity index 100% rename from doomcc/__init__.py rename to dcc/__init__.py diff --git a/doomcc/__main__.py b/dcc/__main__.py similarity index 71% rename from doomcc/__main__.py rename to dcc/__main__.py index 21747bf..5e3e9d1 100644 --- a/doomcc/__main__.py +++ b/dcc/__main__.py @@ -1,5 +1,5 @@ import sys -from doomcc.main import main +from dcc.main import main if __name__ == "__main__": sys.exit(main(sys.argv[1:])) diff --git a/doomcc/concat.py b/dcc/concat.py similarity index 99% rename from doomcc/concat.py rename to dcc/concat.py index 03a106b..32c9912 100644 --- a/doomcc/concat.py +++ b/dcc/concat.py @@ -1,6 +1,6 @@ import av import copy -import doomcc.doom_base +import dcc.doom_base import enum import fractions import io @@ -16,7 +16,7 @@ class State(enum.Enum): DONE = 3 -class Concat(doomcc.doom_base.Wad): +class Concat(dcc.doom_base.Wad): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("start_map") diff --git a/doomcc/config.py b/dcc/config.py similarity index 100% rename from doomcc/config.py rename to dcc/config.py diff --git a/doomcc/configure.py b/dcc/configure.py similarity index 94% rename from doomcc/configure.py rename to dcc/configure.py index 080f613..e624246 100644 --- a/doomcc/configure.py +++ b/dcc/configure.py @@ -1,9 +1,9 @@ -import doomcc.doom_base +import dcc.doom_base import omg import tomlkit.toml_file -class Configure(doomcc.doom_base.Wad): +class Configure(dcc.doom_base.Wad): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("--complevel", "--cl") diff --git a/doomcc/doom_base.py b/dcc/doom_base.py similarity index 99% rename from doomcc/doom_base.py rename to dcc/doom_base.py index 16ae0f3..85c7b55 100644 --- a/doomcc/doom_base.py +++ b/dcc/doom_base.py @@ -1,13 +1,13 @@ from abc import abstractmethod from cliff.command import Command -import doomcc.config +import dcc.config import io import os import re import tomlkit -class Wad(doomcc.config.Base): +class Wad(dcc.config.Base): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("wad") diff --git a/doomcc/dsda.py b/dcc/dsda.py similarity index 96% rename from doomcc/dsda.py rename to dcc/dsda.py index 932d855..6e831d2 100644 --- a/doomcc/dsda.py +++ b/dcc/dsda.py @@ -1,5 +1,5 @@ -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import os import re import shutil @@ -7,7 +7,7 @@ import subprocess import zipfile -class DSDA(doomcc.doom_base.WadMap): +class DSDA(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("-s", "--single", action="store_true") diff --git a/doomcc/eureka.py b/dcc/eureka.py similarity index 90% rename from doomcc/eureka.py rename to dcc/eureka.py index 8618287..e8457d5 100644 --- a/doomcc/eureka.py +++ b/dcc/eureka.py @@ -1,9 +1,9 @@ -import doomcc.doom_base -import doomcc.config +import dcc.doom_base +import dcc.config import os -class Eureka(doomcc.doom_base.WadMap): +class Eureka(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("--main") diff --git a/doomcc/extract.py b/dcc/extract.py similarity index 95% rename from doomcc/extract.py rename to dcc/extract.py index d0412ea..254b1f4 100644 --- a/doomcc/extract.py +++ b/dcc/extract.py @@ -1,11 +1,11 @@ -import doomcc.doom_base +import dcc.doom_base import omg import numpy as np import wand.color import wand.image -class Extract(doomcc.doom_base.Wad): +class Extract(dcc.doom_base.Wad): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("lump") diff --git a/doomcc/fabricate.py b/dcc/fabricate.py similarity index 91% rename from doomcc/fabricate.py rename to dcc/fabricate.py index 36f81d5..97b87bd 100644 --- a/doomcc/fabricate.py +++ b/dcc/fabricate.py @@ -1,12 +1,12 @@ import contextlib -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import os import shutil import tempfile -class Fabricate(doomcc.doom_base.WadMap): +class Fabricate(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("--fg", action="store_true") diff --git a/doomcc/fetch.py b/dcc/fetch.py similarity index 97% rename from doomcc/fetch.py rename to dcc/fetch.py index 3e5e411..2ee9cff 100644 --- a/doomcc/fetch.py +++ b/dcc/fetch.py @@ -1,4 +1,4 @@ -import doomcc.config +import dcc.config import io import json import pathlib @@ -9,7 +9,7 @@ import urllib.request import zipfile -class Fetch(doomcc.config.Base): +class Fetch(dcc.config.Base): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("id_or_name") diff --git a/doomcc/ls.py b/dcc/ls.py similarity index 93% rename from doomcc/ls.py rename to dcc/ls.py index ffb8f70..69d9a34 100644 --- a/doomcc/ls.py +++ b/dcc/ls.py @@ -1,8 +1,8 @@ -import doomcc.config +import dcc.config import os -class List(doomcc.config.ListerBase): +class List(dcc.config.ListerBase): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("target") @@ -24,7 +24,7 @@ class List(doomcc.config.ListerBase): raise Exception(f"unknown target {parsed_args.target}") -class WadList(doomcc.config.ListerBase): +class WadList(dcc.config.ListerBase): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("wad") diff --git a/dcc/main.py b/dcc/main.py new file mode 100644 index 0000000..fdbb264 --- /dev/null +++ b/dcc/main.py @@ -0,0 +1,72 @@ +import sys + +from cliff.app import App +from cliff.commandmanager import CommandManager + +import dcc.concat +import dcc.configure +import dcc.dsda +import dcc.eureka +import dcc.extract +import dcc.fabricate +import dcc.fetch +import dcc.ls +import dcc.pb +import dcc.play +import dcc.put +import dcc.record +import dcc.rib +import dcc.ss +import dcc.text +import dcc.thumb + + +class DCC(App): + def __init__(self): + cm = CommandManager(None) + commands = { + "concat": dcc.concat.Concat, + "configure": dcc.configure.Configure, + "dsda": dcc.dsda.DSDA, + "eureka": dcc.eureka.Eureka, + "extract": dcc.extract.Extract, + "fabricate": dcc.fabricate.Fabricate, + "fetch": dcc.fetch.Fetch, + "ls": dcc.ls.List, + "ls demos": dcc.ls.ListDemos, + "ls videos": dcc.ls.ListVideos, + "pb": dcc.pb.PB, + "play": dcc.play.Play, + "put": dcc.put.Put, + "record": dcc.record.Record, + "rib": dcc.rib.RIB, + "ss": dcc.ss.SS, + "text": dcc.text.Text, + "thumb": dcc.thumb.Thumb, + } + for n, c in commands.items(): + cm.add_command(n, c) + super().__init__( + description="Doom Command Center", + version="0.0.1", + command_manager=cm, + deferred_help=True, + ) + + def initialize_app(self, argv): + pass + + def prepare_to_run_command(self, cmd): + pass + + def clean_up(self, cmd, result, err): + pass + + +def main(argv=sys.argv[1:]): + dcc = DCC() + return dcc.run(argv) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/doomcc/pb.py b/dcc/pb.py similarity index 58% rename from doomcc/pb.py rename to dcc/pb.py index 841aba7..661d538 100644 --- a/doomcc/pb.py +++ b/dcc/pb.py @@ -1,8 +1,8 @@ -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import os -class PB(doomcc.doom_base.WadMap): +class PB(dcc.doom_base.WadMap): def take_action(self, parsed_args): os.execvp("ffplay", ["ffplay", self.video_path()]) diff --git a/doomcc/play.py b/dcc/play.py similarity index 58% rename from doomcc/play.py rename to dcc/play.py index ee135ca..5459b6e 100644 --- a/doomcc/play.py +++ b/dcc/play.py @@ -1,8 +1,8 @@ -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import os -class Play(doomcc.doom_base.WadMap): +class Play(dcc.doom_base.WadMap): def take_action(self, parsed_args): os.execv(self.dsda, [self.dsda] + self.dsda_preamble()) diff --git a/doomcc/put.py b/dcc/put.py similarity index 87% rename from doomcc/put.py rename to dcc/put.py index 77215b4..ba8f89c 100644 --- a/doomcc/put.py +++ b/dcc/put.py @@ -1,9 +1,9 @@ import boto3 -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base -class Put(doomcc.doom_base.WadMap): +class Put(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) return parser diff --git a/doomcc/record.py b/dcc/record.py similarity index 81% rename from doomcc/record.py rename to dcc/record.py index 55e5af2..0b519cd 100644 --- a/doomcc/record.py +++ b/dcc/record.py @@ -1,9 +1,9 @@ -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import os -class Record(doomcc.doom_base.WadMap): +class Record(dcc.doom_base.WadMap): def take_action(self, parsed_args): os.execv( self.dsda, diff --git a/doomcc/rib.py b/dcc/rib.py similarity index 95% rename from doomcc/rib.py rename to dcc/rib.py index 6a456f7..a3e9787 100644 --- a/doomcc/rib.py +++ b/dcc/rib.py @@ -1,10 +1,10 @@ -import doomcc.doom_base +import dcc.doom_base import pathlib import os import time -class RIB(doomcc.doom_base.WadMap): +class RIB(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("-s", "--secs_before", type=int, default=10) diff --git a/doomcc/ss.py b/dcc/ss.py similarity index 87% rename from doomcc/ss.py rename to dcc/ss.py index 835dd00..446e43d 100644 --- a/doomcc/ss.py +++ b/dcc/ss.py @@ -1,12 +1,12 @@ from tkinter import messagebox -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import sys import wand.display import wand.image -class SS(doomcc.doom_base.WadMap): +class SS(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("-g", "--gravity", default="center") @@ -24,7 +24,7 @@ class SS(doomcc.doom_base.WadMap): img.reset_coords() if img.width < width or img.height < height: if not messagebox.askretrycancel( - title="Doom Command Center", + title="DCC", message=f"Image too small ({img.width}x{img.height})." + "Try again?", ): @@ -35,7 +35,7 @@ class SS(doomcc.doom_base.WadMap): if not yolo: wand.display.display(img) accepted = messagebox.askyesnocancel( - title="Doom Command Center", message="Is this image acceptable?" + title="DCC", message="Is this image acceptable?" ) if accepted is None: sys.exit("Gave up on image verification") diff --git a/doomcc/text.py b/dcc/text.py similarity index 96% rename from doomcc/text.py rename to dcc/text.py index b8ee90a..27d8983 100644 --- a/doomcc/text.py +++ b/dcc/text.py @@ -1,5 +1,5 @@ -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import sys import textwrap import wand.drawing @@ -51,10 +51,10 @@ def draw_text(self, img, text, font_size=64, wrap_dist=0.75): draw(img) -doomcc.config.Base.draw_text = draw_text +dcc.config.Base.draw_text = draw_text -class Text(doomcc.doom_base.WadMap): +class Text(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("--nomap", action="store_true") diff --git a/doomcc/thumb.py b/dcc/thumb.py similarity index 93% rename from doomcc/thumb.py rename to dcc/thumb.py index 5ee8265..e18c143 100644 --- a/doomcc/thumb.py +++ b/dcc/thumb.py @@ -1,10 +1,10 @@ -import doomcc.config -import doomcc.doom_base +import dcc.config +import dcc.doom_base import wand.color import wand.image -class Thumb(doomcc.doom_base.WadMap): +class Thumb(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) parser.add_argument("--index", action="store_true") diff --git a/doomcc/main.py b/doomcc/main.py deleted file mode 100644 index 745e1d7..0000000 --- a/doomcc/main.py +++ /dev/null @@ -1,72 +0,0 @@ -import sys - -from cliff.app import App -from cliff.commandmanager import CommandManager - -import doomcc.concat -import doomcc.configure -import doomcc.dsda -import doomcc.eureka -import doomcc.extract -import doomcc.fabricate -import doomcc.fetch -import doomcc.ls -import doomcc.pb -import doomcc.play -import doomcc.put -import doomcc.record -import doomcc.rib -import doomcc.ss -import doomcc.text -import doomcc.thumb - - -class DoomCC(App): - def __init__(self): - cm = CommandManager(None) - commands = { - "concat": doomcc.concat.Concat, - "configure": doomcc.configure.Configure, - "dsda": doomcc.dsda.DSDA, - "eureka": doomcc.eureka.Eureka, - "extract": doomcc.extract.Extract, - "fabricate": doomcc.fabricate.Fabricate, - "fetch": doomcc.fetch.Fetch, - "ls": doomcc.ls.List, - "ls demos": doomcc.ls.ListDemos, - "ls videos": doomcc.ls.ListVideos, - "pb": doomcc.pb.PB, - "play": doomcc.play.Play, - "put": doomcc.put.Put, - "record": doomcc.record.Record, - "rib": doomcc.rib.RIB, - "ss": doomcc.ss.SS, - "text": doomcc.text.Text, - "thumb": doomcc.thumb.Thumb, - } - for n, c in commands.items(): - cm.add_command(n, c) - super().__init__( - description="Doom Command Center", - version="0.0.1", - command_manager=cm, - deferred_help=True, - ) - - def initialize_app(self, argv): - pass - - def prepare_to_run_command(self, cmd): - pass - - def clean_up(self, cmd, result, err): - pass - - -def main(argv=sys.argv[1:]): - doomcc = DoomCC() - return doomcc.run(argv) - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/pyproject.toml b/pyproject.toml index d860b22..891d8db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "doomcc" +name = "dcc" version = "0.1.0" description = "Doom Command Center" authors = [ @@ -27,10 +27,10 @@ requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" [project.scripts] -doomcc = "doomcc.main:main" +dcc = "dcc.main:main" [tool.poetry-pyinstaller-plugin.scripts] -doomcc = { source = "doomcc/main.py", type = "onefile" } +dcc = { source = "dcc/main.py", type = "onefile" } [tool.poetry-pyinstaller-plugin.collect] all = ["cliff"] diff --git a/tests/play_test.py b/tests/play_test.py index e778251..a75e694 100644 --- a/tests/play_test.py +++ b/tests/play_test.py @@ -1,5 +1,5 @@ import cliff.app -import doomcc.play +import dcc.play import logging import os import mockito.matchers @@ -26,9 +26,9 @@ def test_play(expect): scp.mkdir() scp.joinpath("config.toml").touch() scp.joinpath("scythe.wad").touch() - doomcc.play.Play.__init__ = lambda self: None - doomcc.play.Play.get_epilog = lambda self: "" - rig = doomcc.play.Play() + dcc.play.Play.__init__ = lambda self: None + dcc.play.Play.get_epilog = lambda self: "" + rig = dcc.play.Play() rig._hooks = [] parser = rig.get_parser("test_play") parsed_args = parser.parse_args(args=["--doom", td, "scythe", "01"])