123 def main(args = None):
   134     logging.basicConfig(stream = sys.stdout,
   135                         format = 
'%(levelname) 7s: %(message)s',
   138     if options.mtn_db == 
'':
   139         logging.error(
'No monotone db set (use --mtn-db)')
   142     if not os.access(options.mtn_db, os.R_OK):
   143         logging.error(
'Monotone db %s not found' % (options.mtn_db))
   147         logging.error(
'Usage: %s version' % (sys.argv[0]))
   153                           [
'automate', 
'select', 
't:' + version])
   156         logging.error(
'No revision for %s found' % (version))
   159     output_basename = os.path.join(options.output_dir, 
'Botan-' + version)
   161     output_tgz = output_basename + 
'.tgz'   162     output_tbz = output_basename + 
'.tbz'   164     logging.info(
'Found revision id %s' % (rev_id))
   166     if os.access(output_basename, os.X_OK):
   167         shutil.rmtree(output_basename)
   170                  [
'checkout', 
'-r', rev_id, output_basename])
   172     shutil.rmtree(os.path.join(output_basename, 
'_MTN'))
   175     version_file = os.path.join(output_basename, 
'botan_version.py')
   177     if os.access(version_file, os.R_OK):
   180         contents = open(version_file).readlines()
   182         def content_rewriter():
   183             for line 
in contents:
   184                 if line == 
'release_vc_rev = None\n':
   185                     yield 'release_vc_rev = \'mtn:%s\'\n' % (rev_id)
   186                 elif line == 
'release_datestamp = 0\n':
   187                     yield 'release_datestamp = %d\n' % (
datestamp(options.mtn_db, rev_id))
   191         open(version_file, 
'w').write(
''.join(list(content_rewriter())))
   193         logging.error(
'Cannot find %s' % (version_file))
   197         os.makedirs(options.output_dir)
   199         if e.errno != errno.EEXIST:
   200             logging.error(
'Creating dir %s failed %s' % (options.output_dir, e))
   205     archive = tarfile.open(output_tgz, 
'w:gz')
   206     archive.add(output_basename)
   211     archive = tarfile.open(output_tbz, 
'w:bz2')
   212     archive.add(output_basename)
   215     if options.pgp_key_id != 
'':
   216         gpg_sign(options.pgp_key_id, [output_tbz, output_tgz])
   218     shutil.rmtree(output_basename)
 def run_monotone(db, args)
def gpg_sign(keyid, files)
def datestamp(db, rev_id)
def remove_file_if_exists(fspath)