#!/usr/bin/env python

# Copyright (c) <2013>, <wise.io LLC>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, 
# are permitted provided that the following conditions are met:
#
# - Redistributions of source code must retain the above copyright notice, 
#   this list of conditions and the following disclaimer.
#
# - Redistributions in binary form must reproduce the above copyright notice, 
#   this list of conditions and the following disclaimer in the documentation 
#   and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import os, errno
import sys
import argparse
import getpass

def setup():
  # Get username
  sys.stdout.write("wise.io account: ")
  user = raw_input()

  # Get password
  passwd = getpass.getpass()

  # Create wise dir if not exists
  home = os.path.expanduser("~")
  wise_dir = "%s/.wise" % home
  try:
    os.makedirs(wise_dir)
  except OSError as e:
    if e.errno == errno.EEXIST and os.path.isdir(wise_dir):
      pass
    else: 
      raise

  # Save to file
  profile = "%s/profile" % wise_dir
  with open(profile, 'w') as f:
    f.write("%s\n%s" % (user, passwd))

  # Change permissions
  os.chmod(profile, 0600)

if __name__ == "__main__": 

  actions = ["setup"]

  parser = argparse.ArgumentParser(description='The wise command line utility.')
  parser.add_argument('action', choices=actions, help='the action to perform.')

  args = parser.parse_args()

  if args.action == "setup":
    setup()

