config: Allow a default refspec to be specified
Also update config file version to 9 due to this format change. Signed-off-by: Paul Barker <pbarker@konsulko.com> [Jan: style fix] Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
		@@ -75,3 +75,13 @@ Added
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- ``patches`` property to ``repos`` to be able to apply additional patches to
 | 
					- ``patches`` property to ``repos`` to be able to apply additional patches to
 | 
				
			||||||
  the repo.
 | 
					  the repo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Version 9
 | 
				
			||||||
 | 
					---------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Added
 | 
				
			||||||
 | 
					~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- ``defaults`` key can now be used to set a default value for the repository
 | 
				
			||||||
 | 
					  property ``refspec``. This default value will be used if the appropriate
 | 
				
			||||||
 | 
					  property is not defined for a given repository.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -310,6 +310,22 @@ Configuration reference
 | 
				
			|||||||
      * ``file``: string [required]
 | 
					      * ``file``: string [required]
 | 
				
			||||||
          The path to the file relative to the root of the repository.
 | 
					          The path to the file relative to the root of the repository.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* ``defaults``: dict [optional]
 | 
				
			||||||
 | 
					    This key can be used to set default values for various properties.
 | 
				
			||||||
 | 
					    This may help you to avoid repeating the same property assignment in
 | 
				
			||||||
 | 
					    multiple places if, for example, you wish to use the same refspec for
 | 
				
			||||||
 | 
					    all repositories.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * ``repos``: dict [optional]
 | 
				
			||||||
 | 
					      This key can contain default values for some repository properties.
 | 
				
			||||||
 | 
					      If a default value is set for a repository property it may still be
 | 
				
			||||||
 | 
					      overridden by setting the same property to a different value in a given
 | 
				
			||||||
 | 
					      repository.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * ``refspec``: string [optional]
 | 
				
			||||||
 | 
					        Sets the default ``refspec`` property applied to all repositories that
 | 
				
			||||||
 | 
					        do not override this.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* ``machine``: string [optional]
 | 
					* ``machine``: string [optional]
 | 
				
			||||||
    Contains the value of the ``MACHINE`` variable that is written into the
 | 
					    Contains the value of the ``MACHINE`` variable that is written into the
 | 
				
			||||||
    ``local.conf``. Can be overwritten by the ``KAS_MACHINE`` environment
 | 
					    ``local.conf``. Can be overwritten by the ``KAS_MACHINE`` environment
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,5 +28,5 @@ __copyright__ = 'Copyright (c) Siemens AG, 2017-2018'
 | 
				
			|||||||
__version__ = '2.1.1'
 | 
					__version__ = '2.1.1'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Please update docs/format-changelog.rst when changing the file version.
 | 
					# Please update docs/format-changelog.rst when changing the file version.
 | 
				
			||||||
__file_version__ = 8
 | 
					__file_version__ = 9
 | 
				
			||||||
__compatible_file_version__ = 1
 | 
					__compatible_file_version__ = 1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,12 +83,14 @@ class Config:
 | 
				
			|||||||
            and the `Repo` instances as values.
 | 
					            and the `Repo` instances as values.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        repo_config_dict = self._config.get('repos', {})
 | 
					        repo_config_dict = self._config.get('repos', {})
 | 
				
			||||||
 | 
					        repo_defaults = self._config.get('defaults', {}).get('repos', {})
 | 
				
			||||||
        repo_dict = {}
 | 
					        repo_dict = {}
 | 
				
			||||||
        repo_fallback_path = os.path.dirname(self.filenames[0])
 | 
					        repo_fallback_path = os.path.dirname(self.filenames[0])
 | 
				
			||||||
        for repo in repo_config_dict:
 | 
					        for repo in repo_config_dict:
 | 
				
			||||||
            repo_config_dict[repo] = repo_config_dict[repo] or {}
 | 
					            repo_config_dict[repo] = repo_config_dict[repo] or {}
 | 
				
			||||||
            repo_dict[repo] = Repo.factory(repo,
 | 
					            repo_dict[repo] = Repo.factory(repo,
 | 
				
			||||||
                                           repo_config_dict[repo],
 | 
					                                           repo_config_dict[repo],
 | 
				
			||||||
 | 
					                                           repo_defaults,
 | 
				
			||||||
                                           repo_fallback_path)
 | 
					                                           repo_fallback_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return repo_dict
 | 
					        return repo_dict
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,21 @@ CONFIGSCHEMA = {
 | 
				
			|||||||
                },
 | 
					                },
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        'defaults': {
 | 
				
			||||||
 | 
					            'type': 'object',
 | 
				
			||||||
 | 
					            'additionalProperties': False,
 | 
				
			||||||
 | 
					            'properties': {
 | 
				
			||||||
 | 
					                'repos': {
 | 
				
			||||||
 | 
					                    'type': 'object',
 | 
				
			||||||
 | 
					                    'additionalProperties': False,
 | 
				
			||||||
 | 
					                    'properties': {
 | 
				
			||||||
 | 
					                        'refspec': {
 | 
				
			||||||
 | 
					                            'type': 'string',
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        'machine': {
 | 
					        'machine': {
 | 
				
			||||||
            'type': 'string',
 | 
					            'type': 'string',
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,7 +78,7 @@ class Repo:
 | 
				
			|||||||
                                self.path, self._layers)
 | 
					                                self.path, self._layers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def factory(name, repo_config, repo_fallback_path):
 | 
					    def factory(name, repo_config, repo_defaults, repo_fallback_path):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
            Returns a Repo instance depending on params.
 | 
					            Returns a Repo instance depending on params.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
@@ -99,7 +99,8 @@ class Repo:
 | 
				
			|||||||
        url = repo_config.get('url', None)
 | 
					        url = repo_config.get('url', None)
 | 
				
			||||||
        name = repo_config.get('name', name)
 | 
					        name = repo_config.get('name', name)
 | 
				
			||||||
        typ = repo_config.get('type', 'git')
 | 
					        typ = repo_config.get('type', 'git')
 | 
				
			||||||
        refspec = repo_config.get('refspec', None)
 | 
					        refspec = repo_config.get('refspec',
 | 
				
			||||||
 | 
					                                  repo_defaults.get('refspec', None))
 | 
				
			||||||
        path = repo_config.get('path', None)
 | 
					        path = repo_config.get('path', None)
 | 
				
			||||||
        disable_operations = False
 | 
					        disable_operations = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user