| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/usr/bin/python -u
- '''
- ADOdb release upload script
- '''
- import getopt
- import glob
- import os
- from os import path
- import subprocess
- import sys
- # Directories and files to exclude from release tarballs
- sf_files = "frs.sourceforge.net:/home/frs/project/adodb" \
- "/adodb-php5-only/adodb-{ver}-for-php5/"
- sf_doc = "web.sourceforge.net:/home/project-web/adodb/htdocs/"
- rsync_cmd = "rsync -vP --rsh ssh {opt} {src} {usr}@{dst}"
- # Command-line options
- options = "hfd"
- long_options = ["help", "files", "doc"]
- def usage():
- print '''Usage: %s [options] username [release_path]
- This script will upload the files in the given directory (or the
- current one if unspecified) to Sourceforge.
- Parameters:
- username Sourceforge user account
- release_path Location of the release files to upload
- (see buildrelease.py)
- Options:
- -h | --help Show this usage message
- -f | --files Upload release files only
- -d | --doc Upload documentation only
- ''' % (
- path.basename(__file__)
- )
- #end usage()
- def main():
- # Get command-line options
- try:
- opts, args = getopt.gnu_getopt(sys.argv[1:], options, long_options)
- except getopt.GetoptError, err:
- print str(err)
- usage()
- sys.exit(2)
- if len(args) < 1:
- usage()
- print "ERROR: please specify the Sourceforge user and release_path"
- sys.exit(1)
- upload_files = True
- upload_doc = True
- for opt, val in opts:
- if opt in ("-h", "--help"):
- usage()
- sys.exit(0)
- elif opt in ("-f", "--files"):
- upload_files = False
- elif opt in ("-d", "--doc"):
- upload_doc = False
- # Mandatory parameters
- username = args[0]
- try:
- release_path = args[1]
- os.chdir(release_path)
- except IndexError:
- release_path = os.getcwd()
- # Get the version number from the zip file to upload
- try:
- zipfile = glob.glob('*.zip')[0]
- except IndexError:
- print "ERROR: release zip file not found in '%s' " % release_path
- sys.exit(1)
- version = zipfile[5:8]
- # Start upload process
- print "ADOdb release upload script"
- # Upload release files
- if upload_files:
- target = sf_files.format(ver=version)
- print
- print "Uploading release files..."
- print " Target: " + target
- print
- subprocess.call(
- rsync_cmd.format(
- usr=username,
- opt="--exclude=docs",
- src=path.join(release_path, "*"),
- dst=target
- ),
- shell=True
- )
- # Upload documentation
- if upload_doc:
- print
- print "Uploading documentation..."
- print
- subprocess.call(
- rsync_cmd.format(
- usr=username,
- opt="",
- src=path.join(release_path, "docs", "*"),
- dst=sf_doc
- ),
- shell=True
- )
- #end main()
- if __name__ == "__main__":
- main()
|