Skip to content
Snippets Groups Projects
Commit 1b7eedbb authored by Massimiliano Culpo's avatar Massimiliano Culpo
Browse files

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
parent b71d430a
No related branches found
No related tags found
No related merge requests found
......@@ -328,6 +328,11 @@
'anyOf': [
{
'properties': {
'hash_length': {
'type': 'integer',
'minimum': 0,
'default': 7
},
'whitelist': {'$ref': '#/definitions/array_of_strings'},
'blacklist': {'$ref': '#/definitions/array_of_strings'},
'naming_scheme': {
......
......@@ -188,6 +188,7 @@ def parse_config_options(module_generator):
#####
# Automatic loading loads
module_file_actions['hash_length'] = module_configuration.get('hash_length', 7)
module_file_actions['autoload'] = dependencies(
module_generator.spec, module_file_actions.get('autoload', 'none'))
# Prerequisites
......@@ -295,7 +296,9 @@ def use_name(self):
if constraint in self.spec:
suffixes.append(suffix)
# 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)
return name
......@@ -338,7 +341,7 @@ def blacklisted(self):
return False
def write(self):
def write(self, overwrite=False):
"""
Writes out a module file for this object.
......@@ -399,6 +402,15 @@ def write(self):
for line in self.module_specific_content(module_configuration):
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
with open(self.file_name, 'w') as f:
f.write(module_file_content)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment