#!../env/bin/python
import os
import sys
import argparse

root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root)

from geotweet.twitter import Geotweet

# get any parameters set as environment variables
LOG_DIR = os.getenv("GEOTWEET_STREAM_DIR", None)
LOG_INTERVAL = os.getenv("GEOTWEET_STREAM_LOG_INTERVAL", None)
AWS_BUCKET = os.getenv("AWS_BUCKET", None)
AWS_REGION = os.getenv("AWS_DEFAULT_REGION", None)


# ======================
# Command Line Arguments
# ======================

# help messages
log_help = "Path to log file directoy"
log_interval_help = "Minutes in each log file"
bbox_help = "Bounding Box as 'SW,NE' using 'Lon,Lat' for each point."
bucket_help = "AWS S3 Bucket name"
region_help = "AWS S3 Region such as 'us-west-2'"

# construct keywords argumets for each cli arg
log_args = dict(type=str, default=LOG_DIR, help=log_help)
log_interval_args = dict(type=int, default=LOG_INTERVAL, help=log_interval_help)
bbox_args = dict(type=str, help=bbox_help)
bucket_args = dict(type=str, default=AWS_BUCKET, help=bucket_help)
region_args = dict(type=str, default=AWS_REGION, help=region_help)

# build parser
parser = argparse.ArgumentParser(description='Log and store geographic tweets')
subparser = parser.add_subparsers()

# add stream args
stream_parser = subparser.add_parser('stream')
stream_parser.set_defaults(which='stream')
stream_parser.add_argument('--log-dir', **log_args)
stream_parser.add_argument('--log-interval', **log_interval_args)
stream_parser.add_argument('--bbox', **bbox_args)

# add listen args
listen_parser = subparser.add_parser('load')
listen_parser.set_defaults(which='load')
listen_parser.add_argument('--log-dir', **log_args)
listen_parser.add_argument('--bucket', **bucket_args)
listen_parser.add_argument('--region', **region_args)


def main():
    args = parser.parse_args()
    if args.which == 'stream':
        Geotweet(args).stream()
    elif args.which == 'load':
        Geotweet(args).load()


if __name__ == "__main__":
    main()
