Mercurial Hosting > luan
annotate src/luan/modules/mmake.luan @ 1717:c637a2a1023d
add String.replace
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 25 Jul 2022 11:16:53 -0600 |
parents | b82767112d8e |
children |
rev | line source |
---|---|
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
648
diff
changeset
|
1 local Luan = require "luan:Luan.luan" |
320
fed1893821bf
remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
308
diff
changeset
|
2 local ipairs = Luan.ipairs |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
648
diff
changeset
|
3 local Table = require "luan:Table.luan" |
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
648
diff
changeset
|
4 local Io = require "luan:Io.luan" |
320
fed1893821bf
remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
308
diff
changeset
|
5 local print = Io.print |
1385 | 6 local output_to = Io.output_to |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
648
diff
changeset
|
7 local String = require "luan:String.luan" |
1717 | 8 local replace = String.replace |
1716 | 9 local substring = String.sub |
10 local ends_with = String.ends_with | |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
648
diff
changeset
|
11 local Time = require "luan:Time.luan" |
1716 | 12 local time_now = Time.now |
13 local time_format = Time.format | |
320
fed1893821bf
remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
308
diff
changeset
|
14 |
fed1893821bf
remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
308
diff
changeset
|
15 |
503 | 16 local compiler = Table.concat( { "javac -g -encoding UTF8", ... }, " " ) |
17 | |
18 | |
19 local function header() | |
1385 | 20 %> |
1716 | 21 # Makefile created on <%=time_format(time_now())%> by Mmake |
503 | 22 |
23 .SUFFIXES: .java .class | |
237
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
24 |
503 | 25 .java.class: |
648
e387e4021afe
start compiler with len operator
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
26 <%=compiler%> '$<' |
503 | 27 |
28 all: <% | |
29 end | |
30 | |
31 | |
32 local function mmake(dir) | |
320
fed1893821bf
remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
308
diff
changeset
|
33 local javas = {} |
237
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
34 local dirs = {} |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
35 for _, file in ipairs(dir.children()) do |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
36 local name = file.name() |
1716 | 37 if ends_with(name,".java") then |
38 javas[#javas+1] = substring(name,1,-6) | |
237
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
39 end |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
40 if file.is_directory() and mmake(file) then |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
41 dirs[#dirs+1] = name |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
42 end |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
43 end |
320
fed1893821bf
remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
308
diff
changeset
|
44 if #javas == 0 and #dirs == 0 then |
237
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
45 return false; |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
46 end |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
47 local out = dir.child("Makefile").text_writer() |
1385 | 48 output_to(out,header) |
320
fed1893821bf
remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
308
diff
changeset
|
49 for _, s in ipairs(javas) do |
1717 | 50 s = replace(s,"$","$$") |
237
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
51 out.write( "\\\n\t\t", s , ".class" ) |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
52 end |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
53 for _, s in ipairs(dirs) do |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
54 out.write( "\n\tcd ", s, "; make all" ) |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
55 end |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
56 out.write "\n\nclean:\n\trm -f *.class\n" |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
57 for _, s in ipairs(dirs) do |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
58 out.write( "\tcd ", s, "; make clean\n" ) |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
59 end |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
60 out.close() |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
61 print(dir.to_string()) |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
62 return true |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
63 end |
97d175772fed
implement mmake
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
64 |
273
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
237
diff
changeset
|
65 mmake(Io.schemes.file ".") |