ANDROID: Add -X/--from-list to add prefix to the subject

Signed-off-by: Mostafa Saleh <smostafa@google.com>
diff --git a/src/b4/__init__.py b/src/b4/__init__.py
index d56d24a..a8dba33 100644
--- a/src/b4/__init__.py
+++ b/src/b4/__init__.py
@@ -665,7 +665,7 @@
 
     def get_am_ready(self, noaddtrailers: bool = False, addmysob: bool = False,
                      addlink: bool = False, cherrypick: Optional[List[int]] = None, copyccs: bool = False,
-                     allowbadchars: bool = False, showchecks: bool = False, androidBug = 0) -> List[EmailMessage]:
+                     allowbadchars: bool = False, showchecks: bool = False, androidBug = 0, fromList: bool = False) -> List[EmailMessage]:
 
         usercfg = get_user_config()
         config = get_main_config()
@@ -807,7 +807,7 @@
                 if noaddtrailers:
                     add_trailers = False
                 msg = lmsg.get_am_message(add_trailers=add_trailers, extras=extras, copyccs=copyccs,
-                                          addmysob=addmysob, allowbadchars=allowbadchars, androidBug=androidBug)
+                                          addmysob=addmysob, allowbadchars=allowbadchars, androidBug=androidBug, fromList = fromList)
                 if local_check_cmds:
                     lmsg.load_local_ci_status(local_check_cmds)
                 if lmsg.local_ci_status or lmsg.pw_ci_status in {'success', 'fail', 'warning'}:
@@ -2462,7 +2462,7 @@
 
         self.body = LoreMessage.rebuild_message(bheaders, message, fixtrailers, basement, signature)
 
-    def get_am_subject(self, indicate_reroll: bool = True, use_subject: Optional[str] = None) -> str:
+    def get_am_subject(self, indicate_reroll: bool = True, fromList: bool = False, use_subject: Optional[str] = None) -> str:
         # Return a clean patch subject
         parts = ['PATCH']
         if self.lsubject.rfc:
@@ -2482,12 +2482,14 @@
 
         if not use_subject:
             use_subject = self.lsubject.subject
+        if fromList:
+            use_subject = "FROMLIST: " + use_subject
 
         return '[%s] %s' % (' '.join(parts), use_subject)
 
     def get_am_message(self, add_trailers: bool = True, addmysob: bool = False,
                        extras: Optional[List['LoreTrailer']] = None, copyccs: bool = False,
-                       androidBug = 0,
+                       androidBug = 0, fromList = False,
                        allowbadchars: bool = False) -> EmailMessage:
         # Look through the body to make sure there aren't any suspicious unicode control flow chars
         # First, encode into ascii and compare for a quick utf8 presence test
@@ -2533,7 +2535,7 @@
 
         am_msg = EmailMessage()
         hfrom = format_addrs([(str(i.get('Author', '')), str(i.get('Email')))])
-        am_msg.add_header('Subject', self.get_am_subject(indicate_reroll=False, use_subject=i.get('Subject')))
+        am_msg.add_header('Subject', self.get_am_subject(indicate_reroll=False, use_subject=i.get('Subject'),fromList=fromList))
         am_msg.add_header('From', hfrom)
         am_msg.add_header('Date', str(i.get('Date')))
         am_msg.add_header('Message-Id', f'<{self.msgid}>')
diff --git a/src/b4/command.py b/src/b4/command.py
index 8ea997e..582b7b8 100644
--- a/src/b4/command.py
+++ b/src/b4/command.py
@@ -70,7 +70,8 @@
                       help='Add a Message-ID: trailer to every patch')
     sp.add_argument('-B', '--bug', dest='androidBug', type=int, default=None,
                     help='Add Bug: XXX at the end, value of zero is ignored')
-
+    sp.add_argument('-X', '--from-list', dest='fromList', action='store_true', default=False,
+                      help='Add FROMLIST: tag to the patch')
 
 def cmd_mbox(cmdargs: argparse.Namespace) -> None:
     import b4.mbox
diff --git a/src/b4/mbox.py b/src/b4/mbox.py
index 25d11c1..a72045d 100644
--- a/src/b4/mbox.py
+++ b/src/b4/mbox.py
@@ -239,7 +239,7 @@
 
     am_msgs = lser.get_am_ready(noaddtrailers=cmdargs.noaddtrailers, addmysob=cmdargs.addmysob, addlink=cmdargs.addlink,
                                 cherrypick=cherrypick, copyccs=cmdargs.copyccs, allowbadchars=cmdargs.allowbadchars,
-                                showchecks=cmdargs.check, androidBug=cmdargs.androidBug)
+                                showchecks=cmdargs.check, androidBug=cmdargs.androidBug, fromList=cmdargs.fromList)
     logger.info('---')
 
     if cherrypick is None: