#!/usr/bin/python2
"""Change portions of the object files to good.

The "portion" is defined by the file (which is passed as the only argument to
this script) content. Every line in the file is an object index, which will be
set to good (mark as 0).

This script is meant to be specifically used with the set_file test. This uses
the set files generated by binary_search_state to do the switching.
"""

from __future__ import print_function

import os
import sys

import common


def Main(_):
  working_set = common.ReadWorkingSet()

  if not os.path.exists(os.environ['BISECT_GOOD_SET']):
    print('Good set file does not exist!')
    return 1

  object_index = common.ReadObjectIndex(os.environ['BISECT_GOOD_SET'])

  for oi in object_index:
    working_set[int(oi)] = 0

  common.WriteWorkingSet(working_set)

  return 0


if __name__ == '__main__':
  retval = Main(sys.argv)
  sys.exit(retval)
