annotate benchmark/run_and_view.jl @ 1191:12b525cd3da6 tooling/benchmarks

More todos
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 27 Jan 2023 12:43:38 +0100
parents 1aca445216b8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
1 import PkgBenchmark
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
2 import Markdown
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
3 import Mustache
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
4 import Dates
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 import Sbplib
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
8 const sbplib_root = splitpath(pathof(Sbplib))[1:end-2] |> joinpath
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
9 const results_dir = mkpath(joinpath(sbplib_root, "benchmark/results"))
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
10 const template_path = joinpath(sbplib_root, "benchmark/result.tmpl")
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
11
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
12 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
13 main(args...; kwargs...)
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
14
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
15 Calls `run_benchmark(args...; kwargs...)` and writes the results as an HTML file in `benchmark/results`.
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
16 See [`run_benchmark`](@ref) for possible arguments.
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
17 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
18 function main(args...; kwargs...)
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
19 r = run_benchmark(args...; kwargs...)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
20 file_path = write_result_html(r)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
21 open_in_default_browser(file_path)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
22 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
23
1180
37f29a3a78dc Add some comments
Jonatan Werpers <jonatan@werpers.com>
parents: 1179
diff changeset
24
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
25 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
26 run_benchmark()
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
27
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
28 Runs the benchmark suite for the current working directory and returns a `PkgBenchmark.BenchmarkResult`
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
29 """
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
30 function run_benchmark()
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
31 r = PkgBenchmark.benchmarkpkg(Sbplib)
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
32
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
33 rev = hg_id()
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
34
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
35 return add_rev_info(r, rev)
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
36 end
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
37
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
38 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
39 run_benchmark(rev)
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
40
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
41 Updates the repository to the given revison and runs the benchmark suite. When done, updates the repository to the origianl state.
1185
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
42 `rev` can be any identifier compatible with `hg update`.
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
43
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
44 Returns a `PkgBenchmark.BenchmarkResult`
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
45 """
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
46 function run_benchmark(rev)
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
47 rev_before = hg_rev()
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
48 hg_update(rev)
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
49 r = run_benchmark()
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
50 hg_update(rev_before)
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
51
1187
2ece37edb467 Fix return value in run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents: 1186
diff changeset
52 return r
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
53 end
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
54
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
55 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
56 run_benchmark(target, baseline, f=minimum; judgekwargs=Dict())
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
57
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
58 Runs the benchmark at revisions `target` and `baseline` and compares them using `PkgBenchmark.judge`.
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
59 `f` is the function used to compare. `judgekwargs` are keyword arguments passed to `judge`.
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
60
1185
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
61 `target` and `baseline` can be any identifier compatible with `hg update`.
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
62
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
63 Returns a `PkgBenchmark.BenchmarkJudgement`
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
64 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
65 function run_benchmark(target, baseline, f=minimum; judgekwargs=Dict())
1188
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
66 rev_before = hg_rev()
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
67 hg_update(target)
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
68 t = run_benchmark()
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
69 hg_update(baseline)
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
70 b = run_benchmark()
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
71 hg_update(rev_before)
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
72
1188
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
73 return PkgBenchmark.judge(t,b,f; judgekwargs...)
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
74 end
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
75
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
76
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
77 function add_rev_info(benchmarkresult, rev)
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
78 return PkgBenchmark.BenchmarkResults(
1183
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
79 benchmarkresult.name,
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
80 rev,
1183
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
81 benchmarkresult.benchmarkgroup,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
82 benchmarkresult.date,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
83 benchmarkresult.julia_commit,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
84 benchmarkresult.vinfo,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
85 benchmarkresult.benchmarkconfig,
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
86 )
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
87 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
88
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
89
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
90 function write_result_html(io, r)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
91 iobuffer = IOBuffer()
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
92 PkgBenchmark.export_markdown(iobuffer, r)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
93
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
94 parsed_md = Markdown.parse(String(take!(iobuffer)))
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
95 content = Markdown.html(parsed_md)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
96
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
97 template = Mustache.load(template_path)
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
98
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
99 dt = Dates.format(PkgBenchmark.date(r), "yyyy-mm-dd HH:MM:SS")
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
100 Mustache.render(io, template, Dict("title"=>dt, "content"=>content))
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
101 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
102
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
103 function write_result_html(r)
1179
d6038ceba882 Better file names för results
Jonatan Werpers <jonatan@werpers.com>
parents: 1178
diff changeset
104 dt = Dates.format(PkgBenchmark.date(r), "yyyy-mm-dd HHMMSS")
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
105 file_path = joinpath(results_dir, dt*".html")
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
106
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
107 open(file_path, "w") do io
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
108 write_result_html(io, r)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
109 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
110
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
111 return file_path
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
112 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
113
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
114
1189
525015283843 Add the date function to BenchmarkJudment
Jonatan Werpers <jonatan@werpers.com>
parents: 1188
diff changeset
115 PkgBenchmark.date(j::PkgBenchmark.BenchmarkJudgement) = PkgBenchmark.date(PkgBenchmark.target_result(j))
525015283843 Add the date function to BenchmarkJudment
Jonatan Werpers <jonatan@werpers.com>
parents: 1188
diff changeset
116
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
117
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
118 function hg_id()
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
119 cmd = Cmd(`hg id`, dir=sbplib_root)
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
120 return readchomp(addenv(cmd, "HGPLAIN"=>""))
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
121 end
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
122
1178
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
123 function hg_rev()
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
124 cmd = Cmd(`hg id -i`, dir=sbplib_root)
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
125 return readchomp(addenv(cmd, "HGPLAIN"=>""))
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
126 end
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
127
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
128 function hg_update(rev)
1186
ca26f0e7683e Make hg_update() more flexible
Jonatan Werpers <jonatan@werpers.com>
parents: 1185
diff changeset
129 cmd = Cmd(`hg update --check -r $rev`, dir=sbplib_root)
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
130 run(addenv(cmd, "HGPLAIN"=>""))
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
131 end
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
132
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
133
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
134 # From Pluto.jl/src/webserver/WebServer.jl (2023-01-24)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
135 function open_in_default_browser(url::AbstractString)::Bool
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
136 try
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
137 if Sys.isapple()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
138 Base.run(`open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
139 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
140 elseif Sys.iswindows() || detectwsl()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
141 Base.run(`powershell.exe Start "'$url'"`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
142 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
143 elseif Sys.islinux()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
144 Base.run(`xdg-open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
145 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
146 else
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
147 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
148 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
149 catch ex
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
150 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
151 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
152 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
153
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
154
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
155 main
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
156
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
157 # TODO: Better logging of what is happening
1191
12b525cd3da6 More todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
158 # TODO: Improve the workflow? How?
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
159
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
160 # TODO: Clean up the HTML output?
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
161 # TODO: Make the codeblocks in the table look nicer
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
162 # TODO: Change width of tables and code blocks so everything is visible
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
163 # TODO: Fix the commit id, it chops off all the important info
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
164 # TODO: Make title less verbose
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
165 # TBD: Do we have to replace export_markdown? Could use a template instead.
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
166
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
167
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
168 # TBD: How to compare against current working directory? Possible to create a temporary commit?
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
169 # TBD: What parts are PkgBenchmark contributing? Can it be stripped out?