annotate benchmark/benchmark_utils.jl @ 1303:2d34290fdc58 tooling/benchmarks

Add functions for hg commit and checking if the repo is clean
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 23 Mar 2023 08:55:31 +0100
parents 68dd0c9f5cac
children 7894d29ea8fa
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 """
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
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 """
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
46 function run_benchmark(rev; kwargs...)
1181
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)
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
49 r = run_benchmark(;kwargs...)
1181
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 """
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
65 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
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)
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
68 t = run_benchmark(;kwargs...)
1188
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
69 hg_update(baseline)
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
70 b = run_benchmark(;kwargs...)
1188
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
1303
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
133 function hg_commit(msg)
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
134 cmd = Cmd(`hg commit --verbose --message $msg`, 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
135 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
136
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
137 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
138 end
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
139
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
140 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
141 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
142 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
143
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
144 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
145 end
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
146
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
147
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
148
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
149 # From Pluto.jl/src/webserver/WebServer.jl (2023-01-24)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
150 function open_in_default_browser(url::AbstractString)::Bool
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
151 try
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
152 if Sys.isapple()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
153 Base.run(`open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
154 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
155 elseif Sys.iswindows() || detectwsl()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
156 Base.run(`powershell.exe Start "'$url'"`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
157 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
158 elseif Sys.islinux()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
159 Base.run(`xdg-open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
160 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
161 else
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
162 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
163 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
164 catch ex
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
165 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
166 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
167 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
168
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
169
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
170 main
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
171
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
172 # TODO: Better logging of what is happening
1191
12b525cd3da6 More todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
173 # TODO: Improve the workflow? How?
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
174
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
175 # TODO: Clean up the HTML output?
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
176 # TODO: Make the codeblocks in the table look nicer
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
177 # 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
178 # 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
179 # TODO: Make title less verbose
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
180 # 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
181
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
182
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
183 # TBD: How to compare against current working directory? Possible to create a temporary commit?
1302
68dd0c9f5cac Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 1197
diff changeset
184 # Make a secret temporary commit
68dd0c9f5cac Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 1197
diff changeset
185 # run benchmarkresult
68dd0c9f5cac Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 1197
diff changeset
186 # uncommit the temporary commit
68dd0c9f5cac Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 1197
diff changeset
187 # verbose flag on commit will print the revision id of the new commit.
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
188 # TBD: What parts are PkgBenchmark contributing? Can it be stripped out?