]> git.decadent.org.uk Git - dak.git/blobdiff - utils.py
* crypto-in-main changes.* utils.py (move, copy): add an optional perms= parameter...
[dak.git] / utils.py
index 938134e8fc11764f327f5b3aec2d195881ce5580..96c61dbfc95d9e94476f6707d123fcb56614dbcb 100644 (file)
--- a/utils.py
+++ b/utils.py
@@ -1,6 +1,6 @@
 # Utility functions
 # Copyright (C) 2000, 2001  James Troup <james@nocrew.org>
-# $Id: utils.py,v 1.36 2001-11-18 19:57:58 rmurray Exp $
+# $Id: utils.py,v 1.40 2002-03-14 14:12:04 ajt Exp $
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-import commands, os, pwd, re, socket, shutil, stat, string, sys, tempfile
+import commands, os, pwd, re, socket, shutil, string, sys, tempfile
 import apt_pkg
 
 re_comments = re.compile(r"\#.*")
@@ -24,8 +24,8 @@ re_no_epoch = re.compile(r"^\d*\:")
 re_no_revision = re.compile(r"\-[^-]*$")
 re_arch_from_filename = re.compile(r"/binary-[^/]+/")
 re_extract_src_version = re.compile (r"(\S+)\s*\((.*)\)")
-re_isadeb = re.compile (r".*\.u?deb$");
-re_issource = re.compile (r"(.+)_(.+?)\.(orig\.tar\.gz|diff\.gz|tar\.gz|dsc)");
+re_isadeb = re.compile (r"(.+?)_(.+?)_(.+)\.u?deb$");
+re_issource = re.compile (r"(.+)_(.+?)\.(orig\.tar\.gz|diff\.gz|tar\.gz|dsc)$");
 
 re_single_line_field = re.compile(r"^(\S*)\s*:\s*(.*)");
 re_multi_line_field = re.compile(r"^\s(.*)");
@@ -63,15 +63,16 @@ def touch_file(filename):
 
 ######################################################################################
 
-# From reportbug
-def our_raw_input():
-    sys.stdout.flush()
+def our_raw_input(prompt=""):
+    if prompt:
+        sys.stdout.write(prompt);
+    sys.stdout.flush();
     try:
-        ret = raw_input()
+        ret = raw_input();
         return ret
     except EOFError:
-        sys.stderr.write('\nUser interrupt (^D).\n')
-        raise SystemExit
+        sys.stderr.write('\nUser interrupt (^D).\n');
+        raise SystemExit;
 
 ######################################################################################
 
@@ -89,9 +90,9 @@ def extract_component_from_section(section):
     if string.find(section, '/') != -1:
         component = string.split(section, '/')[0];
     if string.lower(component) == "non-us" and string.count(section, '/') > 0:
-        s = string.split(section, '/')[1];
+        s = component + '/' + string.split(section, '/')[1];
         if Cnf.has_key("Component::%s" % s): # Avoid e.g. non-US/libs
-            component = string.split(section, '/')[0]+ '/' + string.split(section, '/')[1];
+            component = s;
 
     if string.lower(section) == "non-us":
         component = "non-US/main";
@@ -300,7 +301,7 @@ def poolify (source, component):
 
 ######################################################################################
 
-def move (src, dest, overwrite = 0):
+def move (src, dest, overwrite = 0, perms = 0664):
     if os.path.exists(dest) and os.path.isdir(dest):
        dest_dir = dest;
     else:
@@ -320,10 +321,10 @@ def move (src, dest, overwrite = 0):
             if not os.access(dest, os.W_OK):
                 raise cant_overwrite_exc
     shutil.copy2(src, dest);
-    os.chmod(dest, 0664);
+    os.chmod(dest, perms);
     os.unlink(src);
 
-def copy (src, dest, overwrite = 0):
+def copy (src, dest, overwrite = 0, perms = 0664):
     if os.path.exists(dest) and os.path.isdir(dest):
        dest_dir = dest;
     else:
@@ -343,7 +344,7 @@ def copy (src, dest, overwrite = 0):
             if not os.access(dest, os.W_OK):
                 raise cant_overwrite_exc
     shutil.copy2(src, dest);
-    os.chmod(dest, 0664);
+    os.chmod(dest, perms);
 
 ######################################################################################
 
@@ -493,6 +494,12 @@ def result_join (original, sep = '\t'):
             list.append(original[i]);
     return string.join(list, sep);
 
+def plural (x):
+    if x > 1:
+        return "s";
+    else:
+        return "";
+
 ################################################################################
 
 def get_conf():