src/buildstream_plugins/sourcemirrors/simple_mirror.py (14 lines of code) (raw):
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
simple_mirror - plugin for simplifying mirror definitions
=========================================================
.. note::
The ``simple_mirror`` plugin is available *Since 2.4.0*
**Usage:**
.. code:: yaml
- name: my-mirror
kind: simple_mirror
config:
url: https://example.com/mirrors/{alias}/
aliases:
- my-alias
- another-alias
This plugin simplifies defining mirrors for projects where the mirrors follow
a predictable URL format that only varies with the alias name.
"""
from posixpath import join
from buildstream import SourceMirror
class SimpleMirror(SourceMirror):
BST_MIN_VERSION = "2.2"
def configure(self, node):
node.validate_keys(["url", "aliases"])
self.set_supported_aliases(node.get_str_list("aliases"))
self.url = node.get_str("url")
def translate_url(self, *, alias, alias_url, source_url, extra_data):
base_url = self.url.format(alias=alias)
translated_url = join(base_url, source_url)
return translated_url
def setup():
return SimpleMirror