import dbm
import sys
import re
import os

RED='\033[1;31m'
RED_IT='\033[3;31m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
YELLOW_IT='\033[3;33m'
NC='\033[0m'

currDir = os.path.abspath(os.path.dirname(__file__))
fileName = "mapfile_"

prodTypes = ["landing", "storyTelling"]

if len(sys.argv) != 4:
    print RED + '\nInvalid arguments!!!\n'
    print YELLOW + 'Use: python2 saveMap.py ' + RED_IT + '"<prod_type>" "<short_url>" "<campaign_name>"'
    print NC
    exit()

prodType = sys.argv[1].strip()

if prodType not in prodTypes:
    print RED + '\nInvalid arguments ' + RED_IT + '"<prod_type>"\n'
    print YELLOW + 'prodTypes: ' + RED_IT + '"' + '" - "'.join(prodTypes) + '"'
    print NC
    exit()

fileName = fileName + prodType

campName = sys.argv[2].strip()
cleanCampName = re.sub(r"[^a-zA-Z0-9_]","", campName)

if campName != cleanCampName:
    print RED + '\nInvalid arguments ' + RED_IT + '"<short_url>"\n'
    print NC
    exit()

campVal = sys.argv[3].strip()
cleanCampVal = re.sub(r"[^a-zA-Z0-9_]","", campVal)

if campVal != cleanCampVal:
    print RED + '\nInvalid arguments ' + RED_IT + '"<campaign_name>"\n'
    print NC
    exit()

db=dbm.open(currDir + "/" + fileName + ".map","c")

db[cleanCampName] = cleanCampVal
 
db.close()

print 'OK'

