diff options
author | Guillaume Chatelet <gchatelet@google.com> | 2023-08-30 13:24:38 +0000 |
---|---|---|
committer | Guillaume Chatelet <gchatelet@google.com> | 2023-08-30 13:29:50 +0000 |
commit | 63cc2980dffba3de2e87f8332cb4971d96b8d4e7 (patch) | |
tree | f187cb7c3cd8336a9205e3be457a07d81c706b49 | |
parent | 60aa4e343a51de62337de30b5a61ebc4f51f9641 (diff) | |
download | cpu_features-63cc2980dffba3de2e87f8332cb4971d96b8d4e7.tar.gz |
Update badges
-rw-r--r-- | README.md | 32 | ||||
-rw-r--r-- | scripts/generate_badges.d | 58 |
2 files changed, 50 insertions, 40 deletions
@@ -9,26 +9,25 @@ instructions) at runtime. | Os | amd64 | AArch64 | ARM | MIPS | POWER | RISCV | LOONGARCH | s390x | | :-- | --: | --: | --: | --: | --: | --: | --: | --: | -| Linux | [![][i1a0]][l1a0]<br/>[![][i1a1]][l1a1] | [![][i1b0]][l1b0]<br/>[![][i1b1]][l1b1] | [![][i1c0]][l1c0]<br/>![][d1] | [![][i1d0]][l1d0]<br/>![][d1] | [![][i1e0]][l1e0]<br/>![][d1] | [![][i1f0]][l1f0]<br/>![][d1] | [![][i1g0]][l1g0]<br/>![][d1] | [![][i1h0]][l1h0]<br/>![][d1] | +| Linux | [![][i1a0]][l1a0]<br/>[![][i1a1]][l1a1] | [![][i1b0]][l1b0]<br/>[![][i1b1]][l1b1] | [![][i1c0]][l1c0]<br/>![][d1] | [![][i1d0]][l1d0]<br/>![][d1] | [![][i1e0]][l1e0]<br/>![][d1] | [![][i1f0]][l1f0]<br/>![][d1] | ![][d0]<br/>![][d1] | [![][i1h0]][l1h0]<br/>![][d1] | | FreeBSD | [![][i2a0]][l2a0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | | MacOS | [![][i3a0]][l3a0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | | Windows | [![][i4a0]][l4a0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | -[d0]: https://img.shields.io/badge/CMake-N%2FA-lightgrey -[d1]: https://img.shields.io/badge/Bazel-N%2FA-lightgrey -[i1a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_linux_cmake.yml?branch=main&label=CMake -[i1a1]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_linux_bazel.yml?branch=main&label=Bazel -[i1b0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/aarch64_linux_cmake.yml?branch=main&label=CMake -[i1b1]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/aarch64_linux_bazel.yml?branch=main&label=Bazel -[i1c0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/arm_linux_cmake.yml?branch=main&label=CMake -[i1d0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/mips_linux_cmake.yml?branch=main&label=CMake -[i1e0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/power_linux_cmake.yml?branch=main&label=CMake -[i1f0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/riscv_linux_cmake.yml?branch=main&label=CMake -[i1g0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/loongarch_linux_cmake.yml?branch=main&label=CMake -[i1h0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/s390x_linux_cmake.yml?branch=main&label=CMake -[i2a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_freebsd_cmake.yml?branch=main&label=CMake -[i3a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_macos_cmake.yml?branch=main&label=CMake -[i4a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_windows_cmake.yml?branch=main&label=CMake +[d0]: https://img.shields.io/badge/n%2Fa-lightgrey?&logo=cmake +[d1]: https://img.shields.io/badge/n%2Fa-lightgrey?&logo=data:image/svg%2bxml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNiAuMTZsNS43ODYgNS43ODZMNiAxMS43MzIuMjE0IDUuOTQ2IDYgLjE2MXpNMCA2LjIxNFYxMmw1Ljc4NiA1Ljc4NlYxMkwwIDYuMjE0ek0xOCAuMTZsNS43ODYgNS43ODZMMTggMTEuNzMybC01Ljc4Ni01Ljc4NkwxOCAuMTYxek0yNCA2LjIxNFYxMmwtNS43ODYgNS43ODZWMTJMMjQgNi4yMTR6TTEyIDYuMTZsNS43ODYgNS43ODZMMTIgMTcuNzMybC01Ljc4Ni01Ljc4NkwxMiA2LjE2MXpNMTEuODQgMTguMDU0djUuNzg1bC01Ljc4Ni01Ljc4NXYtNS43ODZsNS43ODUgNS43ODZ6TTEyLjE2IDE4LjA1NGw1Ljc4Ni01Ljc4NnY1Ljc4NmwtNS43ODUgNS43ODV2LTUuNzg1eiIgc3Ryb2tlPSJ0cmFuc3BhcmVudCIgZmlsbD0id2hpdGUiLz48L3N2Zz4= +[i1a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_linux_cmake.yml?branch=main&event=push&label=&logo=cmake +[i1a1]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_linux_bazel.yml?branch=main&event=push&label=&logo=data:image/svg%2bxml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNiAuMTZsNS43ODYgNS43ODZMNiAxMS43MzIuMjE0IDUuOTQ2IDYgLjE2MXpNMCA2LjIxNFYxMmw1Ljc4NiA1Ljc4NlYxMkwwIDYuMjE0ek0xOCAuMTZsNS43ODYgNS43ODZMMTggMTEuNzMybC01Ljc4Ni01Ljc4NkwxOCAuMTYxek0yNCA2LjIxNFYxMmwtNS43ODYgNS43ODZWMTJMMjQgNi4yMTR6TTEyIDYuMTZsNS43ODYgNS43ODZMMTIgMTcuNzMybC01Ljc4Ni01Ljc4NkwxMiA2LjE2MXpNMTEuODQgMTguMDU0djUuNzg1bC01Ljc4Ni01Ljc4NXYtNS43ODZsNS43ODUgNS43ODZ6TTEyLjE2IDE4LjA1NGw1Ljc4Ni01Ljc4NnY1Ljc4NmwtNS43ODUgNS43ODV2LTUuNzg1eiIgc3Ryb2tlPSJ0cmFuc3BhcmVudCIgZmlsbD0id2hpdGUiLz48L3N2Zz4= +[i1b0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/aarch64_linux_cmake.yml?branch=main&event=push&label=&logo=cmake +[i1b1]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/aarch64_linux_bazel.yml?branch=main&event=push&label=&logo=data:image/svg%2bxml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNiAuMTZsNS43ODYgNS43ODZMNiAxMS43MzIuMjE0IDUuOTQ2IDYgLjE2MXpNMCA2LjIxNFYxMmw1Ljc4NiA1Ljc4NlYxMkwwIDYuMjE0ek0xOCAuMTZsNS43ODYgNS43ODZMMTggMTEuNzMybC01Ljc4Ni01Ljc4NkwxOCAuMTYxek0yNCA2LjIxNFYxMmwtNS43ODYgNS43ODZWMTJMMjQgNi4yMTR6TTEyIDYuMTZsNS43ODYgNS43ODZMMTIgMTcuNzMybC01Ljc4Ni01Ljc4NkwxMiA2LjE2MXpNMTEuODQgMTguMDU0djUuNzg1bC01Ljc4Ni01Ljc4NXYtNS43ODZsNS43ODUgNS43ODZ6TTEyLjE2IDE4LjA1NGw1Ljc4Ni01Ljc4NnY1Ljc4NmwtNS43ODUgNS43ODV2LTUuNzg1eiIgc3Ryb2tlPSJ0cmFuc3BhcmVudCIgZmlsbD0id2hpdGUiLz48L3N2Zz4= +[i1c0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/arm_linux_cmake.yml?branch=main&event=push&label=&logo=cmake +[i1d0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/mips_linux_cmake.yml?branch=main&event=push&label=&logo=cmake +[i1e0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/power_linux_cmake.yml?branch=main&event=push&label=&logo=cmake +[i1f0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/riscv_linux_cmake.yml?branch=main&event=push&label=&logo=cmake +[i1h0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/s390x_linux_cmake.yml?branch=main&event=push&label=&logo=cmake +[i2a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_freebsd_cmake.yml?branch=main&event=push&label=&logo=cmake +[i3a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_macos_cmake.yml?branch=main&event=push&label=&logo=cmake +[i4a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_windows_cmake.yml?branch=main&event=push&label=&logo=cmake [l1a0]: https://github.com/google/cpu_features/actions/workflows/amd64_linux_cmake.yml [l1a1]: https://github.com/google/cpu_features/actions/workflows/amd64_linux_bazel.yml [l1b0]: https://github.com/google/cpu_features/actions/workflows/aarch64_linux_cmake.yml @@ -37,7 +36,6 @@ instructions) at runtime. [l1d0]: https://github.com/google/cpu_features/actions/workflows/mips_linux_cmake.yml [l1e0]: https://github.com/google/cpu_features/actions/workflows/power_linux_cmake.yml [l1f0]: https://github.com/google/cpu_features/actions/workflows/riscv_linux_cmake.yml -[l1g0]: https://github.com/google/cpu_features/actions/workflows/loongarch_linux_cmake.yml [l1h0]: https://github.com/google/cpu_features/actions/workflows/s390x_linux_cmake.yml [l2a0]: https://github.com/google/cpu_features/actions/workflows/amd64_freebsd_cmake.yml [l3a0]: https://github.com/google/cpu_features/actions/workflows/amd64_macos_cmake.yml diff --git a/scripts/generate_badges.d b/scripts/generate_badges.d index 8524737..79882eb 100644 --- a/scripts/generate_badges.d +++ b/scripts/generate_badges.d @@ -2,12 +2,17 @@ // 1. copy paste the whole code to https://run.dlang.io/ then click `run` // 2. `docker run --rm -it -v $(pwd):/src dlanguage/dmd dmd -run generate_badges.d` import std.algorithm : each, map, cartesianProduct, filter, joiner, sort, uniq; -import std.array : array; +import std.array; import std.conv : to; import std.format; import std.range : chain, only; import std.stdio; import std.traits : EnumMembers; +import std.string : representation; +import std.base64 : Base64; + +immutable string bazel_svg = `<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M6 .16l5.786 5.786L6 11.732.214 5.946 6 .161zM0 6.214V12l5.786 5.786V12L0 6.214zM18 .16l5.786 5.786L18 11.732l-5.786-5.786L18 .161zM24 6.214V12l-5.786 5.786V12L24 6.214zM12 6.16l5.786 5.786L12 17.732l-5.786-5.786L12 6.161zM11.84 18.054v5.785l-5.786-5.785v-5.786l5.785 5.786zM12.16 18.054l5.786-5.786v5.786l-5.785 5.785v-5.785z" stroke="transparent" fill="white"/></svg>`; +const string bazel_svg_base64 = Base64.encode(representation(bazel_svg)); enum BuildSystem { @@ -45,7 +50,8 @@ const: string id() { - return format("%d%c%d", cast(uint)(os) + 1, cast(char)('a' + cpu), cast(uint)(build_system)); + return format("%d%c%d", cast(uint)(os) + 1, cast(char)('a' + cpu), + cast(uint)(build_system)); } string disabled_image_ref() @@ -65,6 +71,8 @@ const: bool enabled() { + if (cpu == Cpu.LOONGARCH) + return false; final switch (build_system) { case BuildSystem.CMake: @@ -81,9 +89,21 @@ const: return format("![]%s", disabled_image_ref); } + string append_logo(string url) + { + final switch (build_system) + { + case BuildSystem.CMake: + return url ~ "&logo=cmake"; + case BuildSystem.Bazel: + return url ~ "&logo=data:image/svg%2bxml;base64," ~ bazel_svg_base64; + } + } + string disabled_image_link() { - return format("%s: https://img.shields.io/badge/%s-N%%2FA-lightgrey", disabled_image_ref, build_system); + return append_logo(format("%s: https://img.shields.io/badge/n%%2Fa-lightgrey?", + disabled_image_ref)); } string filename() @@ -95,14 +115,16 @@ const: string link_decl() { - return format("%s: https://github.com/google/cpu_features/actions/workflows/%s", link_ref, filename()); + return format("%s: https://github.com/google/cpu_features/actions/workflows/%s", + link_ref, filename()); } string image_decl() { - return format( - "%s: https://img.shields.io/github/actions/workflow/status/google/cpu_features/%s?branch=main&label=%s", image_ref, filename(), build_system); + return append_logo(format("%s: https://img.shields.io/github/actions/workflow/status/google/cpu_features/%s?branch=main&event=push&label=", + image_ref, filename())); } + } auto tableHeader(in Cpu[] cpus) @@ -117,11 +139,9 @@ auto tableAlignment(in Cpu[] cpus) auto tableCell(Range)(in Os os, in Cpu cpu, Range badges) { - return badges - .filter!(b => b.cpu == cpu && b.os == os) + return badges.filter!(b => b.cpu == cpu && b.os == os) .map!(b => b.text()) - .joiner("<br/>") - .to!string; + .joiner("<br/>").to!string; } auto tableRow(Range)(in Os os, in Cpu[] cpus, Range badges) @@ -136,7 +156,8 @@ auto tableRows(Range)(in Os[] oses, in Cpu[] cpus, Range badges) auto table(Range)(in Os[] oses, in Cpu[] cpus, Range badges) { - return chain(only(tableHeader(cpus)), only(tableAlignment(cpus)), tableRows(oses, cpus, badges)); + return chain(only(tableHeader(cpus)), only(tableAlignment(cpus)), + tableRows(oses, cpus, badges)); } void main() @@ -144,26 +165,17 @@ void main() immutable allCpus = [EnumMembers!Cpu]; immutable allOses = [EnumMembers!Os]; immutable allBuildSystems = [EnumMembers!BuildSystem]; - auto badges = cartesianProduct(allCpus, allOses, allBuildSystems).map!( t => Badge(t[0], t[1], t[2])); - writefln("%(|%-( %s |%) |\n%) |", table(allOses, allCpus, badges)); writeln(); - badges - .filter!(b => !b.enabled) + badges.filter!(b => !b.enabled) .map!(b => b.disabled_image_link()) .array .sort .uniq .each!writeln; - - badges - .filter!(b => b.enabled) + badges.filter!(b => b.enabled) .map!(b => [b.link_decl(), b.image_decl()]) - .joiner() - .array - .sort - .uniq - .each!writeln; + .joiner().array.sort.uniq.each!writeln; } |