code: def run(self, args):
          
          email = args.email                  # email of person to send email to
          username = args.username            # username of person to send email to, will be None if email is specified
          force_send = args.resend            # is this a resend so we should force sending
          auth_role = args.auth_role          # authorization role(project permissions) to give to the user
          msg_file = args.msg_file            # message file who's contents will be sent with the share
          message = read_argument_file_contents(msg_file)
          print("Sharing project.")
          to_user = self.remote_store.lookup_or_register_user_by_email_or_username(email, username)
          try:
              project = self.fetch_project(args, must_exist=True, include_children=False)
              dest_email = self.service.share(project, to_user, force_send, auth_role, message)
              print("Share email message sent to " + dest_email)
          except D4S2Error as ex:
              if ex.warning:
                  print(ex.message)
              else:
                  raise
docs: Gives user permission based on auth_role arg and sends email to that user.
          :param args Namespace arguments parsed from the command line