annotate benchmark/benchmark_utils.jl @ 1320:6ae2ec4cef5a tooling/benchmarks

Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 28 Apr 2023 08:53:39 +0200
parents cb4d57ce2ed1
children 42738616422e
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 """
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
13 mainmain(;rev=nothing, target=nothing, baseline=nothing , kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
14
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
15 Calls `run_benchmark(args...; kwargs...)` and writes the results as an HTML
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
16 file in `benchmark/results`.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
17
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
18 * If `rev` is set, the benchmarks are run for the given mercurial revision.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
19 * If only `baseline` is set, the current working directory is compared with
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
20 the revision given in `baseline`.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
21 * If both `target` and `baseline` is set those revision are compared.
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
22
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
23 For control over what happens to the benchmark result datastructure see the
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
24 different methods of [`run_benchmark`](@ref)
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 """
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
26 function main(;rev=nothing, target=nothing, baseline=nothing , kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
27 if !isnothing(rev)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
28 r = run_benchmark(rev; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
29 elseif !isnothing(baseline)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
30 if isnothing(target)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
31 r = compare_benchmarks(baseline; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
32 else
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
33 r = compare_benchmarks(target, baseline; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
34 end
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
35 else
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
36 # Neither rev, or baseline were set => Run on current working directory.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
37 r = run_benchmark(;kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
38 end
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
39
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
40 file_path = write_result_html(r)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
41 open_in_default_browser(file_path)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
42 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
43
1180
37f29a3a78dc Add some comments
Jonatan Werpers <jonatan@werpers.com>
parents: 1179
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 """
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 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
47
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
48 Run the benchmark suite for the current working directory and return a
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
49 `PkgBenchmark.BenchmarkResult`
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
50 """
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
51 function run_benchmark(;kwargs...)
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
52 r = PkgBenchmark.benchmarkpkg(Sbplib; kwargs...)
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
53
1315
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
54 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
55
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
56 return add_rev_info(r, rev)
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
57 end
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
58
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
59 """
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 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
61
1305
7894d29ea8fa Improve docs for run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents: 1303
diff changeset
62 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
63 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
64 identifier compatible with `hg update`.
1185
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
65
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
66 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
67 """
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
68 function run_benchmark(rev; kwargs...)
1317
7110851b9c87 Change run_benchmark(rev) to use hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1315
diff changeset
69 return hg_at_revision(rev) do
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
70 run_benchmark(; kwargs...)
1317
7110851b9c87 Change run_benchmark(rev) to use hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1315
diff changeset
71 end
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
72 end
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
73
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 """
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
75 compare_benchmarks(target, baseline, f=minimum; judgekwargs=Dict())
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
76
1318
e883085a091a Improve docstring for run_benchmark(target,baseline)
Jonatan Werpers <jonatan@werpers.com>
parents: 1317
diff changeset
77 Runs the benchmark at revisions `target` and `baseline` and compares them
e883085a091a Improve docstring for run_benchmark(target,baseline)
Jonatan Werpers <jonatan@werpers.com>
parents: 1317
diff changeset
78 using `PkgBenchmark.judge`. `f` is the function used to compare. `judgekwargs`
e883085a091a Improve docstring for run_benchmark(target,baseline)
Jonatan Werpers <jonatan@werpers.com>
parents: 1317
diff changeset
79 are keyword arguments passed to `judge`.
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
80
1185
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
81 `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
82
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
83 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
84 """
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
85 function compare_benchmarks(target, baseline, f=minimum; judgekwargs=Dict(), kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
86 t = run_benchmark(target; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
87 b = run_benchmark(baseline; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
88
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
89 return PkgBenchmark.judge(t,b,f; judgekwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
90 end
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
91
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
92 """
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
93 compare_benchmarks(baseline, ...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
94
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
95 Compare the results at the current working directory with the revision
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
96 specified in `baseline`.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
97
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
98 Accepts the same arguments as the two revision version.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
99 """
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
100 function compare_benchmark(baseline, f=minimum; judgekwargs=Dict(), kwargs...)
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
101 t = run_benchmark(;kwargs...)
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
102 b = run_benchmark(baseline; kwargs...)
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
103
1188
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
104 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
105 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
106
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
107
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
108 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
109 if endswith(rev,"+")
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
110 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
111 else
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
112 revstr = rev
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
113 end
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
114
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
115 return PkgBenchmark.BenchmarkResults(
1183
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
116 benchmarkresult.name,
1315
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
117 revstr,
1183
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
118 benchmarkresult.benchmarkgroup,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
119 benchmarkresult.date,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
120 benchmarkresult.julia_commit,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
121 benchmarkresult.vinfo,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
122 benchmarkresult.benchmarkconfig,
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
123 )
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
124 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
125
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
126
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
127 function write_result_html(io, r)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
128 iobuffer = IOBuffer()
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
129 PkgBenchmark.export_markdown(iobuffer, r)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
130
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
131 parsed_md = Markdown.parse(String(take!(iobuffer)))
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
132 content = Markdown.html(parsed_md)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
133
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
134 template = Mustache.load(template_path)
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
135
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
136 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
137 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
138 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
139
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
140 function write_result_html(r)
1179
d6038ceba882 Better file names för results
Jonatan Werpers <jonatan@werpers.com>
parents: 1178
diff changeset
141 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
142 file_path = joinpath(results_dir, dt*".html")
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
143
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
144 open(file_path, "w") do io
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
145 write_result_html(io, r)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
146 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
147
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
148 return file_path
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
149 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
150
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
151
1189
525015283843 Add the date function to BenchmarkJudment
Jonatan Werpers <jonatan@werpers.com>
parents: 1188
diff changeset
152 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
153
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
154
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
155 function hg_id()
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
156 cmd = Cmd(`hg id`, dir=sbplib_root)
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
157 return readchomp(addenv(cmd, "HGPLAIN"=>""))
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
158 end
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
159
1178
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
160 function hg_rev()
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
161 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
162 return readchomp(addenv(cmd, "HGPLAIN"=>""))
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
163 end
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
164
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
165 function hg_update(rev)
1186
ca26f0e7683e Make hg_update() more flexible
Jonatan Werpers <jonatan@werpers.com>
parents: 1185
diff changeset
166 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
167 run(addenv(cmd, "HGPLAIN"=>""))
1308
a8e76daaf2ae Better return for hg_update()
Jonatan Werpers <jonatan@werpers.com>
parents: 1307
diff changeset
168
a8e76daaf2ae Better return for hg_update()
Jonatan Werpers <jonatan@werpers.com>
parents: 1307
diff changeset
169 return nothing
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
170 end
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
171
1307
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
172 """
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
173 hg_commit(msg; secret=false)
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
174
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
175 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
176 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
177 """
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
178 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
179 if secret
1309
7fc84c2f9e1d Fix flag issue in hg_commit
Jonatan Werpers <jonatan@werpers.com>
parents: 1308
diff changeset
180 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
181 else
1309
7fc84c2f9e1d Fix flag issue in hg_commit
Jonatan Werpers <jonatan@werpers.com>
parents: 1308
diff changeset
182 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
183 end
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
184
1303
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 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
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
1310
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
190 """
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
191 hg_strip(rev; keep=false)
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
192
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
193 Strips the given commit from the repo. If `keep` is true, the changes of the
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
194 commit are kept in the working directory.
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
195 """
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
196 function hg_strip(rev; keep=false)
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
197 if keep
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
198 cmd = Cmd(`hg --config extensions.strip= strip --keep -r $rev`, dir=sbplib_root)
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
199 else
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
200 cmd = Cmd(`hg --config extensions.strip= strip -r $rev`, dir=sbplib_root)
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
201 end
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
202
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
203 run(addenv(cmd, "HGPLAIN"=>""))
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
204
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
205 return nothing
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
206 end
1311
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
207
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
208 """
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
209 hg_is_dirty()
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
210
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
211 Return true if the repositopry has uncommited changes.
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
212 """
1303
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
213 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
214 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
215 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
216
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
217 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
218 end
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
219
1312
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_at_revision(f, rev)
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 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
224 `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
225 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
226 """
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
227 function hg_at_revision(f, rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
228 if hg_is_dirty()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
229 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
230 return _hg_at_revision(f, rev)
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
231 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
232 else
1313
708dbfd5edb9 Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents: 1312
diff changeset
233 return _hg_at_revision(f, rev)
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
234 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
235 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
236
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
237 function _hg_at_revision(f, rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
238 @assert !hg_is_dirty()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
239
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
240 origin_rev = hg_rev()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
241
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
242 hg_update(rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
243 try
1313
708dbfd5edb9 Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents: 1312
diff changeset
244 return f()
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
245 finally
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
246 hg_update(origin_rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
247 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
248 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
249
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
250 """
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
251 hg_with_temporary_commit(f)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
252
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
253 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
254 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
255 original state and the temporary commit stripped.
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
256 """
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
257 function hg_with_temporary_commit(f)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
258 @assert hg_is_dirty()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
259
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
260 origin_rev = hg_commit("[Automatic commit by julia]",secret=true)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
261
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
262 try
1313
708dbfd5edb9 Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents: 1312
diff changeset
263 return f()
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
264 finally
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
265 hg_update(origin_rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
266 hg_strip(origin_rev; keep=true)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
267 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
268 end
1303
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
269
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
270
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
271 # From Pluto.jl/src/webserver/WebServer.jl (2023-01-24)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
272 function open_in_default_browser(url::AbstractString)::Bool
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
273 try
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
274 if Sys.isapple()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
275 Base.run(`open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
276 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
277 elseif Sys.iswindows() || detectwsl()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
278 Base.run(`powershell.exe Start "'$url'"`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
279 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
280 elseif Sys.islinux()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
281 Base.run(`xdg-open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
282 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
283 else
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
284 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
285 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
286 catch ex
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
287 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
288 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
289 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
290
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
291
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
292 main
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
293
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
294 # TODO: Better logging of what is happening
1191
12b525cd3da6 More todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
295 # TODO: Improve the workflow? How?
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
296
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
297 # TODO: Clean up the HTML output?
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
298 # TODO: Make the codeblocks in the table look nicer
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
299 # 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
300 # 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
301 # TODO: Make title less verbose
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
302 # 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
303
1319
cb4d57ce2ed1 Update todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1318
diff changeset
304 # Should be able to run the current benchmark script at a different revision.
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
305
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
306 # 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
307
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
308
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
309 ## 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
310 # proc = open(cmd)
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
311 # if success(proc)
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
312
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
313 # else
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
314
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
315 # end