pw_status: Script updates; fix deprecation message
Change-Id: Ie6702f749d28b02c3640bf3a9c0faeb37b803aa3
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/29262
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
diff --git a/pw_status/public/pw_status/status.h b/pw_status/public/pw_status/status.h
index e142699..33d0171 100644
--- a/pw_status/public/pw_status/status.h
+++ b/pw_status/public/pw_status/status.h
@@ -248,7 +248,7 @@
// Functions that create a Status with the specified code.
// clang-format off
- [[deprecated("Use pw::StatusOk()"), nodiscard]] static constexpr Status Ok() {
+ [[deprecated("Use pw::OkStatus()"), nodiscard]] static constexpr Status Ok() {
return PW_STATUS_OK;
}
[[nodiscard]] static constexpr Status Cancelled() {
diff --git a/pw_status/py/pw_status/update_style.py b/pw_status/py/pw_status/update_style.py
index ff59115..07ec756 100755
--- a/pw_status/py/pw_status/update_style.py
+++ b/pw_status/py/pw_status/update_style.py
@@ -25,7 +25,11 @@
from pw_presubmit import git_repo
+# Files in which to run replacements.
+_PATHSPECS = '*.h', '*.c', '*.cc', '*.cpp', '*.inc', '*.cxx', '*.hh', '*.py'
+
_REMAP = {
+ # Exclude OK since it maps to OkStatus() instead of Status::Ok().
'CANCELLED': 'Cancelled',
'UNKNOWN': 'Unknown',
'INVALID_ARGUMENT': 'InvalidArgument',
@@ -47,6 +51,7 @@
_CODES = '|'.join(_REMAP.keys())
_FUNCTIONS = '|'.join(_REMAP.values())
+_STATUS_OK = re.compile(br'\bStatus::(?:OK\b|Ok\(\))')
_STATUS_WITH_SIZE_CTOR = re.compile(
fr'\bStatusWithSize\(Status::({_CODES}),\s*'.encode())
_STATUS = re.compile(fr'\b(Status|StatusWithSize)::({_CODES})(?!")\b'.encode())
@@ -56,14 +61,14 @@
def _remap_status_with_size(match) -> bytes:
+ if match.group(1) == b'OK':
+ return b'StatusWithSize('
+
return f'StatusWithSize::{_REMAP[match.group(1).decode()]}('.encode()
def _remap_codes(match) -> bytes:
status, code = (g.decode() for g in match.groups())
- if status == 'OK':
- return b'OkStatus()'
-
return f'{status}::{_REMAP[code]}()'.encode()
@@ -86,6 +91,7 @@
def update_status(paths: Iterable[Path]) -> None:
+ """Updates the Status style for a set of paths."""
if not paths:
paths = [Path.cwd()]
@@ -95,12 +101,23 @@
updated = 0
- for file in git_repo.list_files(pathspecs=('*.h', '*.cc', '*.cpp'),
- repo_path=path):
+ for file in git_repo.list_files(pathspecs=_PATHSPECS, repo_path=path):
orig = file.read_bytes()
+ # Replace Status::OK and Status::Ok() with OkStatus().
+ text = _STATUS_OK.sub(b'OkStatus()', orig)
+
+ # Replace StatusWithSize::Ok with the constructor.
+ text = text.replace(b'StatusWithSize::Ok(', b'StatusWithSize(')
+
+ # Add `using pw::OkStatus` if `using pw::Status` is present.
+ text = text.replace(b'using pw::Status;',
+ b'using pw::Status; using pw::OkStatus;')
+ text = text.replace(b'using ::pw::Status;',
+ b'using ::pw::Status; using ::pw::OkStatus;')
+
# Replace StatusWithSize constructor
- text = _STATUS_WITH_SIZE_CTOR.sub(_remap_status_with_size, orig)
+ text = _STATUS_WITH_SIZE_CTOR.sub(_remap_status_with_size, text)
# Replace Status and StatusWithSize
text = _STATUS.sub(_remap_codes, text)
@@ -112,7 +129,8 @@
file.write_bytes(text)
print('Updated', updated, 'files.')
- print('Manually inspect the changes! This script is not perfect.')
+ print('Run pw format and manually inspect the changes!',
+ 'This script is not perfect.')
def main():