Mercurial > repos > public > sbplib_julia
annotate benchmark/benchmark_utils.jl @ 1315:0551fd71682f tooling/benchmarks
Workaround for the display of revision in html
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 27 Apr 2023 16:05:15 +0200 |
parents | 708dbfd5edb9 |
children | 7110851b9c87 |
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 | 5 |
6 import Sbplib | |
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 | 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 """ |
1197
5e20c0815e07
Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents:
1192
diff
changeset
|
30 function run_benchmark(;kwargs...) |
5e20c0815e07
Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents:
1192
diff
changeset
|
31 r = PkgBenchmark.benchmarkpkg(Sbplib; kwargs...) |
1176
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
32 |
1315
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
33 rev = hg_rev() # Should be changed to hg_id() when the html can handle it. |
1181
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 |
1305
7894d29ea8fa
Improve docs for run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents:
1303
diff
changeset
|
41 Updates the repository to the given revison and runs the benchmark suite. When |
7894d29ea8fa
Improve docs for run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents:
1303
diff
changeset
|
42 done, reverts the repository to the original state. `rev` can be any |
7894d29ea8fa
Improve docs for run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents:
1303
diff
changeset
|
43 identifier compatible with `hg update`. |
1185
6fc0adcd5b97
Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents:
1184
diff
changeset
|
44 |
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
|
45 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
|
46 """ |
1197
5e20c0815e07
Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents:
1192
diff
changeset
|
47 function run_benchmark(rev; kwargs...) |
1181
f49bac53e72b
Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents:
1180
diff
changeset
|
48 rev_before = hg_rev() |
f49bac53e72b
Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents:
1180
diff
changeset
|
49 hg_update(rev) |
1197
5e20c0815e07
Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents:
1192
diff
changeset
|
50 r = run_benchmark(;kwargs...) |
1181
f49bac53e72b
Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents:
1180
diff
changeset
|
51 hg_update(rev_before) |
f49bac53e72b
Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents:
1180
diff
changeset
|
52 |
1187
2ece37edb467
Fix return value in run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents:
1186
diff
changeset
|
53 return r |
1181
f49bac53e72b
Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents:
1180
diff
changeset
|
54 end |
f49bac53e72b
Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents:
1180
diff
changeset
|
55 |
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
|
56 """ |
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 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
|
58 |
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 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
|
60 `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
|
61 |
1185
6fc0adcd5b97
Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents:
1184
diff
changeset
|
62 `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
|
63 |
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
|
64 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
|
65 """ |
1197
5e20c0815e07
Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents:
1192
diff
changeset
|
66 function run_benchmark(target, baseline, f=minimum; judgekwargs=Dict(), kwargs...) |
1188
d2e73d7b417d
Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents:
1187
diff
changeset
|
67 rev_before = hg_rev() |
d2e73d7b417d
Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents:
1187
diff
changeset
|
68 hg_update(target) |
1197
5e20c0815e07
Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents:
1192
diff
changeset
|
69 t = run_benchmark(;kwargs...) |
1188
d2e73d7b417d
Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents:
1187
diff
changeset
|
70 hg_update(baseline) |
1197
5e20c0815e07
Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents:
1192
diff
changeset
|
71 b = run_benchmark(;kwargs...) |
1188
d2e73d7b417d
Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents:
1187
diff
changeset
|
72 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
|
73 |
1188
d2e73d7b417d
Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents:
1187
diff
changeset
|
74 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
|
75 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
|
76 |
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
|
77 |
1181
f49bac53e72b
Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents:
1180
diff
changeset
|
78 function add_rev_info(benchmarkresult, rev) |
1315
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
79 if endswith(rev,"+") |
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
80 revstr = "+$rev" # Workaround for the bad presentation of BenchmarkResults. |
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
81 else |
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
82 revstr = rev |
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
83 end |
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
84 |
1176
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
85 return PkgBenchmark.BenchmarkResults( |
1183 | 86 benchmarkresult.name, |
1315
0551fd71682f
Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents:
1313
diff
changeset
|
87 revstr, |
1183 | 88 benchmarkresult.benchmarkgroup, |
89 benchmarkresult.date, | |
90 benchmarkresult.julia_commit, | |
91 benchmarkresult.vinfo, | |
92 benchmarkresult.benchmarkconfig, | |
1176
27ee001df3e5
Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents:
1175
diff
changeset
|
93 ) |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
94 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
95 |
1190 | 96 |
1177
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
97 function write_result_html(io, r) |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
98 iobuffer = IOBuffer() |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
99 PkgBenchmark.export_markdown(iobuffer, r) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
100 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
101 parsed_md = Markdown.parse(String(take!(iobuffer))) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
102 content = Markdown.html(parsed_md) |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
103 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
104 template = Mustache.load(template_path) |
1177
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
105 |
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
106 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
|
107 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
|
108 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
109 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
110 function write_result_html(r) |
1179
d6038ceba882
Better file names för results
Jonatan Werpers <jonatan@werpers.com>
parents:
1178
diff
changeset
|
111 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
|
112 file_path = joinpath(results_dir, dt*".html") |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
113 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
114 open(file_path, "w") do io |
1177
68445e87fa93
Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents:
1176
diff
changeset
|
115 write_result_html(io, r) |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
116 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
117 |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
118 return file_path |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
119 end |
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
120 |
1190 | 121 |
1189
525015283843
Add the date function to BenchmarkJudment
Jonatan Werpers <jonatan@werpers.com>
parents:
1188
diff
changeset
|
122 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
|
123 |
1190 | 124 |
1175
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
125 function hg_id() |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
126 cmd = Cmd(`hg id`, dir=sbplib_root) |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
127 return readchomp(addenv(cmd, "HGPLAIN"=>"")) |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
128 end |
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
129 |
1178
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
130 function hg_rev() |
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
131 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
|
132 return readchomp(addenv(cmd, "HGPLAIN"=>"")) |
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
133 end |
5c34dfc73b37
Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents:
1177
diff
changeset
|
134 |
1175
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
135 function hg_update(rev) |
1186
ca26f0e7683e
Make hg_update() more flexible
Jonatan Werpers <jonatan@werpers.com>
parents:
1185
diff
changeset
|
136 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
|
137 run(addenv(cmd, "HGPLAIN"=>"")) |
1308
a8e76daaf2ae
Better return for hg_update()
Jonatan Werpers <jonatan@werpers.com>
parents:
1307
diff
changeset
|
138 |
a8e76daaf2ae
Better return for hg_update()
Jonatan Werpers <jonatan@werpers.com>
parents:
1307
diff
changeset
|
139 return nothing |
1175
a0ab801b62c2
Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents:
1174
diff
changeset
|
140 end |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
141 |
1307
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
142 """ |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
143 hg_commit(msg; secret=false) |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
144 |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
145 Make a hg commit with the provided message. If `secret` is true the commit is |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
146 in the secret phase stopping it from being pushed. |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
147 """ |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
148 function hg_commit(msg; secret=false) |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
149 if secret |
1309
7fc84c2f9e1d
Fix flag issue in hg_commit
Jonatan Werpers <jonatan@werpers.com>
parents:
1308
diff
changeset
|
150 cmd = Cmd(`hg commit --verbose --secret --message $msg`, dir=sbplib_root) |
1307
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
151 else |
1309
7fc84c2f9e1d
Fix flag issue in hg_commit
Jonatan Werpers <jonatan@werpers.com>
parents:
1308
diff
changeset
|
152 cmd = Cmd(`hg commit --verbose --message $msg`, dir=sbplib_root) |
1307
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
153 end |
27afd53511d4
Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents:
1306
diff
changeset
|
154 |
1303
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
155 out = readchomp(addenv(cmd, "HGPLAIN"=>"")) |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
156 |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
157 return only(match(r"committed changeset \d+:([0-9a-z]+)", out)) |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
158 end |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
159 |
1310 | 160 """ |
161 hg_strip(rev; keep=false) | |
162 | |
163 Strips the given commit from the repo. If `keep` is true, the changes of the | |
164 commit are kept in the working directory. | |
165 """ | |
166 function hg_strip(rev; keep=false) | |
167 if keep | |
168 cmd = Cmd(`hg --config extensions.strip= strip --keep -r $rev`, dir=sbplib_root) | |
169 else | |
170 cmd = Cmd(`hg --config extensions.strip= strip -r $rev`, dir=sbplib_root) | |
171 end | |
172 | |
173 run(addenv(cmd, "HGPLAIN"=>"")) | |
174 | |
175 return nothing | |
176 end | |
1311
5eb1d0ae0ac1
Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents:
1310
diff
changeset
|
177 |
5eb1d0ae0ac1
Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents:
1310
diff
changeset
|
178 """ |
5eb1d0ae0ac1
Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents:
1310
diff
changeset
|
179 hg_is_dirty() |
5eb1d0ae0ac1
Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents:
1310
diff
changeset
|
180 |
5eb1d0ae0ac1
Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents:
1310
diff
changeset
|
181 Return true if the repositopry has uncommited changes. |
5eb1d0ae0ac1
Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents:
1310
diff
changeset
|
182 """ |
1303
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
183 function hg_is_dirty() |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
184 cmd = Cmd(`hg identify --id`, dir=sbplib_root) |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
185 out = readchomp(addenv(cmd, "HGPLAIN"=>"")) |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
186 |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
187 return endswith(out, "+") |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
188 end |
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
189 |
1312
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
190 """ |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
191 hg_at_revision(f, rev) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
192 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
193 Update the repository to the given revision and run the function `f`. After |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
194 `f` is run the working directory is restored. If there are uncommited changes |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
195 a temporary commit will be used to save the state of the working directory. |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
196 """ |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
197 function hg_at_revision(f, rev) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
198 if hg_is_dirty() |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
199 hg_with_temporary_commit() do |
1313
708dbfd5edb9
Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents:
1312
diff
changeset
|
200 return _hg_at_revision(f, rev) |
1312
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
201 end |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
202 else |
1313
708dbfd5edb9
Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents:
1312
diff
changeset
|
203 return _hg_at_revision(f, rev) |
1312
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
204 end |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
205 end |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
206 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
207 function _hg_at_revision(f, rev) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
208 @assert !hg_is_dirty() |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
209 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
210 origin_rev = hg_rev() |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
211 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
212 hg_update(rev) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
213 try |
1313
708dbfd5edb9
Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents:
1312
diff
changeset
|
214 return f() |
1312
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
215 finally |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
216 hg_update(origin_rev) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
217 end |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
218 end |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
219 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
220 """ |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
221 hg_with_temporary_commit(f) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
222 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
223 Run the function `f` after making a temporary commit with the current working |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
224 directory. After `f` has finished the working directory is restored to its |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
225 original state and the temporary commit stripped. |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
226 """ |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
227 function hg_with_temporary_commit(f) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
228 @assert hg_is_dirty() |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
229 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
230 origin_rev = hg_commit("[Automatic commit by julia]",secret=true) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
231 |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
232 try |
1313
708dbfd5edb9
Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents:
1312
diff
changeset
|
233 return f() |
1312
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
234 finally |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
235 hg_update(origin_rev) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
236 hg_strip(origin_rev; keep=true) |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
237 end |
f7621dd600e4
Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents:
1311
diff
changeset
|
238 end |
1303
2d34290fdc58
Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents:
1302
diff
changeset
|
239 |
1190 | 240 |
1172 | 241 # From Pluto.jl/src/webserver/WebServer.jl (2023-01-24) |
242 function open_in_default_browser(url::AbstractString)::Bool | |
243 try | |
244 if Sys.isapple() | |
245 Base.run(`open $url`) | |
246 true | |
247 elseif Sys.iswindows() || detectwsl() | |
248 Base.run(`powershell.exe Start "'$url'"`) | |
249 true | |
250 elseif Sys.islinux() | |
251 Base.run(`xdg-open $url`) | |
252 true | |
253 else | |
254 false | |
255 end | |
256 catch ex | |
257 false | |
258 end | |
259 end | |
260 | |
1190 | 261 |
1174
50c31500eb97
Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents:
1172
diff
changeset
|
262 main |
1172 | 263 |
1190 | 264 # TODO: Better logging of what is happening |
1191 | 265 # TODO: Improve the workflow? How? |
1190 | 266 |
267 # TODO: Clean up the HTML output? | |
268 # TODO: Make the codeblocks in the table look nicer | |
269 # TODO: Change width of tables and code blocks so everything is visible | |
270 # TODO: Fix the commit id, it chops off all the important info | |
271 # TODO: Make title less verbose | |
272 # TBD: Do we have to replace export_markdown? Could use a template instead. | |
273 | |
274 | |
275 # TBD: How to compare against current working directory? Possible to create a temporary commit? | |
1302 | 276 # Make a secret temporary commit |
277 # run benchmarkresult | |
278 # uncommit the temporary commit | |
279 # verbose flag on commit will print the revision id of the new commit. | |
1190 | 280 # TBD: What parts are PkgBenchmark contributing? Can it be stripped out? |
1306
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
281 |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
282 |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
283 ## Catching the exit code and errors from a command can be done with code similar to |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
284 # proc = open(cmd) |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
285 # if success(proc) |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
286 |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
287 # else |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
288 |
c14370f7c731
Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents:
1305
diff
changeset
|
289 # end |