cros_deploy: Warn when the user seems to forget cros workon

This commit add warning messages to help us notice that we forgot
to run cros workon before running cros deploy.

BUG=None
TEST=cros deploy --board=$BOARD WORKED_ON_PACKAGE NOT_WORKED_ON_PACKAGE
TEST=cros_workon --board=$BOARD --all start && cros deploy --board=$BOARD PACKAGES

Change-Id: I05922cc67767c8b64ee7003eb71752b7186119a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2373849
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Kimiyuki Onaka <kimiyuki@google.com>
Commit-Queue: Kimiyuki Onaka <kimiyuki@google.com>
diff --git a/cli/deploy.py b/cli/deploy.py
index 5a71657..f981c90 100644
--- a/cli/deploy.py
+++ b/cli/deploy.py
@@ -28,6 +28,7 @@
 from chromite.lib import portage_util
 from chromite.lib import remote_access
 from chromite.lib import dlc_lib
+from chromite.lib import workon_helper
 try:
   import portage
 except ImportError:
@@ -1183,6 +1184,15 @@
         logging.notice('No packages to %s', action_str)
         return
 
+      # Warn when the user seems to forget `cros workon start`.
+      worked_on_cps = workon_helper.WorkonHelper(sysroot).ListAtoms()
+      for package in listed:
+        cp = portage_util.SplitCPV(package).cp
+        if cp not in worked_on_cps:
+          logging.warning(
+              'Are you intentionally deploying unmodified packages, or did '
+              'you forget to run `cros workon --board=$BOARD start %s`?', cp)
+
       logging.notice('These are the packages to %s:', action_str)
       for i, pkg in enumerate(pkgs):
         logging.notice('%s %d) %s', '*' if pkg in listed else ' ', i + 1, pkg)