--- /dev/null
+# expand csv partslist, replacing unknown fields with data
+# from preferred parts list
+
+# Copyright 2015 by Bdale Garbee <bdale@gag.com>, GPL v3
+
+BEGIN {
+ PARTFILE = "../altusmetrum/preferred-parts"
+ partcount = 0
+ while (getline <PARTFILE > 0) {
+ partcount++
+ parts[$1, $2, $3] = $0
+ }
+}
+
+{
+ FS = ","
+ split(parts[$1,$2,$3],field,"\t")
+
+ printf "%s,%s,%s", $1, $2, $3
+
+ if ( $4 == "unknown") printf ",%s", field[4]
+ else printf ",%s", $4
+
+ if ( $5 == "unknown") printf ",%s", field[5]
+ else printf ",%s", $5
+
+ if ( $6 == "unknown") printf ",%s", field[6]
+ else printf ",%s", $6
+
+ if ( $7 == "unknown") printf ",%s", field[7]
+ else printf ",%s", $7
+
+ if ( $8 == "unknown") printf ",%s", field[8]
+ else printf ",%s", $8
+
+ printf ",%s,%s\n", $9, $10
+}
--- /dev/null
+# expand tab-separated partslist, replacing unknown fields with data
+# from preferred parts list
+
+# Copyright 2015 by Bdale Garbee <bdale@gag.com>, GPL v3
+
+BEGIN {
+ PARTFILE = "../altusmetrum/preferred-parts"
+ partcount = 0
+ while (getline <PARTFILE > 0) {
+ partcount++
+ parts[$1, $2, $3] = $0
+ }
+}
+
+{
+ printf "%s\t%s\t%s\t%s", $1, $2, $3, $4
+ split(parts[$2,$3,$4],field,"\t")
+
+ if ( $5 == "unknown") printf "\t%s", field[4]
+ else printf "\t%s", $5
+
+ if ( $6 == "unknown") printf "\t%s", field[5]
+ else printf "\t%s", $6
+
+ if ( $7 == "unknown") printf "\t%s", field[6]
+ else printf "\t%s", $7
+
+ if ( $8 == "unknown") printf "\t%s", field[7]
+ else printf "\t%s", $8
+
+ if ( $9 == "unknown") printf "\t%s", field[8]
+ else printf "\t%s", $9
+
+ printf "\n"
+}
partslist: $(PROJECT).sch Makefile
gnetlist -g bom -o $(PROJECT).unsorted $(SCHEMATICS)
head -n1 $(PROJECT).unsorted > partslist
- tail -n+2 $(PROJECT).unsorted | sort >> partslist
+ tail -n+2 $(PROJECT).unsorted | sort | awk -f ../altusmetrum/bin/fillpartslist >> partslist
rm -f $(PROJECT).unsorted
partslist.csv: $(SCHEMATICS) Makefile
gnetlist -L $(SCHEME) -g partslistgag -o $(PROJECT).csvtmp $(SCHEMATICS)
- (head -n1 $(PROJECT).csvtmp; tail -n+2 $(PROJECT).csvtmp | sort -t \, -k 8) > $@ && rm -f $(PROJECT).csvtmp
+ (head -n1 $(PROJECT).csvtmp; tail -n+2 $(PROJECT).csvtmp | sort -t \, -k 8) | awk -f ../altusmetrum/bin/fillpartscsv > $@ && rm -f $(PROJECT).csvtmp
partslist.dk: $(SCHEMATICS) Makefile $(SCHEME)/gnet-partslist-bom.scm
(define (write-one-row ls separator end-char port)
(if (null? ls)
'()
- (begin (display "\"" port)
+ (begin (display "" port)
(display (car ls) port)
(for-each (lambda (st) (display separator port)(display st port)) (cdr ls))
(display end-char port))))
(define partslistgag:write-top-header
(lambda (port)
- (display "\"device\",\"value\",\"footprint\",\"loadstatus\",\"provided\",\"mfg_part_number\",\"vendor\",\"vendor_part_number\",\"quantity\",\"refdes\"\n" port)))
+ (display "device,value,footprint,loadstatus,provided,mfg_part_number,vendor,vendor_part_number,quantity,refdes\n" port)))
(define (partslistgag:write-partslist ls port)
(if (null? ls)
'()
- (begin (write-one-row (cdar ls) "\",\"" "\"," port)
- (write-one-row (caar ls) " " "\"\n" port)
+ (begin (write-one-row (cdar ls) "," "," port)
+ (write-one-row (caar ls) " " "\n" port)
(partslistgag:write-partslist (cdr ls) port))))
(define partslistgag:write-bottom-footer