Add a couple of alternate USBmicroB connectors
[hw/altusmetrum] / scheme / gnet-partslist-bom.scm
index dd90ea037f7c9379056deea606cfd7516d436b0e..39ab5e622596dc6db056ef2cadc49dd7e7b0fd85 100644 (file)
@@ -16,7 +16,7 @@
 ; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
 ; The /'s may not work on win32
-(load (string-append gedadata "/scheme/gnet-partslist-common.scm"))
+(load-from-path "gnet-partslist-common.scm")
 
 (define (caddddddr s)
   (car (cdr (cdr (cdr (cdr (cdr (cdr s))))))))
 
 (define get-vendor
    (lambda (package)
-      (gnetlist:get-package-attribute package "vendor")))
+      (string-trim-both (gnetlist:get-package-attribute package "vendor"))))
 
+(define get-loadstatus
+   (lambda (package)
+      (string-trim-both (gnetlist:get-package-attribute package "loadstatus"))))
+  
 (define get-vendor-part-number
    (lambda (package)
-      (gnetlist:get-package-attribute package "vendor_part_number")))
+      (string-trim-both (gnetlist:get-package-attribute package "vendor_part_number"))))
 
 (define get-footprint
    (lambda (package)
-      (gnetlist:get-package-attribute package "footprint")))
+      (string-trim-both (gnetlist:get-package-attribute package "footprint"))))
 
 (define (get-parts-table-bom packages vendor)
   (if (null? packages)
       '()
       (let ((package (car packages)))
-       (if (string=? (get-vendor package) vendor)
+       (if (and (not (string=? (get-loadstatus package) "noload")) (string=? (get-vendor package) vendor))
            (if (string=? (get-device package) "include")
                (get-parts-table-bom (cdr packages) vendor)
                (cons (list package
            (get-parts-table-bom (cdr packages) vendor)))))
 
 (define (get-opt-helper option list)
-  (if list
+  (if (not (null? list))
       (let ((param (car list)))
-       (if (string-prefix? option (car param))
+       (if (and param (string-prefix? option (car param)))
            (string-drop (car param) (string-length option))
            (get-opt-helper option (cdr list))))
-      nil)
+      #f)
   )
 
 (define (get-opt option default)
 (define (get-vendor-match)
   (get-opt "vendor" "digikey"))
 
+(define (set-quantity)
+  (let ((quant (get-opt "quantity" "1")))
+    (set! multiplier (string->number quant))))
+
 (define (partslist-bom output-filename)
   (let ((port (open-output-file output-filename))
        (parts-table (marge-sort-with-multikey (get-parts-table-bom packages (get-vendor-match)) '(1 2 3 0))))
     (set! parts-table (count-same-parts parts-table))
+    (set-quantity)
     (partslist-bom:write-partslist parts-table port)
     (close-output-port port)))