|
@@ -24,7 +24,7 @@ chk_applicable() {
|
24
|
24
|
}
|
25
|
25
|
|
26
|
26
|
mkbody() {
|
27
|
|
- debug -v to_embed
|
|
27
|
+ debug -v ScriptFullPath
|
28
|
28
|
mkhead || return $?
|
29
|
29
|
mkmodules || return $?
|
30
|
30
|
mkpayload || return $?
|
|
@@ -35,21 +35,23 @@ mkmodules() {
|
35
|
35
|
#
|
36
|
36
|
# Print each module body w/ header
|
37
|
37
|
#
|
38
|
|
- local modlist="__shellfu_embed__modlist"
|
39
|
|
- local module=""
|
|
38
|
+ local modlist=__shellfu_embed__modlist
|
|
39
|
+ local Module
|
|
40
|
+ local ModuleHash
|
40
|
41
|
(
|
41
|
|
- SHELLFU_EMBEDTMP="$modlist" "$to_embed" >&2
|
|
42
|
+ SHELLFU_EMBEDTMP="$modlist" "$ScriptFullPath" >&2
|
42
|
43
|
)
|
43
|
44
|
awk '!x[$0]++' "$modlist" \
|
44
|
|
- | while read -r module;
|
|
45
|
+ | while read -r Module;
|
45
|
46
|
do
|
46
|
|
- think "appending: $module"
|
47
|
|
- mkmodule "$module"
|
|
47
|
+ ModuleHash=$(md5sum "$Module")
|
|
48
|
+ think "appending: $Module"
|
|
49
|
+ mkmodule "$Module"
|
48
|
50
|
done
|
49
|
51
|
}
|
50
|
52
|
|
51
|
53
|
mkpayload() {
|
52
|
|
- cat "$to_embed"
|
|
54
|
+ cat "$ScriptFullPath"
|
53
|
55
|
}
|
54
|
56
|
|
55
|
57
|
mkfoot() {
|
|
@@ -63,21 +65,24 @@ mkmodule() {
|
63
|
65
|
# Print single module body
|
64
|
66
|
#
|
65
|
67
|
echo "#"
|
66
|
|
- echo "# begin module: $(md5sum "$module")"
|
|
68
|
+ echo "# begin module: $ModuleHash"
|
67
|
69
|
echo "#"
|
68
|
70
|
echo
|
69
|
|
- cat "$module"
|
|
71
|
+ cat "$Module"
|
70
|
72
|
echo
|
71
|
73
|
echo "#"
|
72
|
|
- echo "# end module: $(md5sum "$module")"
|
|
74
|
+ echo "# end module: $ModuleHash"
|
73
|
75
|
echo "#"
|
74
|
76
|
echo
|
75
|
77
|
}
|
76
|
78
|
|
77
|
79
|
mkhead() {
|
|
80
|
+ #
|
|
81
|
+ # Print header of the final script
|
|
82
|
+ #
|
78
|
83
|
echo "#!/bin/bash"
|
79
|
84
|
echo "#"
|
80
|
|
- echo "# shellfu embedded: $to_embed"
|
|
85
|
+ echo "# shellfu embedded: $ScriptFullPath"
|
81
|
86
|
echo "# shellfu version: $SHELLFU_VERSION"
|
82
|
87
|
echo "#"
|
83
|
88
|
echo
|
|
@@ -91,9 +96,11 @@ mkhead() {
|
91
|
96
|
}
|
92
|
97
|
|
93
|
98
|
do_embed() {
|
94
|
|
- local tmp="$(mktemp -d -t shellfu_embed.XXXXXXXX)"
|
95
|
|
- local es=0
|
96
|
|
- local to_embed="$(readlink -f "$script")"
|
|
99
|
+ local tmp # temporary dir to run in
|
|
100
|
+ local es=0 # exit status of this function
|
|
101
|
+ local ScriptFullPath # full path to script to embed in
|
|
102
|
+ tmp=$(mktemp -d -t shellfu_embed.XXXXXXXX)
|
|
103
|
+ ScriptFullPath=$(readlink -f "$Script")
|
97
|
104
|
pushd "$tmp" >/dev/null
|
98
|
105
|
mkbody; es=$?
|
99
|
106
|
popd >/dev/null
|
|
@@ -102,26 +109,20 @@ do_embed() {
|
102
|
109
|
}
|
103
|
110
|
|
104
|
111
|
main() {
|
105
|
|
-
|
106
|
|
- local script="" # script to embed libraries into
|
107
|
|
-
|
|
112
|
+ local Script # script to embed libraries into
|
108
|
113
|
while true; do case "$1" in
|
109
|
114
|
-d) PRETTY_DEBUG=true; shift ;;
|
110
|
115
|
-v) PRETTY_VERBOSE=true; shift ;;
|
111
|
116
|
-*) usage ;;
|
112
|
117
|
*) break ;;
|
113
|
118
|
esac done
|
114
|
|
- script="$1"
|
115
|
|
-
|
116
|
|
- test -n "$script" || usage
|
117
|
|
- test -f "$script" || die "no such file: $script"
|
118
|
|
- test -r "$script" || die "cannot read: $script"
|
119
|
|
- chk_applicable "$script" || die "not applicable for embedding: $script"
|
120
|
|
-
|
121
|
|
- debug -v script
|
122
|
|
-
|
|
119
|
+ Script="$1"
|
|
120
|
+ test -n "$Script" || usage
|
|
121
|
+ test -f "$Script" || die "no such file: $Script"
|
|
122
|
+ test -r "$Script" || die "cannot read: $Script"
|
|
123
|
+ chk_applicable "$Script" || die "not applicable for embedding: $Script"
|
|
124
|
+ debug -v Script
|
123
|
125
|
do_embed
|
124
|
|
-
|
125
|
126
|
}
|
126
|
127
|
|
127
|
128
|
main "$@"
|