stash/shared/mung.py (15 lines of code) (raw):
# Copyright (c) The stash contributors
#
# 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.
import os
import re
def normalize(s: str) -> str:
"""
Replaces all characters in the input string `s` that are not
alphanumeric, underscores, hyphens, or periods with underscores.
"""
return re.sub(r"[^_\-.\w]", "_", s)
def mung(key: str, ref: str) -> str:
"""Combine `key` and `ref` into a single string separated by a hyphen."""
key = normalize(key)
ref = normalize(ref)
return f"{key}-{ref}"
def output_munged_name(ref="ref_name", key="stash_key", output="stash_name"):
"""
Reads the stash key and ref name from the matching environment variables,
combines them and saves the result in a GHA output variable.
Args:
ref (str, optional): The name of the environment variable containing
the reference string. Defaults to "ref_name".
key (str, optional): The name of the environment variable containing
the key string. Defaults to "stash_key".
output (str, optional): The output variable name to be used in the
GitHub Actions output file. Defaults to "stash_name".
Returns:
None
"""
ref = os.environ[ref]
key = os.environ[key]
name = mung(key, ref)
print(f"::debug::Creating output {output}={name} ")
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
f.write(f"{output}={name}" + "\n")