update_program_fw: Add some extra display and checks
Add some extra checks and displays for verification.
BUG=none
TEST=Update puff firmware
Change-Id: I66a67994bd6795f3e6520a78e8c29284b118e13e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/2306630
Commit-Queue: Andrew McRae <amcrae@chromium.org>
Commit-Queue: Kangheui Won <khwon@chromium.org>
Tested-by: Andrew McRae <amcrae@chromium.org>
Auto-Submit: Andrew McRae <amcrae@chromium.org>
Reviewed-by: Kangheui Won <khwon@chromium.org>
diff --git a/contrib/update_program_fw b/contrib/update_program_fw
index a682f33..6d08d1c 100755
--- a/contrib/update_program_fw
+++ b/contrib/update_program_fw
@@ -44,6 +44,7 @@
DEFINE_string reviewer "${DEFAULT_REVIEWER}" "The reviewer to send the CLs to (optional)"
DEFINE_string test "none" "The 'TEST=' string added to the commit message"
DEFINE_boolean dryrun "${FLAGS_FALSE}" "Do not perform any actions, just validate and print arguments"
+DEFINE_boolean verify "${FLAGS_TRUE}" "Ask for verification before proceeding"
# Set before flag processing
COMMAND=$(basename "$0")
@@ -114,6 +115,15 @@
fi
}
#
+# return 'yes' or 'no' for boolean true or false
+yes_no() {
+ if [[ "${1}" -eq "${FLAGS_FALSE}" ]]; then
+ echo -n "no"
+ else
+ echo -n "yes"
+ fi
+}
+#
# Return true if repo has changes.
#
changed() {
@@ -164,8 +174,6 @@
return 1
fi
local nf="${TEMPDIR}/new-${1}"
- echo "Replace ${ANY_MAJOR} with ${NEW_MAJOR}"
- echo "Replace ${ANY_MINOR} with ${NEW_MINOR}"
sed -E "s/${ANY_MAJOR}/${NEW_MAJOR}/" "${1}" > "${nf}"
sed -i -E "s/${ANY_MINOR}/${NEW_MINOR}/" "${nf}"
if cmp -s "${1}" "${nf}"; then
@@ -268,39 +276,43 @@
die "${DEVCONTRIB}: invalid directory"
fi
#
-# If requesting dry run, dump arguments and exit.
+# Display arguments.
+#
+echo "Invoked as:"
+echo "${COMMAND} ${CMDARGS}"
+echo "Program (board) to be updated: ${FLAGS_board}"
+echo -n "Projects to be updated are: "
+for PROJ in "${PROJECTS[@]}"; do
+ echo -n " ${PROJ}"
+done
+if [[ -n "${SKIPPED}" ]]; then
+ echo -n " (skipped:"
+ for S in "${SKIPPED[@]}"; do
+ echo -n " ${S}"
+ done
+ echo -n ")"
+fi
+echo
+echo "Release number of upgrade: ${FLAGS_release}"
+echo "Major version of release: ${MAJOR_VERSION}"
+echo "Minor version of release: ${MINOR_VERSION}"
+echo "BUG string used in commit: ${FLAGS_bug}"
+echo "TEST string used in commit: ${FLAGS_test}"
+echo "Reviewer assigned to CLs: ${FLAGS_reviewer:-None}"
+echo "repo branch to be used is: ${BRANCH}"
+echo "Update program.star version: $(yes_no ${FLAGS_program})"
+echo "Coreboot build enabled: $(yes_no ${FLAGS_build})"
+echo "Dry run requested: $(yes_no ${FLAGS_dryrun})"
+echo "Verify before proceeding: $(yes_no ${FLAGS_verify})"
#
if [[ "${FLAGS_dryrun}" -eq "${FLAGS_TRUE}" ]]; then
- echo "Dry run requested, invoked as:"
- echo "${COMMAND} ${CMDARGS}"
- echo "Program (board) to be updated: ${FLAGS_board}"
- echo -n "Projects to be updated are: "
- for PROJ in "${PROJECTS[@]}"; do
- echo -n " ${PROJ}"
- done
- if [[ -n "${SKIPPED}" ]]; then
- echo -n " (skipped:"
- for S in "${SKIPPED[@]}"; do
- echo -n " ${S}"
- done
- echo -n ")"
- fi
- echo
- echo "Release number of upgrade: ${FLAGS_release}"
- echo "Major version of release: ${MAJOR_VERSION}"
- echo "Minor version of release: ${MINOR_VERSION}"
- echo "BUG string used in commit: ${FLAGS_bug}"
- echo "TEST string used in commit: ${FLAGS_test}"
- echo "Reviewer assigned to CLs: ${FLAGS_reviewer:-None}"
- echo -n "Coreboot build enabled: "
- if [[ "${FLAGS_build}" -eq "${FLAGS_FALSE}" ]]; then
- echo "no"
- else
- echo "yes"
- fi
- echo "repo branch to be used is: ${BRANCH}"
+ echo "Dry run requested, exiting"
exit 0
fi
+read -p "Proceed with updating firmware (y/N)? " -r
+if [[ ! "${REPLY}" =~ ^[Yy]$ ]]; then
+ die "Not verified, exiting..."
+fi
if [[ "${FLAGS_build}" -eq "${FLAGS_FALSE}" ]]; then
echo
echo "******************************************"