import plac
from ftplib import FTP
import json
from pathlib import Path
from collections import namedtuple
FtpConfig = namedtuple('FtpConfig', 'server username password path')


class ftp:
    commands = ['upload']

    def __init__(self):
        cfg = json.load(open('ftp_config.json', 'r'))
        self.ftp_cfg = FtpConfig(**cfg)

    @plac.pos('filename', '', type=str)
    def upload(self, filename='CARLO.csv'):
        file_path = Path(filename)

        with FTP(self.ftp_cfg.server, self.ftp_cfg.username, self.ftp_cfg.password) as ftp_conn, open(file_path, 'rb') as f:
            ftp_conn.cwd(self.ftp_cfg.path)
            res = ftp_conn.storbinary(f'STOR {file_path.name}', f)
            print(res)


if __name__ == '__main__':
    plac.Interpreter.call(ftp)