@@ -39,23 +39,41 @@ debug=0
39
39
# Display command usage:
40
40
function usage()
41
41
{
42
- echo " Usage: ux-src [gen|clean] [path]"
43
- echo " gen: generate ux-src directory"
44
- echo " clean: remove ux-src directory"
42
+ echo " Usage: ux-src <gen|clean> <github|local> [path]"
43
+ echo " gen, generate ux-src directory"
44
+ echo " clean, remove ux-src directory"
45
+ echo " github, GitHub Actions environment"
46
+ echo " local, local environment"
47
+ echo " path, the path to the source tree (optional)"
45
48
}
46
49
47
50
# Link files from directory f_dir to directory ux-src with extension f_ext:
48
51
function link_files()
49
52
{
50
- local src_dir=" $1 "
51
- local dst_dir=" $2 "
52
- local f_dir=" $3 "
53
- local f_ext=" $4 "
54
- if [ -d ${src_dir} /${f_dir} ]
53
+ local dir_type=" $1 "
54
+ local src_dir=" $2 "
55
+ local dst_dir=" $3 "
56
+ local f_dir=" $4 "
57
+ local f_ext=" $5 "
58
+ local srch_path=" "
59
+ local x=" $( basename ${src_dir} ) "
60
+ if [ " $dir_type " != " 2" ];
55
61
then
56
- for f in ${src_dir} /${f_dir} /*
62
+ srch_path=" ${src_dir} /${f_dir} "
63
+ else
64
+ if [ " ${x} " == " ${f_dir} " ];
65
+ then
66
+ srch_path=" ${src_dir} "
67
+ dst_dir=" $( dirname ${dst_dir} ) "
68
+ else
69
+ return
70
+ fi
71
+ fi
72
+ if [ -d ${srch_path} ];
73
+ then
74
+ for f in ${srch_path} /*
57
75
do
58
- if [ ! -f ${f} ]
76
+ if [ ! -f " ${f} " ]
59
77
then
60
78
continue
61
79
else
@@ -100,53 +118,54 @@ function check_path()
100
118
# check for files with the known directory structure and link them in
101
119
# the ux-src directory with their appropriate extension:
102
120
function find_files_and_link() {
103
- local src_dir=" $1 "
104
- local dst_dir=" $2 "
121
+ local dir_type=" $1 "
122
+ local src_dir=" $2 "
123
+ local dst_dir=" $3 "
105
124
106
125
# Link C files (if any):
107
- link_files " ${src_dir} " " ${dst_dir} " " c" " c"
108
- link_files " ${src_dir} " " ${dst_dir} " " C" " c"
126
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " c" " c"
127
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " C" " c"
109
128
110
129
# Link C++ files (if any):
111
- link_files " ${src_dir} " " ${dst_dir} " " cpp" " cpp"
112
- link_files " ${src_dir} " " ${dst_dir} " " CPP" " cpp"
113
- link_files " ${src_dir} " " ${dst_dir} " " cxx" " cxx"
114
- link_files " ${src_dir} " " ${dst_dir} " " CXX" " cxx"
115
- link_files " ${src_dir} " " ${dst_dir} " " cc" " cc"
116
- link_files " ${src_dir} " " ${dst_dir} " " CC" " cc"
117
- link_files " ${src_dir} " " ${dst_dir} " " c++" " cpp"
118
- link_files " ${src_dir} " " ${dst_dir} " " C++" " cpp"
130
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " cpp" " cpp"
131
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " CPP" " cpp"
132
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " cxx" " cxx"
133
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " CXX" " cxx"
134
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " cc" " cc"
135
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " CC" " cc"
136
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " c++" " cpp"
137
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " C++" " cpp"
119
138
120
139
# Link C++ header files (if any):
121
- link_files " ${src_dir} " " ${dst_dir} " " hpp" " hpp"
122
- link_files " ${src_dir} " " ${dst_dir} " " HPP" " hpp"
123
- link_files " ${src_dir} " " ${dst_dir} " " hxx" " hxx"
124
- link_files " ${src_dir} " " ${dst_dir} " " HXX" " hxx"
140
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " hpp" " hpp"
141
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " HPP" " hpp"
142
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " hxx" " hxx"
143
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " HXX" " hxx"
125
144
126
145
# Link C header files (if any):
127
- link_files " ${src_dir} " " ${dst_dir} " " h" " h"
128
- link_files " ${src_dir} " " ${dst_dir} " " H" " h"
146
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " h" " h"
147
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " H" " h"
129
148
130
149
# Link Assembler files (if any):
131
- link_files " ${src_dir} " " ${dst_dir} " " s" " s"
132
- link_files " ${src_dir} " " ${dst_dir} " " S" " s"
133
- link_files " ${src_dir} " " ${dst_dir} " " Hdr" " s"
150
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " s" " s"
151
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " S" " s"
152
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " Hdr" " s"
134
153
135
154
# Link Forth files (if any):
136
- link_files " ${src_dir} " " ${dst_dir} " " fth" " fth"
137
- link_files " ${src_dir} " " ${dst_dir} " " FTH" " fth"
155
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " fth" " fth"
156
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " FTH" " fth"
138
157
139
158
# Link Pascal and Prolog files (if any):
140
- link_files " ${src_dir} " " ${dst_dir} " " p" " p"
141
- link_files " ${src_dir} " " ${dst_dir} " " P" " p"
159
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " p" " p"
160
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " P" " p"
142
161
143
162
# Link Perl files (if any):
144
- link_files " ${src_dir} " " ${dst_dir} " " pl" " pl"
145
- link_files " ${src_dir} " " ${dst_dir} " " PL" " pl"
163
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " pl" " pl"
164
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " PL" " pl"
146
165
147
166
# Link BASIC files (if any):
148
- link_files " ${src_dir} " " ${dst_dir} " " bas" " bas"
149
- link_files " ${src_dir} " " ${dst_dir} " " BAS" " bas"
167
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " bas" " bas"
168
+ link_files " ${dir_type} " " ${ src_dir}" " ${dst_dir} " " BAS" " bas"
150
169
151
170
# Find and link local files
152
171
# (that may also be called Makefile.unix etc.):
@@ -162,11 +181,14 @@ function find_files_and_link() {
162
181
fname=" $( echo ${fname} | sed ' s/,.*//' ) "
163
182
local fext=" $( echo ${fname} | sed ' s/^.*\.//' ) "
164
183
# Skip files with extensions: .o, .a, .so
165
- if [ " ${fext} " == " o" ] || [ " ${fext} " == " a" ] || [ " ${fext} " == " so" ] || [[ " ${fext} " =~ " so\..*" ]];
184
+ if [ " ${fext} " == " o" ] || [ " ${fext} " == " a" ] ||
185
+ [ " ${fext} " == " od" ] || [ " ${fext} " == " oz" ] ||
186
+ [ " ${fext} " == " odz" ] || [ " ${fext} " == " so" ] ||
187
+ [[ " ${fext} " =~ " so\..*" ]];
166
188
then
167
189
continue
168
190
fi
169
- if [ -f ${f} ];
191
+ if [ -f " ${f} " ];
170
192
then
171
193
if [ " $env " == " github" ]
172
194
then
@@ -190,27 +212,33 @@ function gen_dirs()
190
212
if [ ! -d " ${d} " ]
191
213
then
192
214
local dname2=" $( echo ${d} | sed ' s/^.*\/src\///' ) "
193
- find_files_and_link " ${d} " " ${curr_dir} /ux-src/${dname2} "
215
+ find_files_and_link " 0 " " ${d} " " ${curr_dir} /ux-src/${dname2} "
194
216
else
195
217
local dname=" $( basename " ${d} " ) "
196
218
check_path " ${dname} "
197
219
local rval=$?
198
220
if [ $rval -eq 1 ];
199
221
then
200
- local dname2=" $( echo ${d} | sed ' s/^.*\/src\///' ) "
201
- find_files_and_link " ${d} " " ${curr_dir} /ux-src/${dname2} "
222
+ # local dname2="$(echo ${d} | sed 's/^.*\/src\///')"
223
+ local dname2=" ${d#*/ src/ } "
224
+ if [ " ${dname2} " != " " ]
225
+ then
226
+ find_files_and_link " 2" " ${d} " " ${curr_dir} /ux-src/${dname2} "
227
+ fi
202
228
else
203
229
local dname2=" $( echo ${d} | sed ' s/^.*\/src\///' ) "
204
230
echo -n " Processing: ${dname2} ... "
205
231
local dname3=" $( basename ${dname2} ) "
206
- if [ " ${dname3} " != " o" ];
232
+ if [ " ${dname3} " != " o" ] && [ " ${dname3} " != " a" ] &&
233
+ [ " ${dname3} " != " od" ] && [ " ${dname3} " != " oz" ] &&
234
+ [ " ${dname3} " != " odz" ] && [ " ${dname3} " != " so" ] ;
207
235
then
208
236
# Skip the o directory (it's not required in the UX world)
209
237
# process everythign else:
210
238
if [ ! -d " ${curr_dir} /ux-src/${dname2} " ]
211
239
then
212
240
mkdir -p " ${curr_dir} /ux-src/${dname2} "
213
- find_files_and_link " ${d} " " ${curr_dir} /ux-src/${dname2} "
241
+ find_files_and_link " ${rval} " " ${ d}" " ${curr_dir} /ux-src/${dname2} "
214
242
fi
215
243
echo " ok"
216
244
# Recursive call to explore the sub-directory
259
287
gen_dirs " ${curr_path} "
260
288
261
289
# Link main Makefiles:
262
- if [ -f ${curr_dir} /src/Makefile* ]
290
+ if compgen -G " ${curr_dir} /src/Makefile*" > /dev/null ;
263
291
then
264
292
for f in ${curr_dir} /src/Makefile*
265
293
do
275
303
fi
276
304
277
305
# Link the Build Script for Unix:
278
- if [ -f ${curr_dir} /src/MkGCC.sh ]
306
+ if [ -f " ${curr_dir} /src/MkGCC.sh" ]
279
307
then
280
308
if [ " $env " == " github" ]
281
309
then
0 commit comments