'''
TODO:
+
+ * use urllib iso ftplib
+
* more flexible build/ftp/patches/releases paths
- * flexible build command
- * show only?
+
+
+ show only: --command='echo "latest is: %n-%v"'
'''
-import os
+import ftplib
import fnmatch
+import getopt
+import re
+import operator
+import os
+import tempfile
import stat
import string
-import re
-import getopt
import sys
import __main__
-import operator
-import tempfile
try:
import gettext
list_ = list_file
-#
-# ugh: use ftp module.
-#
def list_ftp (user, passwd, host, dir, file):
if user == 'None':
user = 'anonymous'
if passwd == 'None':
passwd = program_name
- command = '''
-open -u%s,%s -p21 %s
-set passive-mode off
-cd "%s"
-ls -1 "%s"
-''' % (user, passwd, host, dir, file)
- temp = tempfile.mktemp (program_name)
- f = open (temp, 'w')
- f.write (command)
- f.close ()
- p = os.popen ('lftp -f %s' % temp, 'r')
- s = p.read ()
- status = p.close ()
- return string.split (s[:-1], '\n')
+ ftp = ftplib.FTP (host)
+ ftp.login (user, passwd)
+ ftp.set_pasv (1)
+ ftp.cwd (dir)
+ list = ftp.nlst (file)
+ try:
+ ftp.quit ()
+ except:
+ ftp.close ()
+ return list
def split_url (url):
m = re.match ('([^:/]*)(:)?(/*([^:]*):)?(/*([^@]*)@)?(//([^/]*))?(.*)/(.*)',
if passwd == 'None':
passwd = program_name
- command = '''
-open -u%s,%s -p21 %s
-set passive-mode off
-cd "%s"
-get "%s"
-''' % (user, passwd, host, dir, file)
- temp = tempfile.mktemp (program_name)
- f = open (temp, 'w')
- f.write (command)
- f.close ()
- p = os.popen ('lftp -f %s' % temp, 'r')
- s = p.read ()
- status = p.close ()
+ ftp = ftplib.FTP (host)
+ ftp.login (user, passwd)
+ ftp.set_pasv (1)
+ t = tempfile.mktemp (program_name)
+ try:
+ f = open (t, 'w')
+ ftp.retrbinary ('RETR %s/%s' % (dir, file),
+ lambda x, f=f: f.write (x))
+ f.close ()
+ # huh? Invalid cross-device link
+ # os.rename (t, file)
+ system ('mv %s %s' % (t, file))
+ except:
+ os.remove (t)
+ raise 'Foo'
+ try:
+ ftp.quit ()
+ except:
+ ftp.close ()
+ return list
+
+
def copy_url (url, dir):
os.chdir (dir)
s = "copy_%s ('%s', '%s', '%s', '%s', '%s')" % split_url (url)
if 1:
latest = find_latest (url)
- if os.path.isdir ('%s/%s' % (build_root, latest)):
+ # if os.path.isdir ('%s/%s' % (build_root, latest)):
+ if os.path.exists ('%s/%s/index.html' % (build_root, latest)):
progress (_ ("latest is: %s") % latest)
progress (_ ("relax, %s is up to date" % package_name))
sys.exit (0)
if not os.path.isdir (build_root):
build_root = temp_dir
+
if not os.path.isdir (release_dir):
release_dir = temp_dir
setup_temp ()
progress (_ ("building %s...") % latest)
os.chdir (build_root)
- if build (latest):
+ if not build (latest):
if previous and remove_previous_p:
system ('rm -rf %s' % os.path.join (build_root, previous))
else: