2 Holds information about what the user asked for (which program, version constraints, etc).
5 # Copyright (C) 2011, Thomas Leonard
6 # See the README file for details, or visit http://0install.net.
8 class Requirements(object):
10 Holds information about what the user asked for (which program, version constraints, etc).
13 # Note: apps.py serialises our __slots__
18 'before', 'not_before',
23 def __init__(self
, interface_uri
):
24 self
.interface_uri
= interface_uri
27 self
.before
= self
.not_before
= None
28 self
.os
= self
.cpu
= None
31 def parse_options(self
, options
):
32 self
.not_before
= options
.not_before
33 self
.before
= options
.before
35 self
.source
= bool(options
.source
)
36 self
.message
= options
.message
38 self
.cpu
= options
.cpu
41 # (None becomes 'run', while '' becomes None)
42 if options
.command
is None:
44 self
.command
= 'compile'
48 self
.command
= options
.command
or None
50 def parse_update_options(self
, options
):
51 """Update the settings based on the options (used for "0install update APP").
52 @return: whether any settings were changed
56 for key
in ['not_before', 'before', 'message', 'cpu', 'os', 'command']:
57 value
= getattr(options
, key
)
59 changed
= changed
or value
!= getattr(self
, key
)
60 setattr(self
, key
, value
)
61 if options
.source
and not self
.source
:
62 # (partly because it doesn't make much sense, and partly because you
63 # can't undo it, as there's no --not-source option)
64 from zeroinstall
import SafeException
65 raise SafeException("Can't update from binary to source type!")
68 def get_as_options(self
):
71 gui_args
.insert(0, self
.not_before
)
72 gui_args
.insert(0, '--not-before')
74 gui_args
.insert(0, self
.before
)
75 gui_args
.insert(0, '--before')
77 gui_args
.insert(0, '--source')
79 gui_args
.insert(0, self
.message
)
80 gui_args
.insert(0, '--message')
82 gui_args
.insert(0, self
.cpu
)
83 gui_args
.insert(0, '--cpu')
85 gui_args
.insert(0, self
.os
)
86 gui_args
.insert(0, '--os')
87 gui_args
.append('--command')
88 gui_args
.append(self
.command
or '')