#!/usr/bin/env python import sys, os, threading, Queue import bom, parts_db, schem NUM_THREADS = 3 if len(sys.argv) < 2: print "Usage: %s DIR -N SCHEMATIC1 -M SCHEMATIC2 ..." % os.path.basename( sys.argv[0] ) print "Where N and M are multipliers for the number of boards" sys.exit(1) db = parts_db.Db( bom.PARTS_DB ) boards = bom.MultiBoardBom(db) mul = 1 for fname in sys.argv[1:]: if fname[0] == '-': mul = int(fname[1:]) else: board = bom.BoardBom( db, fname, os.path.basename( fname ) ) boards.add_boards(board, mul) mul = 1 stock = {} n = 0 for x in boards.stockcheck(): if not stock.has_key(x[0]): stock[x[0]] = [] stock[ x[0] ].append(x[1]) # Show stock checking progress: n = n + 1 sys.stdout.write( "\rChecking: %i/%i" % (n, len(boards)) ) sys.stdout.flush() print if stock.has_key( bom.STOCK_UNKNOWN ): print "Warning: Cannot check suppliers for these parts:" for part in stock[bom.STOCK_UNKNOWN]: print "\t- %s %s(%s)" % ( part["sr-code"], part["supplier"], part["order-number"] ) if stock.has_key( bom.STOCK_OUT ): print "Out of stock:" for part in stock[bom.STOCK_OUT]: print "\t- %s %s(%s)" % ( part["sr-code"], part["supplier"], part["order-number"] ) sys.exit(1) print "All checkable parts are sufficiently in stock." sys.exit(0)