#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Zoe archivist
# https://github.com/rmed/zoe-archivist
#
# Copyright (c) 2015 <NAME> <<EMAIL>>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import argparse
import re

parser = argparse.ArgumentParser()

parser.add_argument('--mail-subject', dest='subject')
parser.add_argument('--msg-sender-uniqueid', dest='sender')
parser.add_argument('--text/plain', dest='text')

if __name__ == '__main__':
    args, unknown = parser.parse_known_args()

    # Read mail text
    with open(args.text, "r") as f:
        body = f.read()

    cid_re = re.search("id:(.*)", body, re.IGNORECASE)
    cid = cid_re.group(1).strip() if cid_re else ""

    title_re = re.search("title:(.*)", body, re.IGNORECASE)
    title = title_re.group(1).strip() if title_re else ""

    desc_re = re.search("desc:(.*)", body, re.IGNORECASE)
    desc = desc_re.group(1).strip() if desc_re else ""

    tags_re = re.search("tags:(.*)", body, re.IGNORECASE)
    tags = tags_re.group(1).strip() if tags_re else ""

    # Content should end with '/content' string to prevent conflicts with
    # mail signatures
    content_re = re.search("content:(.*)/content", body,
        re.IGNORECASE | re.DOTALL)
    # content = content_re.group(1).strip() if content_re else ""
    content = ""
    if content_re:
        # 'escape' newline
        content = content_re.group(1).replace('\n', '_NL_')

    if args.subject == "Archivist new":
        # Create new card
        print(
            "message dst=archivist&tag=new-card&title=%s&desc=%s&content=%s&tags=%s&sender=%s" % (
                title, desc, content, tags, args.sender))

    elif args.subject == ("Archivist edit"):
        # Edit existing card
        # Only modifies specified values
        msg = "message dst=archivist&tag=modify-card&cid=%s&sender=%s" % (
            cid, args.sender)

        if title:
            msg += "&title=" + title

        if desc:
            msg += "&desc=" + desc

        if tags:
            msg += "&tags=" + tags

        if content:
            msg += "&content=" + content

        print(msg)
