#! /usr/bin/env python3

"""
Encode movies from raw files.

Provide list of raw files, outfiles, and keyword parameters to encoder.
"""

import sys
import re

from movie.encoders import encode
from movie.tools import encode_files

args = sys.argv[1:]

rawfiles = list()
imgfiles = list()
outfiles = list()
keywords = dict()

kw = re.compile(r'^([a-zA-Z_]\w*)=(.+)$')

for a in args:
    if a.endswith(
            ('.raw', '.raw.gz', '.raw.xz', '.raw.bz', '.rgz', '.rxz', '.rbz')):
        rawfiles.append(a)
        continue
    if a.endswith(('.jpg', '.png', 'ppm', '.gif', '.pdf', )):
        imgfiles.append(a)
        continue

    x = kw.findall(a)
    assert len(x) < 2
    if len(x) == 1:
        x = x[0]
        keywords[x[0]] = eval(x[1])
        continue
    outfiles.append(a)

if len(rawfiles) == 0 and len(imgfiles) == 0:
    print('[encode] require input file name(s)')
    sys.exit()

if len(rawfiles) != 0 and len(imgfiles) != 0:
    print('[encode] can only use raw files or image files')
    sys.exit()

if len(outfiles) == 0:
    print('[encode] require output file name(s)')
    sys.exit()

rawfiles = tuple(rawfiles)
if len(rawfiles) == 1:
    rawfiles = rawfiles[0]
imgfiles = tuple(imgfiles)
if len(imgfiles) == 1:
    imgfiles = imgfiles[0]
outfiles = tuple(outfiles)
if len(outfiles) == 1:
    outfiles = outfiles[0]

if len(rawfiles) > 0:
    print(f'[encode] {rawfiles=}')
if len(imgfiles) > 0:
    print(f'[encode] {imgfiles=}')
print(f'[encode] {outfiles=}')
if len(keywords) == 0:
    print(f'[encode] {keywords=}')

if len(rawfiles) > 0:
    encode(rawfiles, outfiles, **keywords)
else:
    encode_files(imgfiles, outfiles, **keywords)
