docs: def init(destination, force=False, skip=True):
      """ Initialise new project """
      import os
      from uuid import uuid1
      import fileinput
  
      ignores = ['.DS_Store', '__pycache__', ]
  
      echo(green('\nInitialise project:'))
      echo(green('-' * 40))
  
      destination = os.path.realpath(destination)
      source = os.path.realpath(os.path.dirname(__file__) + '/../boiler_template')
  
      # dry run first
      exist_in_dst = []
      for path, dirs, files in os.walk(source):
          for dir in dirs:
              if dir in ignores:
                  continue
              dst = os.path.join(path, dir).replace(source, destination)
              if os.path.exists(dst):
                  exist_in_dst.append(dst)
  
          for file in files:
              if file in ignores:
                  continue
              dst = os.path.join(path, file).replace(source, destination)
              if os.path.exists(dst):
                  exist_in_dst.append(dst)
  
      # require force option if existing files found
      if exist_in_dst and not force and not skip:
  
          msg = 'The following objects were found in destination.'
          msg += 'What do you want to do with these?'
          echo(red(msg))
          echo(red('Use either --force or --skip option \n'))
  
          for index,path in enumerate(exist_in_dst):
              echo(yellow('{}. {}'.format(index, path)))
  
          echo()
          return
  
      for path, dirs, files in os.walk(source):
          for dir in dirs:
              if dir in ignores:
                  continue
              src = os.path.join(path, dir)
              dst = src.replace(source, destination)
              if('__pycache__' in src):
                  continue
  
              if dst in exist_in_dst and force:
                  echo(red('OVERWRITING: ' + dst))
                  if os.path.exists(dst):
                      shutil.rmtree(dst, ignore_errors=True)
                  os.makedirs(dst)
              elif dst in exist_in_dst and skip:
                  echo(yellow('SKIPPING: ' + dst))
              else:
                  echo('CREATING: ' + dst)
                  os.makedirs(dst)
  
          for file in files:
              if file in ignores:
                  continue
              src = os.path.join(path, file)
              dst = src.replace(source, destination)
              if('__pycache__' in src):
                  continue
  
              if dst in exist_in_dst and force:
                  echo(red('OVERWRITING: ' + dst))
                  if os.path.exists(dst):
                      os.remove(dst)
                  shutil.copy(src, dst)
              elif dst in exist_in_dst and skip:
                  echo(yellow('SKIPPING: ' + dst))
              else:
                  echo('CREATING: ' + dst)
                  shutil.copy(src, dst)
  
      # create secret keys
      path = os.path.join(os.getcwd(), 'dist.env')
      secrets = ['USER_JWT_SECRET', 'SECRET_KEY']
      for line in fileinput.input(path, inplace=True):
          line = line.strip('\n')
          found = False
          for secret in secrets:
              if secret in line:
                  found = True
                  break
  
          if not found:
              echo(line)
          else:
              echo(line.replace('SET_ME', '\'' + str(uuid1()) + '\''))
  
      # create .env
      dotenv_dist = os.path.join(os.getcwd(), 'dist.env')
      dotenv = os.path.join(os.getcwd(), '.env')
  
      if not os.path.isfile(dotenv):
          shutil.copy(dotenv_dist, dotenv)
  
      # rename gitignore
      ignore_src = os.path.join(os.getcwd(), 'dist.gitignore')
      ignore_dst = os.path.join(os.getcwd(), '.gitignore')
      if os.path.isfile(ignore_src) and not os.path.exists(ignore_dst):
          shutil.move(ignore_src, ignore_dst)
  
      # create requirements file
      reqs = os.path.join(os.getcwd(), 'requirements.txt')
      if not os.path.exists(reqs):
          with open(reqs, 'a') as file:
              file.write('shiftboiler=={}\n'.format(boiler_version))
  
  
      echo()
      return