diff --git a/detection_rules/version_lock.py b/detection_rules/version_lock.py index 1398e5931ce..c263283d998 100644 --- a/detection_rules/version_lock.py +++ b/detection_rules/version_lock.py @@ -170,7 +170,7 @@ def get_locked_hash(self, rule_id: str, min_stack_version: Optional[str] = None) def manage_versions(self, rules: RuleCollection, exclude_version_update=False, save_changes=False, - verbose=True) -> (List[str], List[str], List[str]): + verbose=True, buffer_int: int = 100) -> (List[str], List[str], List[str]): """Update the contents of the version.lock file and optionally save changes.""" from .packaging import current_stack_version @@ -240,6 +240,12 @@ def log_changes(r, route_taken, new_rule_version, *msg): elif min_stack > latest_locked_stack_version: route = 'B' # 3) on the latest stack, locking in a breaking change + + # preserve buffer space to support forked version spacing + if exclude_version_update: + buffer_int -= 1 + lock_from_rule["version"] = lock_from_file["version"] + buffer_int + previous_lock_info = { "max_allowable_version": lock_from_rule['version'] - 1, "rule_name": lock_from_file["rule_name"], @@ -253,7 +259,6 @@ def log_changes(r, route_taken, new_rule_version, *msg): lock_from_file["previous"][str(latest_locked_stack_version)] = previous_lock_info # overwrite the "latest" part of the lock at the top level - # TODO: would need to preserve space here as well if supporting forked version spacing lock_from_file.update(lock_from_rule, min_stack_version=str(min_stack)) new_version = lock_from_rule['version'] log_changes(