text: # http://inamidst.com/saxo/
  # Created by Sean B. Palmer
  
  import os.path
  import random
  import sys
  
  # Save PEP 3122!
  if "." in __name__:
      from . import common
      from .saxo import path as saxo_path
  else:
      import common
      from saxo import path as saxo_path
  
  DEFAULT_CONFIG = """\
  # See docs/config.md for more options
  
  [server]
      host = irc.freenode.net
      port = 6667
  
  [client]
      nick = saxo%05i
      channels = ##saxo #test
      prefix = .
  """
  
  E_DIRECTORY_EXISTS = """
  You tried to make a directory that already exists. This is usually caused by
  saxo already existing through a previous creation command. It may also be
  caused by a path conflict, for example if you thought that you needed to
  manually create the saxo directory beforehand.
  
  This script won't write new material into any existing directories in case of
  data corruption.
  """
  
  E_UNMAKEABLE_DIRECTORY = """
  The attempt to make this directory recursively, creating any necessary parent
  directories in the process, failed. Check permissions on all parent directories
  to make sure that we can write here. Also make sure that the parent path is a
  directory.
  """
  
  E_UNWRITEABLE_CONFIG = """
  The saxo config file could not be written. Check that it exists, that it's a
  regular file, and that you have adequate permissions to write on all parent
  directories.
  """
  
  def default(base=None):
      if base is None:
          base = os.path.expanduser("~/.saxo")
  
      if os.path.isdir(base):
          common.error("the directory `%s` already exists" % base,
              E_DIRECTORY_EXISTS)
  
      try: os.makedirs(base)
      except Exception as err:
          common.error("could not create the directory `%s`" % base,
              E_UNMAKEABLE_DIRECTORY, err)
  
      config = os.path.join(base, "config")
      try:
          with open(config, "w", encoding="ascii") as f:
              # Generates a random bot name, from saxo00000 to saxo99999 inclusive
              f.write(DEFAULT_CONFIG % random.randrange(0, 100000))
      except Exception as err:
          common.error("could not write the config file `%s`" % config,
              E_UNWRITEABLE_CONFIG, err)
  
      plugins = os.path.join(base, "plugins")
      os.mkdir(plugins)
  
      commands = os.path.join(base, "commands")
      os.mkdir(commands)
  
      common.populate(saxo_path, base)
  
      print("Created %s" % config)
      print("Modify this file with your own settings, and then run:")
      print("")
      if base:
          print("    %s start %s" % (sys.argv[0], base))
      else:
          print("    %s start" % sys.argv[0])
  
      return True
  