blob: b6eee956d673270bd61a3c86bc3d556eea9449c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#!/bin/false
intersection()
{
comm -12 "$@"
}
difference()
{
comm -23 "$@"
}
extract_words()
{
grep -o -E '\b\w+\b' | sort -u
}
immediate_dependencies1()
{
intersection \
<(compgen -A function | sort -u) \
<(declare -f "$1" | extract_words)
}
immediate_dependencies()
{
(for f
do
immediate_dependencies1 "$f"
done) | sort -u
}
recursive_dependencies()
{
local seen=()
while [ $# -gt 0 ]
do
seen+=("$@")
set -- $(difference <(immediate_dependencies "$@") \
<(printf '%s\n' "${seen[@]}" | sort -u))
done
printf '%s\n' "${seen[@]}"
}
|