modules.yaml : added hash_length as a new keyword
config : - added `hash_length` under the modules section EnvModules : - take into consideration hash_length when constructing `file_name` - added logic to warn and skip module file writing in case of file name clash
This commit is contained in:
parent
b71d430af6
commit
1b7eedbb7d
2 changed files with 19 additions and 2 deletions
|
@ -328,6 +328,11 @@
|
||||||
'anyOf': [
|
'anyOf': [
|
||||||
{
|
{
|
||||||
'properties': {
|
'properties': {
|
||||||
|
'hash_length': {
|
||||||
|
'type': 'integer',
|
||||||
|
'minimum': 0,
|
||||||
|
'default': 7
|
||||||
|
},
|
||||||
'whitelist': {'$ref': '#/definitions/array_of_strings'},
|
'whitelist': {'$ref': '#/definitions/array_of_strings'},
|
||||||
'blacklist': {'$ref': '#/definitions/array_of_strings'},
|
'blacklist': {'$ref': '#/definitions/array_of_strings'},
|
||||||
'naming_scheme': {
|
'naming_scheme': {
|
||||||
|
|
|
@ -188,6 +188,7 @@ def parse_config_options(module_generator):
|
||||||
#####
|
#####
|
||||||
|
|
||||||
# Automatic loading loads
|
# Automatic loading loads
|
||||||
|
module_file_actions['hash_length'] = module_configuration.get('hash_length', 7)
|
||||||
module_file_actions['autoload'] = dependencies(
|
module_file_actions['autoload'] = dependencies(
|
||||||
module_generator.spec, module_file_actions.get('autoload', 'none'))
|
module_generator.spec, module_file_actions.get('autoload', 'none'))
|
||||||
# Prerequisites
|
# Prerequisites
|
||||||
|
@ -295,7 +296,9 @@ def use_name(self):
|
||||||
if constraint in self.spec:
|
if constraint in self.spec:
|
||||||
suffixes.append(suffix)
|
suffixes.append(suffix)
|
||||||
# Always append the hash to make the module file unique
|
# Always append the hash to make the module file unique
|
||||||
suffixes.append(self.spec.dag_hash())
|
hash_length = configuration.pop('hash_length', 7)
|
||||||
|
if hash_length != 0:
|
||||||
|
suffixes.append(self.spec.dag_hash(length=hash_length))
|
||||||
name = '-'.join(suffixes)
|
name = '-'.join(suffixes)
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
@ -338,7 +341,7 @@ def blacklisted(self):
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def write(self):
|
def write(self, overwrite=False):
|
||||||
"""
|
"""
|
||||||
Writes out a module file for this object.
|
Writes out a module file for this object.
|
||||||
|
|
||||||
|
@ -399,6 +402,15 @@ def write(self):
|
||||||
for line in self.module_specific_content(module_configuration):
|
for line in self.module_specific_content(module_configuration):
|
||||||
module_file_content += line
|
module_file_content += line
|
||||||
|
|
||||||
|
# Print a warning in case I am accidentally overwriting
|
||||||
|
# a module file that is already there (name clash)
|
||||||
|
if not overwrite and os.path.exists(self.file_name):
|
||||||
|
message = 'Module file already exists : skipping creation\n'
|
||||||
|
message += 'file : {0.file_name}\n'
|
||||||
|
message += 'spec : {0.spec}'
|
||||||
|
tty.warn(message.format(self))
|
||||||
|
return
|
||||||
|
|
||||||
# Dump to file
|
# Dump to file
|
||||||
with open(self.file_name, 'w') as f:
|
with open(self.file_name, 'w') as f:
|
||||||
f.write(module_file_content)
|
f.write(module_file_content)
|
||||||
|
|
Loading…
Reference in a new issue