Package zeroinstall :: Package injector :: Module autopolicy
[frames] | no frames]

Source Code for Module zeroinstall.injector.autopolicy

 1  """ 
 2  A simple non-interactive policy. 
 3   
 4  This module provides a simple policy that will select, download and run a suitable set of 
 5  implementations. It is not interactive. This is the policy used when you run B{0launch -c}, and 
 6  is also the policy used to run the injector's GUI. 
 7   
 8  @deprecated: The interesting functionality has moved into the L{policy.Policy} base-class. 
 9  """ 
10   
11  # Copyright (C) 2006, Thomas Leonard 
12  # See the README file for details, or visit http://0install.net. 
13   
14  import os 
15  from logging import debug, info, warn 
16   
17  from zeroinstall.support import tasks 
18  from zeroinstall.injector import model, policy, run 
19  from zeroinstall.injector.handler import Handler 
20  from zeroinstall import NeedDownload 
21   
22 -class AutoPolicy(policy.Policy):
23 __slots__ = ['download_only'] 24
25 - def __init__(self, interface_uri, download_only = False, dry_run = False, src = False, handler = None):
26 """@param handler: (new in 0.30) handler to use, or None to create a L{Handler}""" 27 handler = handler or Handler() 28 if dry_run: 29 info("Note: dry_run is deprecated. Pass it to the handler instead!") 30 handler.dry_run = True 31 policy.Policy.__init__(self, interface_uri, handler, src = src) 32 self.download_only = download_only
33
34 - def execute(self, prog_args, main = None, wrapper = None):
35 downloaded = self.download_uncached_implementations() 36 if downloaded: 37 self.handler.wait_for_blocker(downloaded) 38 if not self.download_only: 39 run.execute(self, prog_args, dry_run = self.handler.dry_run, main = main, wrapper = wrapper) 40 else: 41 info("Downloads done (download-only mode)")
42
43 - def download_and_execute(self, prog_args, refresh = False, main = None):
44 refreshed = self.solve_with_downloads(refresh) 45 46 self.handler.wait_for_blocker(refreshed) 47 48 if not self.solver.ready: 49 raise model.SafeException("Can't find all required implementations:\n" + 50 '\n'.join(["- %s -> %s" % (iface, self.solver.selections[iface]) 51 for iface in self.solver.selections])) 52 self.execute(prog_args, main = main)
53