Gentoo Archives: gentoo-commits

From: "André Erdmann" <dywi@×××××××.de>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/ebuild/
Date: Fri, 29 Jun 2012 22:48:36
Message-Id: 1341008550.7bfe60ae3fee591b2476af9a2a0a34ccb2e298e6.dywi@gentoo
1 commit: 7bfe60ae3fee591b2476af9a2a0a34ccb2e298e6
2 Author: André Erdmann <dywi <AT> mailerd <DOT> de>
3 AuthorDate: Fri Jun 29 22:22:30 2012 +0000
4 Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
5 CommitDate: Fri Jun 29 22:22:30 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=7bfe60ae
7
8 ebuild variables: remove syntax-violating quotes
9
10 * this removes quote chars from var values
11 * also added the possibility to choose between ' and "
12
13 modified: roverlay/ebuild/abstractcomponents.py
14
15 ---
16 roverlay/ebuild/abstractcomponents.py | 38 ++++++++++++++++++++++++++++++--
17 1 files changed, 35 insertions(+), 3 deletions(-)
18
19 diff --git a/roverlay/ebuild/abstractcomponents.py b/roverlay/ebuild/abstractcomponents.py
20 index 5437dfc..f943948 100644
21 --- a/roverlay/ebuild/abstractcomponents.py
22 +++ b/roverlay/ebuild/abstractcomponents.py
23 @@ -31,6 +31,7 @@ class ListValue ( object ):
24 self.indent_lines = True
25 # only used in multi line mode
26 self.append_indented_newline = True
27 + self.insert_leading_newline = False
28
29 self.val_join = ' '
30
31 @@ -84,13 +85,21 @@ class ListValue ( object ):
32 def to_str ( self ):
33 """Returns a string representing this ListValue."""
34 if len ( self.value ) == 0:
35 + # empty value
36 ret = ""
37 elif len ( self.value ) == 1:
38 + # one value
39 ret = str ( self.value [0] )
40 elif self.single_line:
41 + # several values in a single line
42 ret = self.val_join.join ( self.value )
43 else:
44 - ret = self.line_join.join ( ( self.value ) )
45 + if self.insert_leading_newline:
46 + ret = '\n' + self.val_indent
47 + ret += self.line_join.join ( ( self.value ) )
48 + else:
49 + ret = self.line_join.join ( ( self.value ) )
50 +
51 if self.append_indented_newline:
52 ret += self.var_indent + '\n'
53
54 @@ -103,7 +112,9 @@ class ListValue ( object ):
55 class EbuildVar ( object ):
56 """An ebuild variable."""
57
58 - def __init__ ( self, name, value, priority ):
59 + QUOTE_CHARS = "\"\'"
60 +
61 + def __init__ ( self, name, value, priority, param_expansion=True ):
62 """Initializes an EbuildVar.
63
64 arguments:
65 @@ -116,6 +127,8 @@ class EbuildVar ( object ):
66 self.priority = priority
67 self.value = value
68 self.set_level ( 0 )
69 + self.use_param_expansion = param_expansion
70 + self.print_empty_var = False
71
72 def set_level ( self, level ):
73 """Sets the indention level."""
74 @@ -138,5 +151,24 @@ class EbuildVar ( object ):
75 else:
76 return True
77
78 + def _quote_value ( self ):
79 + q = '"' if self.use_param_expansion else "'"
80 + if hasattr ( self, '_get_value_str' ):
81 + vstr = self._get_value_str()
82 + else:
83 + vstr = str ( self.value )
84 + # removing all quote chars from values,
85 + # the "constructed" {R,}DEPEND/R_SUGGESTS/IUSE vars don't use them
86 + # and DESCRIPTION/SRC_URI don't need them
87 + return q + vstr.strip ( EbuildVar.QUOTE_CHARS ) + q
88 +
89 def __str__ ( self ):
90 - return '%s%s="%s"' % ( self.indent, self.name, self.value )
91 + valstr = self._quote_value()
92 + if len ( valstr ) > 2 or self.print_empty_var:
93 + return '%s%s=%s' % ( self.indent, self.name, valstr )
94 + else:
95 + # empty string 'cause var is not set
96 + # -> Ebuilder ignores this var
97 + # this filters out the result of strip(QUOTE_CHARS) for values that
98 + # contain only quote chars
99 + return ""