r5856 - in trunk/gta02-core/bom: . dk

werner at docs.openmoko.org werner at docs.openmoko.org
Fri Mar 26 08:40:42 CET 2010


Author: werner
Date: 2010-03-26 08:40:41 +0100 (Fri, 26 Mar 2010)
New Revision: 5856

Added:
   trunk/gta02-core/bom/dk/Makefile
   trunk/gta02-core/bom/dk/dk-db.pl
Removed:
   trunk/gta02-core/bom/dk/digi-key.dsc
   trunk/gta02-core/bom/dk/digi-key.inv
Modified:
   trunk/gta02-core/bom/Makefile
Log:
Automated updating of Digi-Key's inventory and price list.

- bom/dk/dk-db.pl, bom/dk/Makefile: we can now look up the parts listed in
  digi-key.equ in Digi-Key's database and put pricing, stock, and descriptions
  into digi-key.inv and digi-key.dsc
- bom/Makefile: added dependencies for generated files in bom/dk/
- bom/dk/digi-key.inv, bom/dk/digi-key.dsc: removed from SVN because they're 
  now generated



Modified: trunk/gta02-core/bom/Makefile
===================================================================
--- trunk/gta02-core/bom/Makefile	2010-03-26 06:28:59 UTC (rev 5855)
+++ trunk/gta02-core/bom/Makefile	2010-03-26 07:40:41 UTC (rev 5856)
@@ -59,11 +59,18 @@
 fic/fic.dsc:
 		$(MAKE) -C fic fic.dsc
 
+dk/digi-key.inv:
+		$(MAKE) -C dk digi-key.inv
+
+dk/digi-key.dsc:
+		$(MAKE) -C dk digi-key.dsc
+
 fic/missing.equ:
 		$(MAKE) -C fic missing.equ
 
 spotless:
 		$(MAKE) -C fic spotless
+		$(MAKE) -C dk spotless
 		rm -f gta02-core.par gta02-core.ord darfon.chr ralec.chr
 		rm -f gta02-core-bom.pro gta02-core-bom.sch
 		rm -f gta02-core-bom-all.ps.gz gta02-core-bom-all.pdf
@@ -77,7 +84,7 @@
 		  $(BOOM) prettyord - $(EQU) fic/fic.dsc | \
 		  sed 's/^...  \(.\{,78\}\).*/\1/'
 
-show-dk:
+show-dk:	gta02-core.ord dk/digi-key.dsc
 		(echo '#ORD'; grep '^DIGI-KEY ' gta02-core.ord ; ) | \
 		  $(BOOM) prettyord - dk/digi-key.dsc | \
 		  sed 's/^...  //' | \

Added: trunk/gta02-core/bom/dk/Makefile
===================================================================
--- trunk/gta02-core/bom/dk/Makefile	                        (rev 0)
+++ trunk/gta02-core/bom/dk/Makefile	2010-03-26 07:40:41 UTC (rev 5856)
@@ -0,0 +1,33 @@
+CACHE=query.data
+
+.PHONY:		update regen regenerate clean spotless
+
+all:		digi-key.dsc digi-key.inv
+
+$(CACHE):	digi-key.equ
+		awk '/^DIGI-KEY / { print $$2 }' digi-key.equ | \
+		  perl ./dk-db.pl query >$@ || { rm -f $@; exit 1; }
+
+digi-key.dsc:	$(CACHE)
+		perl ./dk-db.pl dsc $(CACHE) >$@ || { rm -f $@; exit 1; }
+	
+digi-key.inv:	$(CACHE)
+		perl ./dk-db.pl inv $(CACHE) >$@ || { rm -f $@; exit 1; }
+
+update:
+		$(MAKE) clean all
+
+regen regenerate:
+		rm -f digi-key.dsc digi-key.inv
+		$(MAKE) all
+
+clean:
+		rm -f $(CACHE)
+
+#
+# we don't do a "make clean" on "make spotless", so that things like "make
+# optimist" don't erase the cache.
+#
+
+spotless:
+		rm -f digi-key.dsc digi-key.inv

Deleted: trunk/gta02-core/bom/dk/digi-key.dsc
===================================================================
--- trunk/gta02-core/bom/dk/digi-key.dsc	2010-03-26 06:28:59 UTC (rev 5855)
+++ trunk/gta02-core/bom/dk/digi-key.dsc	2010-03-26 07:40:41 UTC (rev 5856)
@@ -1,15 +0,0 @@
-#DSC
-DIGI-KEY ADG3304BCBZ-REEL7CT-ND	IC XLATOR 4CH 1.2/5.5V 12-WLCSP
-DIGI-KEY P10850SCT-ND		LT SWITCH SIDE W/BOSS J LEAD SMD
-DIGI-KEY P11169CT-ND		NOISE FILTER 2 MODE 1K OHM SMD
-DIGI-KEY HFQ439CT-ND		CONN FPC 39POS .3MM GOLD SMD
-DIGI-KEY 490-4980-1-ND 		CONN MW COAXIAL WITH SWITCH SMD
-DIGI-KEY SI1040X-T1-E3TR-ND	IC LOAD SW N/P-CH MOSFET SOT563F
-DIGI-KEY 296-18200-1-ND		IC SNGL 2IN POS-NAND GATE SC70-5
-DIGI-KEY H9161CT-ND		CONN RECPT ULTRA-MINI COAX SMD
-DIGI-KEY 668-1181-ND		MIC ELECT -42dB+-3dB 4*1.2mm 2V 0.5mA
-DIGI-KEY 101-00492-20-1-ND	CONN 8PS SIM + 16PS MICRO-SD PCB
-DIGI-KEY 478-5526-1-ND		CAP TANT 220UF 4.0V SMD
-DIGI-KEY NTGD1100LT1GOSCT-ND	MOSFET N/P-CH 8V 3.3A 6-TSOP
-DIGI-KEY RMCF1/16S150FRCT-ND	RES 150 OHM 1/16W 1% 0402 SMD
-DIGI-KEY 557-1388-1-ND		IC SDRAM 512MBIT 133MHZ 90VFBGA

Deleted: trunk/gta02-core/bom/dk/digi-key.inv
===================================================================
--- trunk/gta02-core/bom/dk/digi-key.inv	2010-03-26 06:28:59 UTC (rev 5855)
+++ trunk/gta02-core/bom/dk/digi-key.inv	2010-03-26 07:40:41 UTC (rev 5856)
@@ -1,21 +0,0 @@
-#INV
-# 
-# Note: many parts are cut-tape and thus need re-reeling. 
-#
-DIGI-KEY ADG3304BCBZ-REEL7CT-ND		6726	USD 1 2.43 25 1.94
-DIGI-KEY P10850SCT-ND			31180	USD 1 0.76 10 0.569
-DIGI-KEY P11169CT-ND			7128	USD 1 0.68 10 0.509 100 0.3737
-DIGI-KEY HFQ439CT-ND			4738	USD 1 3.02 25 2.34  100 1.872
-DIGI-KEY 490-4980-1-ND			12423	USD 1 0.57 25 0.4388
-DIGI-KEY SI1040X-T1-E3TR-ND		0	USD 3000 0.294
-# the SI1040X is a family of similar switches. Shouldn't be hard to find
-# another one.
-DIGI-KEY 296-18200-1-ND			0	USD 1 0.61 25 0.3596
-# consider using a different package
-DIGI-KEY H9161CT-ND			39012	USD 1 1.46 10 1.19
-DIGI-KEY 668-1181-ND			175	USD 1 3.54 10 2.525
-DIGI-KEY 101-00492-20-1-ND		1200	USD 1 2.83 10 2.396
-DIGI-KEY 478-5526-1-ND			3193	USD 1 1.20 10 1.044
-DIGI-KEY NTGD1100LT1GOSCT-ND		3776	USD 1 0.73 10 0.612
-DIGI-KEY RMCF1/16S150FRCT-ND		33156	USD 1 0.04 10 0.025 50 0.0138
-DIGI-KEY 557-1388-1-ND			2471	USD 1 17.53 10 16.002 25 14.8592

Added: trunk/gta02-core/bom/dk/dk-db.pl
===================================================================
--- trunk/gta02-core/bom/dk/dk-db.pl	                        (rev 0)
+++ trunk/gta02-core/bom/dk/dk-db.pl	2010-03-26 07:40:41 UTC (rev 5856)
@@ -0,0 +1,95 @@
+#!/usr/bin/perl
+
+sub rows
+{
+    local $s = $_[0];
+    my @res = ();
+
+    while ($s =~ m#.*?<tr>(.*?)</tr>#) {
+	push(@res, $1);
+	$s = $';
+    }
+    return @res;
+}
+
+
+sub cols
+{
+    local $s = $_[0];
+    my @res = ();
+
+    while ($s =~ m#.*?<td[^>]*>(.*?)</td>#) {
+	push(@res, $1);
+	$s = $';
+    }
+    return @res;
+}
+
+
+sub usage
+{
+    print STDERR "usage: $0 (query|dsc|inv) [file ...]\n";
+    exit(1);
+}
+
+
+$mode = shift @ARGV;
+&usage unless $mode eq "query" || $mode eq "dsc" || $mode eq "inv";
+
+if ($mode eq "query") {
+    while (<>) {
+	chop;
+	s/#.*//;
+	next if /^\s*$/;
+	next if /^\s/;
+	s/\s.*//;
+	push(@pn, $_);
+    }
+
+    exit unless 0+ at pn;
+
+    $cmd = "wget -nv -O - ".join(" ",
+      map
+      "http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail\\&name=$_",
+      @pn);
+    $q = `$cmd`;
+
+    print $q;
+    exit;
+}
+
+
+$q = join("", <>);
+$q =~ tr/\r\n//d;
+
+print "#DSC\n" if $mode eq "dsc";
+print "#INV\n" if $mode eq "inv";
+print "# MACHINE-GENERATED. DO NOT EDIT !\n";
+print "# ", `date -u`;
+
+for (split(/<!DOCTYPE HTML/, $q)) {
+    next unless m#align=right>Digi-Key Part Number</th><td>([^<]+)</td#;
+    $pn = $1;
+    $qty = 0;
+    if (m#align=right>Quantity Available</th><td[^>]*>([0-9,]+)<#) {
+	($qty = $1) =~ tr/,//d;
+    }
+    next unless m#align=right>Description</th><td>(.*?)</td#;
+    $dsc = $1;
+    next unless m#<table.*<th>Price Break<(.*?)</table>#;
+    if ($mode eq "dsc") {
+	print "DIGI-KEY $pn $dsc\n";
+	next;
+    }
+    print "DIGI-KEY $pn $qty USD";
+    for (&rows($1)) {
+	@c = &cols($_);
+	next unless $c[0] =~ /^[0-9,]+$/;
+	next unless $c[1] =~ /^[0-9.]+$/;
+	$c[0] =~ tr/,//d;
+	$c[1] =~ tr/,//d;	# let's hope we don't need this one often :)
+	$c[1] =~ s/0+$// if $c[1] =~ /\./;
+	print " $c[0] $c[1]";
+    }
+    print "\n";
+}


Property changes on: trunk/gta02-core/bom/dk/dk-db.pl
___________________________________________________________________
Name: svn:executable
   + *




More information about the commitlog mailing list