File: buildlist.py

package info (click to toggle)
enigmail 2%3A2.2.4-0.3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 2,596 kB
  • sloc: javascript: 4,165; sh: 3,440; python: 1,483; perl: 290; makefile: 282; xml: 13; ansic: 2
file content (42 lines) | stat: -rw-r--r-- 1,172 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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 https://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("{0}\n".format(e))
        existing.add(e)
    f.close()
  finally:
    lock = None

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