Commit 69cf7fda authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

[fix] enable audiotools CLI format listing without required arguments

parent 02b8658f
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -55,14 +55,12 @@ def add_processing_args(group, input=True):
        f"-{ps}",
        f"--{p}",
        dest=f"{p}put",
        required=True,
        type=Path,
        help="Path to *.{wav, pcm, raw} file or directory",
    )
    group.add_argument(
        f"-{ps}f",
        f"--{p}_fmt",
        required=input,
        type=str,
        help="Audio format (use -l, --list for a list / -L, --long for a detailed list)",
        default=None,
@@ -132,7 +130,7 @@ def add_processing_args(group, input=True):
    )


def get_args():
def get_argparser():
    parser = argparse.ArgumentParser(
        description="Audiotools: Convert/Manipulate spatial audio files."
    )
@@ -224,12 +222,15 @@ def get_args():
        action="store_true",
    )

    return parser.parse_args()
    return parser


def main():
    args = get_args()
    parser = get_argparser()
    
    args = parser.parse_args()

    # special arguments for listing formats
    if args.list is True or args.long is True:
        for fmt in AUDIO_FORMATS:
            if args.long:
@@ -240,6 +241,11 @@ def main():
                print(", ".join(fmt.keys()))
        exit()
    
    # validate required arguments
    if args.input is None or args.in_fmt is None or args.output is None:
        parser.print_usage()
        raise SystemExit("the following arguments are required: -i/--in, -if/--in_fmt, -o/--out")

    elif args.input is not None:
        if not args.out_fs:
            args.out_fs = args.in_fs
@@ -272,7 +278,12 @@ def main():
        if len(in_files) == 1 and args.input.is_file():
            out_files = [args.output]
        else:
            args.output.mkdir(exist_ok=True)
            # input was a dir so output should be a dir too
            if args.output.is_file():
                raise NotADirectoryError(f"Input directory '{args.input}' specified with file output to '{args.output}' - please specify an output directory instead")
            if not args.output.exists():
                args.output.mkdir()
                print(f"Created output directory {args.output}")
            out_files = [args.output.joinpath(i.name) for i in in_files]

        # Multiprocessing