"""CPFファイルのバージョン変換およびフラグメント抽出を行うCLIツール。

入力CPFファイルを指定バージョン（現在はver.23のみ対応）に変換して出力する。
"""
import abmptools
import argparse
import os
import datetime


def get_args():
    """コマンドライン引数を解析して返す。

    Returns:
        argparse.Namespace: 入力CPF名、対象フラグメント、出力バージョン、出力ファイル名を含む引数。
    """
    parser = argparse.ArgumentParser(description="convert CPF")

    # Input CPF name, required
    parser.add_argument("-i", "--input",
                        required=True,
                        help="Input CPF name")

    # Target residues, default is removing WAT, HOH at the end of the file
    parser.add_argument("-f",
                        "--fragments",
                        default=0,
                        help="Specify target residues. Default is None")

    # Version, default is "23"
    parser.add_argument("-v",
                        "--version",
                        default=23,
                        help="Specify the output version. Currently, only '23' is available.")

    # Version, default is "23"
    parser.add_argument("-o",
                        "--output",
                        default=None,
                        help="Output CPF name")

    args = parser.parse_args()

    print("Arguments received:")
    print("Input CPF:", args.input)
    print("Target fragments:", args.fragments)
    print("Output Version:", args.version)

    return args


def main():
    args = get_args()
    cpf = abmptools.CPFManager()
    cpf.tgtfrag = cpf.selectfrag(args.fragments)
    print(cpf.tgtfrag)
    cpf.parse(args.input)
    cpf.version = args.version
    d_today = str(datetime.datetime.today())
    if args.output is None:
        outname = os.path.basename(args.input).split('.')[0] + '-out.cpf'
    else:
        outname = args.output
    cpf.write('Generated by ABMPTools ' + d_today, outname)


if __name__ == "__main__":
    main()
