Major refactor to make handling name/path manipulation easier.

Most of this is now in doom_base.py, which stores wad/map/name, exposes them as
properties, and also takes care of most common tasks needed for building
command lines and such.
This commit is contained in:
yrriban 2025-05-13 05:46:26 -04:00
parent 85d3686f1c
commit 2438995093
11 changed files with 113 additions and 100 deletions

View file

@ -5,22 +5,13 @@ import dcc.doom_base
class Put(dcc.doom_base.WadMap):
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
parser.add_argument("-d", "--dsda", action="store_true")
parser.add_argument("-s", "--single", action="store_true")
return parser
# TODO: accept configuration for bucket name
def take_action(self, parsed_args):
s3_client = boto3.client('s3')
demo = dcc.config.DemoInPath(parsed_args.wad, parsed_args.map, parsed_args.name)
bucket = dcc.config.DemoName(parsed_args.wad, parsed_args.map, parsed_args.name)
if parsed_args.dsda:
pattern = ("{}{}".format(parsed_args.wad[0:2], parsed_args.map) if not parsed_args.single else parsed_args.wad[0:4]) + "*.zip"
zips = [x for x in dcc.config.DEMOS.joinpath(parsed_args.wad).glob(pattern)]
if len(zips) != 1:
raise Exception("Unable to identify exactly one suitable upload candidate (was {})".format(zips))
demo = zips[0]
bucket = "dsda/{}".format(demo.name)
print("Uploading {} to bucket doom/{}.".format(demo, bucket))
s3_client.upload_file(demo, 'yrriban', 'doom/' + bucket,
demo = self.demo_in_path()
bucket = self.target_bucket()
print("Uploading {} to bucket {}.".format(demo, bucket))
s3_client.upload_file(demo, 'yrriban', bucket,
ExtraArgs={'ContentType': 'binary/octet-stream', 'ACL': 'public-read'})