Module ploigos_step_runner.step_implementers.generate_metadata.commitizen
StepImplementer
for the generate-metadata
step using Commitizen.
Step Configuration
Step configuration expected as input to this step. Could come from:
- static configuration
- runtime configuration
- previous step results
Configuration Key | Required? | Default | Description |
---|---|---|---|
repo-root |
Yes | ./ |
Directory path to the Git repo to anaylze tags. |
cz-json |
Yes | .cz.json |
json file with the commitizen configurataion. |
Result Artifacts
Results artifacts output by this step.
Result Artifact Key | Description |
---|---|
app-version |
Value to use for version portion of semantic version
(https://semver.org/). Uses the version from cz bump in dry-run mode. |
Classes
class Commitizen (workflow_result, parent_work_dir_path, config, environment=None)
-
StepImplementer for the generate-metadata step for Commitizen.
Expand source code
class Commitizen(StepImplementer): """ StepImplementer for the generate-metadata step for Commitizen. """ @staticmethod def step_implementer_config_defaults(): """Getter for the StepImplementer's configuration defaults. Returns ------- dict Default values to use for step configuration values. Notes ----- These are the lowest precedence configuration values. """ return DEFAULT_CONFIG @staticmethod def _required_config_or_result_keys(): """Getter for step configuration or previous step result artifacts that are required before running this step. See Also -------- _validate_required_config_or_previous_step_result_artifact_keys Returns ------- array_list Array of configuration keys or previous step result artifacts that are required before running the step. """ return REQUIRED_CONFIG_OR_PREVIOUS_STEP_RESULT_ARTIFACT_KEYS def _validate_required_config_or_previous_step_result_artifact_keys(self): """Validates that the required configuration keys or previous step result artifacts are set and have valid values. Validates that: * required configuration is given * given 'cz-json' exists Raises ------ AssertionError If step configuration or previous step result artifacts have invalid required values """ super()._validate_required_config_or_previous_step_result_artifact_keys() cz_json_path = self.get_value('cz-json') assert os.path.exists(cz_json_path), \ f'cz-json does not exist: {cz_json_path}' with open(cz_json_path, 'rb') as cz_json: assert json.loads(cz_json.read()), "cz-json is not valid JSON" def _run_step(self): """Runs the step implemented by this StepImplementer. Returns ------- StepResult Object containing the dictionary results of this step. """ step_result = StepResult.from_step_implementer(self) cz_json_path = self.get_value('cz-json') repo_root = self.get_value('repo-root') repo = Repo(repo_root) os.chdir(repo_root) with open(cz_json_path, 'rb+') as cz_json: cz_json_contents = json.loads(cz_json.read()) cz_json_contents['commitizen']['version'] = self._get_version_tag(repo.tags) cz_json.seek(0) cz_json.truncate(0) cz_json.write(json.dumps(cz_json_contents).encode()) out = io.StringIO() sh.cz.bump( # pylint: disable=no-member '--dry-run', '--yes', _out=out, _err=sys.stderr, _tee='err' ) bump_regex = r'tag to create: (\d+.\d+.\d+)' version = re.findall(bump_regex, out.getvalue(),)[0] step_result.add_artifact(name='app-version', value=version) return step_result @staticmethod def _get_version_tag(tags): """Gets the latest tag version and updates the json config. Returns ------- tag_version String representing the latest repo tag version. """ tag_version = '0.0.0' # check for existing repo tags. if no existing repo tag is found then default to version # 0.0.0. if existing repo tags are found then use the latest version tag. for tag in tags: semantic_version = re.match(r'.*(\d+).(\d+).(\d+).*', tag.name) for i, part in enumerate(semantic_version.groups()): tag_version_part = tag_version.split('.')[i] if part > tag_version_part: tag_version = ".".join(semantic_version.groups()) elif part < tag_version_part: break return tag_version
Ancestors
- StepImplementer
- abc.ABC
Static methods
def step_implementer_config_defaults()
-
Getter for the StepImplementer's configuration defaults.
Returns
dict
- Default values to use for step configuration values.
Notes
These are the lowest precedence configuration values.
Inherited members
StepImplementer
:config
create_working_dir_sub_dir
environment
get_config_value
get_copy_of_runtime_step_config
get_result_value
get_value
global_config_defaults
global_environment_config_defaults
has_config_value
run_step
step_config
step_config_overrides
step_environment_config
step_name
sub_step_implementer_name
sub_step_name
work_dir_path
workflow_result
write_working_file