config/buildlist.py
author Raphael Catolino <rcatolino@mozilla.com>
Sun, 26 Aug 2012 22:58:23 -0300
changeset 108984 b2ad6e5fc690e5fd561ef698d0bf8e0f291d9d04
parent 98529 f4157e8c410708d76703f19e4dfb61859bfe32d8
child 133841 8f83edc05fa4d458d82668a95853c907544d0b8d
permissions -rw-r--r--
Bug 781313 - Move the euclidGcd and lcm algos form nsStyleAnimation.cpp to mfbt/MathAlgorithms.h r=dbaron,luke

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

'''A generic script to add entries to a file 
if the entry does not already exist.

Usage: buildlist.py <filename> <entry> [<entry> ...]
'''

import sys
import os
from utils import lockFile

def addEntriesToListFile(listFile, entries):
  """Given a file |listFile| containing one entry per line,
  add each entry in |entries| to the file, unless it is already
  present."""
  lock = lockFile(listFile + ".lck")
  try:
    if os.path.exists(listFile):
      f = open(listFile)
      existing = set([x.strip() for x in f.readlines()])
      f.close()
    else:
      existing = set()
    f = open(listFile, 'a')
    for e in entries:
      if e not in existing:
        f.write("%s\n" % e)
        existing.add(e)
    f.close()
  finally:
    lock = None

if __name__ == '__main__':
  if len(sys.argv) < 3:
    print >>sys.stderr, "Usage: buildlist.py <list file> <entry> [<entry> ...]"
    sys.exit(1)
  addEntriesToListFile(sys.argv[1], sys.argv[2:])