code: def _construct_cmd_win(self, args):
      whole_archive_prefix = "/WHOLEARCHIVE:"
      is_inside_wa_markers = False
  
      def add_prefix(arg, need_check_peers_and_libs):
          key = (
              self._process_arg(arg, ".lib")
              if need_check_peers_and_libs
              else arg
          )
          return whole_archive_prefix + arg if key else arg
  
      def add_whole_archive_prefix(arg, need_check_peers_and_libs):
          if not pcf.is_cmdfile_arg(arg):
              return add_prefix(arg, need_check_peers_and_libs)
  
          cmd_file_path = pcf.cmdfile_path(arg)
          cf_args = pcf.read_from_command_file(cmd_file_path)
          with open(cmd_file_path, "w") as afile:
              for cf_arg in cf_args:
                  afile.write(
                      add_prefix(cf_arg, need_check_peers_and_libs)
                      + "\n"
                  )
          return arg
  
      cmd = []
      for arg in args:
          if arg == self.start_wa_marker:
              is_inside_wa_markers = True
          elif arg == self.end_wa_marker:
              is_inside_wa_markers = False
          elif is_inside_wa_markers:
              cmd.append(add_whole_archive_prefix(arg, False))
              continue
          elif self.peers or self.libs:
              cmd.append(add_whole_archive_prefix(arg, True))
          else:
              cmd.append(arg)
  
      self._check_peers()
  
      return cmd
  
file_path: catboost/build/scripts/process_whole_archive_option.py
imports: import os
  import process_command_files
label_desc: Use image node_id 7 for calling the ProcessWholeArchiveOption obj's underlying member method code with example usage: obj._construct_cmd_win(args) and returns: cmd, unknown, arg, add_prefix