author Nathan Froyd <>
Thu, 11 Apr 2013 16:57:54 -0400
changeset 128513 ebcfc07b631511d2a5c9bd52abbe2ff76428a10f
parent 123442 8f83edc05fa4d458d82668a95853c907544d0b8d
permissions -rw-r--r--
Bug 860860 - followup: fix json.dump call and be more explicit about object ordering; r=gps It turns out the simple s/simplejson/json/ didn't work because build_tooltool_manifest used item_sort_key to ensure that the objects read in were written out in the same order. This scheme was brittle, since it only understand a couple of keys from the manifest file, and it doesn't work with the stdlib json. Instead, use object_pairs_hook=collections.OrderedDict with json.load, which ensures that current objects get written out in the same order they were read in *and* that any future keys will be handled automagically. DONTBUILD because NPOTB

# 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

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

Usage: <filename> <entry> [<entry> ...]
from __future__ import print_function

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
  lock = lockFile(listFile + ".lck")
    if os.path.exists(listFile):
      f = open(listFile)
      existing = set(x.strip() for x in f.readlines())
      existing = set()
    f = open(listFile, 'a')
    for e in entries:
      if e not in existing:
    lock = None

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