Re: 3 aap suggestions
Pavol Juhas <[email protected]> Sat, 26 Nov 2005 20:18:07 -0500
| Newsgroups | gmane.comp.tools.aap.devel |
|---|---|
| Message-ID | <[email protected]> |
--jI8keyz6grp/JLjh
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Sorry, I forgot to attach patch.
Pavol
--jI8keyz6grp/JLjh
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="usetoolsearch.patch"
Index: Commands.py
===================================================================
RCS file: /cvsroot/a-a-p/Exec/Commands.py,v
retrieving revision 1.129
diff -u -r1.129 Commands.py
--- Commands.py 12 Aug 2005 10:30:17 -0000 1.129
+++ Commands.py 27 Nov 2005 01:07:31 -0000
@@ -21,6 +21,7 @@
import string
import copy
import glob
+import imp
from Depend import Depend
from Dictlist import str2dictlist, get_attrdict, list2str, dictlist2str
@@ -2602,21 +2603,25 @@
if optiondict:
option_error(rpstack, optiondict, ":toolsearch")
- sys_path_save = sys.path
- try:
- # Only import "tools.name" from specific directories.
- sys.path = get_import_dirs(recdict)
- didone = 0
- for a in args:
- c = a["name"]
- exec "import tools.%s" % c
- if eval("tools.%s.exists()" % c):
- exec "tools.%s.define_actions()" % c
- if not didone:
- didone = 1
- exec "tools.%s.use_actions(recdict['_top'])" % c
- finally:
- sys.path = sys_path_save
+ # only import "name" from tools directories
+ tools_path = [ os.path.join(d, "tools")
+ for d in get_import_dirs(recdict) ]
+ didone = 0
+ for a in args:
+ c = a["name"]
+ try:
+ fpd = imp.find_module(c, tools_path)
+ except ImportError:
+ # tool not found, try to find another
+ continue
+ exec "tools_%s = imp.load_module(c, *fpd)" % c
+ if eval("tools_%s.exists()" % c):
+ exec "tools_%s.define_actions()" % c
+ if not didone:
+ didone = 1
+ exec "tools_%s.use_actions(recdict['_top'])" % c
+ if not didone:
+ raise ImportError, ":toolsearch - unable to find any tool"
def maydo_recipe_cmd(rpstack):
@@ -3050,20 +3055,18 @@
recipe_error(rpstack, _(':usetool requires one argument'))
toolname = args[0]["name"]
- sys_path_save = sys.path
try:
- try:
- # Only import "tools.name" from specific directories.
- sys.path = get_import_dirs(recdict)
- exec "import tools.%s" % toolname
- finally:
- sys.path = sys_path_save
+ # Only import "tools_name" module from specific directories.
+ tools_path = [ os.path.join(d, "tools")
+ for d in get_import_dirs(recdict) ]
+ fpd = imp.find_module(toolname, tools_path)
+ exec "tools_%s = imp.load_module(toolname, *fpd)" % toolname
except:
recipe_error(rpstack, _('Tool "%s" is not supported') % toolname)
- if eval("tools.%s.exists()" % toolname):
- exec "tools.%s.define_actions()" % toolname
- exec "tools.%s.use_actions(recdict)" % toolname
+ if eval("tools_%s.exists()" % toolname):
+ exec "tools_%s.define_actions()" % toolname
+ exec "tools_%s.use_actions(recdict)" % toolname
else:
recipe_error(rpstack, _('Tool "%s" cannot be found on the system')
% toolname)
--jI8keyz6grp/JLjh--
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click