Allow long names in format string variables
This commit is contained in:
parent
cc6252cdfa
commit
59f89dd3be
1 changed files with 63 additions and 8 deletions
|
@ -1503,14 +1503,28 @@ def format(self, format_string='$_$@$%@$+$=', **kwargs):
|
||||||
in the format string. The format strings you can provide are::
|
in the format string. The format strings you can provide are::
|
||||||
|
|
||||||
$_ Package name
|
$_ Package name
|
||||||
$@ Version
|
$@ Version with '@' prefix
|
||||||
$% Compiler
|
$% Compiler with '%' prefix
|
||||||
$%@ Compiler & compiler version
|
$%@ Compiler with '%' prefix & compiler version with '@' prefix
|
||||||
$+ Options
|
$+ Options
|
||||||
$= Architecture
|
$= Architecture with '=' prefix
|
||||||
$# 7-char prefix of DAG hash
|
$# 7-char prefix of DAG hash with '-' prefix
|
||||||
$$ $
|
$$ $
|
||||||
|
|
||||||
|
You can also use full-string versions, which leave off the prefixes:
|
||||||
|
|
||||||
|
${PACKAGE} Package name
|
||||||
|
${VERSION} Version
|
||||||
|
${COMPILER} Full compiler string
|
||||||
|
${COMPILERNAME} Compiler name
|
||||||
|
${COMPILERVER} Compiler version
|
||||||
|
${OPTIONS} Options
|
||||||
|
${ARCHITECTURE} Architecture
|
||||||
|
${SHA1} Dependencies 8-char sha1 prefix
|
||||||
|
|
||||||
|
${SPACK_ROOT} The spack root directory
|
||||||
|
${SPACK_INSTALL} The default spack install directory, ${SPACK_PREFIX}/opt
|
||||||
|
|
||||||
Optionally you can provide a width, e.g. $20_ for a 20-wide name.
|
Optionally you can provide a width, e.g. $20_ for a 20-wide name.
|
||||||
Like printf, you can provide '-' for left justification, e.g.
|
Like printf, you can provide '-' for left justification, e.g.
|
||||||
$-20_ for a left-justified name.
|
$-20_ for a left-justified name.
|
||||||
|
@ -1526,7 +1540,8 @@ def format(self, format_string='$_$@$%@$+$=', **kwargs):
|
||||||
color = kwargs.get('color', False)
|
color = kwargs.get('color', False)
|
||||||
length = len(format_string)
|
length = len(format_string)
|
||||||
out = StringIO()
|
out = StringIO()
|
||||||
escape = compiler = False
|
named = escape = compiler = False
|
||||||
|
named_str = fmt = ''
|
||||||
|
|
||||||
def write(s, c):
|
def write(s, c):
|
||||||
if color:
|
if color:
|
||||||
|
@ -1566,9 +1581,12 @@ def write(s, c):
|
||||||
elif c == '#':
|
elif c == '#':
|
||||||
out.write('-' + fmt % (self.dag_hash(7)))
|
out.write('-' + fmt % (self.dag_hash(7)))
|
||||||
elif c == '$':
|
elif c == '$':
|
||||||
if fmt != '':
|
if fmt != '%s':
|
||||||
raise ValueError("Can't use format width with $$.")
|
raise ValueError("Can't use format width with $$.")
|
||||||
out.write('$')
|
out.write('$')
|
||||||
|
elif c == '{':
|
||||||
|
named = True
|
||||||
|
named_str = ''
|
||||||
escape = False
|
escape = False
|
||||||
|
|
||||||
elif compiler:
|
elif compiler:
|
||||||
|
@ -1582,6 +1600,43 @@ def write(s, c):
|
||||||
out.write(c)
|
out.write(c)
|
||||||
compiler = False
|
compiler = False
|
||||||
|
|
||||||
|
elif named:
|
||||||
|
if not c == '}':
|
||||||
|
if i == length - 1:
|
||||||
|
raise ValueError("Error: unterminated ${ in format: '%s'"
|
||||||
|
% format_string)
|
||||||
|
named_str += c
|
||||||
|
continue;
|
||||||
|
if named_str == 'PACKAGE':
|
||||||
|
write(fmt % self.name, '@')
|
||||||
|
if named_str == 'VERSION':
|
||||||
|
if self.versions and self.versions != _any_version:
|
||||||
|
write(fmt % str(self.versions), '@')
|
||||||
|
elif named_str == 'COMPILER':
|
||||||
|
if self.compiler:
|
||||||
|
write(fmt % self.compiler, '%')
|
||||||
|
elif named_str == 'COMPILERNAME':
|
||||||
|
if self.compiler:
|
||||||
|
write(fmt % self.compiler.name, '%')
|
||||||
|
elif named_str == 'COMPILERVER':
|
||||||
|
if self.compiler:
|
||||||
|
write(fmt % self.compiler.versions, '%')
|
||||||
|
elif named_str == 'OPTIONS':
|
||||||
|
if self.variants:
|
||||||
|
write(fmt % str(self.variants), '+')
|
||||||
|
elif named_str == 'ARCHITECTURE':
|
||||||
|
if self.architecture:
|
||||||
|
write(fmt % str(self.architecture), '=')
|
||||||
|
elif named_str == 'SHA1':
|
||||||
|
if self.dependencies:
|
||||||
|
out.write(fmt % str(self.dep_hash(8)))
|
||||||
|
elif named_str == 'SPACK_ROOT':
|
||||||
|
out.write(fmt % spack.prefix)
|
||||||
|
elif named_str == 'SPACK_INSTALL':
|
||||||
|
out.write(fmt % spack.install_path)
|
||||||
|
|
||||||
|
named = False
|
||||||
|
|
||||||
elif c == '$':
|
elif c == '$':
|
||||||
escape = True
|
escape = True
|
||||||
if i == length - 1:
|
if i == length - 1:
|
||||||
|
|
Loading…
Reference in a new issue