KiCad Libraries
Sign in or create your account | Project List | Help
KiCad Libraries Git Source Tree
Root/
1 | #!/bin/sh -e |
2 | # |
3 | # missing-in-tree - List items present in libraries but not in the tree |
4 | # |
5 | # Copyright 2012, 2014 by Werner Almesberger |
6 | # |
7 | # This program is free software; you can redistribute it and/or modify |
8 | # it under the terms of the GNU General Public License as published by |
9 | # the Free Software Foundation; either version 2 of the License, or |
10 | # (at your option) any later version. |
11 | # |
12 | |
13 | |
14 | usage() |
15 | { |
16 | echo "usage: $0 [-F] [-x lib ...] [-L libdir ...] [-l lib ...] hierarchy" 1>&2 |
17 | echo " $0 -Q [-x lib ...] [-L libdir ...] [-l lib ...] project.pro" 1>&2 |
18 | exit 1 |
19 | } |
20 | |
21 | |
22 | excluded() |
23 | { |
24 | [ "`eval echo \\\$exclude_\`sanitize \"$1\"\``" ] |
25 | } |
26 | |
27 | |
28 | scan_comp() |
29 | { |
30 | for n in "$@"; do |
31 | excluded "$n" && continue |
32 | sed '/^DEF ~\?/{s///;s/ .*//;p;};d' <$n >>_tmp2 |
33 | done |
34 | } |
35 | |
36 | |
37 | scan_fped() |
38 | { |
39 | for n in "$@"; do |
40 | excluded "$n" && continue |
41 | fped -k $n - | sed '/^\$MODULE /s///p;d' >>_tmp2 |
42 | done |
43 | } |
44 | |
45 | |
46 | scan_pro() |
47 | { |
48 | for n in `sed '/^LibName[0-9]*=\.\/\(.*\)/s//\1/p;d' $1`; do |
49 | sed '/^DEF ~\?/{s///;s/ .*//;p;};d' <$n.lib |
50 | done |
51 | } |
52 | |
53 | |
54 | sanitize() |
55 | { |
56 | basename "$1" .$ext | tr -d '\n' | tr -c 'A-Za-z0-9_[-]' _ |
57 | } |
58 | |
59 | |
60 | trap "rm -f _tmp1 _tmp2" 0 |
61 | |
62 | if [ "$1" = -Q ]; then |
63 | pro=true |
64 | shift |
65 | else |
66 | genkicat -D "$@" >_tmp1 || exit |
67 | pro=false |
68 | fi |
69 | |
70 | ext=lib |
71 | |
72 | >_tmp2 |
73 | while [ "$1" ]; do |
74 | case "$1" in |
75 | -F) ext=fpd;; |
76 | -L) shift |
77 | if [ "`echo \"$1\"/*.$ext`" != "$1/*.$ext" ]; then |
78 | if [ $ext = lib ]; then |
79 | scan_comp "$1"/*.$ext |
80 | else |
81 | scan_fped "$1"/*.$ext |
82 | fi |
83 | fi;; |
84 | -l) shift |
85 | if [ $ext = lib ]; then |
86 | scan_comp "$1" |
87 | else |
88 | scan_fped "$1" |
89 | fi;; |
90 | -x) shift |
91 | eval exclude_`sanitize "$1"`=y;; |
92 | -*) usage;; |
93 | *) break;; |
94 | esac |
95 | shift |
96 | done |
97 | |
98 | [ "$1" ] || usage |
99 | [ -z "$2" ] || usage |
100 | |
101 | if $pro; then |
102 | scan_pro "$1" >_tmp1 |
103 | fi |
104 | |
105 | cat _tmp1 _tmp1 _tmp2 | sort | uniq -u |
106 | |
107 | exit 0 |
108 |
Branches:
master