Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,22 @@ jobs:
- uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --workspace

# Empaquette les crates publiées et les recompile depuis leur tarball. Aucun
# `cargo test` ne fait ça, et c'est la seule étape qui voit ce qui manque au
# paquet : la release 0.6.0 s'est arrêtée sur 65 `include_str!` visant un
# dossier situé hors de la crate, donc absent de l'archive. Sans ce job, cette
# famille de défaut ne se découvre qu'en publiant — et une publication
# crates.io ne se défait pas, elle se yanke.
package:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libfontconfig1-dev libfreetype6-dev
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Package publishable crates
# studio et cli ne sont pas publiées ; les exclure évite d'installer la
# pile GTK/WebKit ici pour rien.
run: cargo package --workspace --exclude rustmotion-studio --exclude rustmotion-cli
29 changes: 28 additions & 1 deletion .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ jobs:
- uses: actions/checkout@v4

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libfontconfig1-dev libfreetype6-dev
# Doit rester identique à ci.yaml : l'étape « Run tests » ci-dessous lance
# `cargo test --workspace`, qui compile rustmotion-studio et tire donc la
# pile GTK/WebKit, elle-même adossée à glib-2.0. Sans ces paquets le build
# de glib-sys échoue et la release s'arrête avant toute publication.
# webkit/gtk/xdo: required to compile rustmotion-studio (dioxus desktop)
# asound: required by cpal, which rodio pulls in for preview audio
run: sudo apt-get update && sudo apt-get install -y libfontconfig1-dev libfreetype6-dev libwebkit2gtk-4.1-dev libgtk-3-dev libxdo-dev libasound2-dev

- uses: dtolnay/rust-toolchain@stable

Expand Down Expand Up @@ -60,5 +66,26 @@ jobs:
done
echo "Timeout waiting for rustmotion-components" && exit 1

# rustmotion dépend de rustmotion-html au même titre que de core et
# components. Sans cette étape, `cargo publish -p rustmotion` échoue sur une
# dépendance introuvable — mais en troisième position, core et components
# étant alors déjà publiées. Une publication crates.io ne se défait pas :
# l'échec obligerait à repasser tout le workspace en version suivante.
- name: Publish rustmotion-html
run: cargo publish -p rustmotion-html --token ${{ secrets.CARGO_REGISTRY_TOKEN }}

- name: Wait for rustmotion-html on crates.io
run: |
VERSION=$(grep '^version' crates/rustmotion-html/Cargo.toml | head -1 | sed 's/.*"\(.*\)".*/\1/')
for i in $(seq 1 30); do
if curl -sf "https://crates.io/api/v1/crates/rustmotion-html/$VERSION" > /dev/null; then
echo "rustmotion-html $VERSION available"
exit 0
fi
echo "Waiting... ($i)"
sleep 5
done
echo "Timeout waiting for rustmotion-html" && exit 1

- name: Publish rustmotion
run: cargo publish -p rustmotion --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
148 changes: 65 additions & 83 deletions crates/rustmotion-components/src/codeblock/highlight.rs
Original file line number Diff line number Diff line change
Expand Up @@ -203,19 +203,19 @@ fn theme_set() -> &'static ThemeSet {
let catppuccin_themes: &[(&str, &str)] = &[
(
"catppuccin-latte",
include_str!("../../../../themes/Catppuccin Latte.tmTheme"),
include_str!("../../themes/Catppuccin Latte.tmTheme"),
),
(
"catppuccin-frappe",
include_str!("../../../../themes/Catppuccin Frappe.tmTheme"),
include_str!("../../themes/Catppuccin Frappe.tmTheme"),
),
(
"catppuccin-macchiato",
include_str!("../../../../themes/Catppuccin Macchiato.tmTheme"),
include_str!("../../themes/Catppuccin Macchiato.tmTheme"),
),
(
"catppuccin-mocha",
include_str!("../../../../themes/Catppuccin Mocha.tmTheme"),
include_str!("../../themes/Catppuccin Mocha.tmTheme"),
),
];
for (name, xml) in catppuccin_themes {
Expand All @@ -228,241 +228,223 @@ fn theme_set() -> &'static ThemeSet {
let vscode_themes: &[(&str, &str)] = &[
(
"andromeeda",
include_str!("../../../../themes/vscode/andromeeda.json"),
include_str!("../../themes/vscode/andromeeda.json"),
),
(
"aurora-x",
include_str!("../../../../themes/vscode/aurora-x.json"),
include_str!("../../themes/vscode/aurora-x.json"),
),
(
"ayu-dark",
include_str!("../../../../themes/vscode/ayu-dark.json"),
include_str!("../../themes/vscode/ayu-dark.json"),
),
(
"ayu-light",
include_str!("../../../../themes/vscode/ayu-light.json"),
include_str!("../../themes/vscode/ayu-light.json"),
),
(
"ayu-mirage",
include_str!("../../../../themes/vscode/ayu-mirage.json"),
include_str!("../../themes/vscode/ayu-mirage.json"),
),
(
"dark-plus",
include_str!("../../../../themes/vscode/dark-plus.json"),
),
(
"dracula",
include_str!("../../../../themes/vscode/dracula.json"),
include_str!("../../themes/vscode/dark-plus.json"),
),
("dracula", include_str!("../../themes/vscode/dracula.json")),
(
"dracula-soft",
include_str!("../../../../themes/vscode/dracula-soft.json"),
include_str!("../../themes/vscode/dracula-soft.json"),
),
(
"everforest-dark",
include_str!("../../../../themes/vscode/everforest-dark.json"),
include_str!("../../themes/vscode/everforest-dark.json"),
),
(
"everforest-light",
include_str!("../../../../themes/vscode/everforest-light.json"),
include_str!("../../themes/vscode/everforest-light.json"),
),
(
"github-dark",
include_str!("../../../../themes/vscode/github-dark.json"),
include_str!("../../themes/vscode/github-dark.json"),
),
(
"github-dark-default",
include_str!("../../../../themes/vscode/github-dark-default.json"),
include_str!("../../themes/vscode/github-dark-default.json"),
),
(
"github-dark-dimmed",
include_str!("../../../../themes/vscode/github-dark-dimmed.json"),
include_str!("../../themes/vscode/github-dark-dimmed.json"),
),
(
"github-dark-high-contrast",
include_str!("../../../../themes/vscode/github-dark-high-contrast.json"),
include_str!("../../themes/vscode/github-dark-high-contrast.json"),
),
(
"github-light",
include_str!("../../../../themes/vscode/github-light.json"),
include_str!("../../themes/vscode/github-light.json"),
),
(
"github-light-default",
include_str!("../../../../themes/vscode/github-light-default.json"),
include_str!("../../themes/vscode/github-light-default.json"),
),
(
"github-light-high-contrast",
include_str!("../../../../themes/vscode/github-light-high-contrast.json"),
include_str!("../../themes/vscode/github-light-high-contrast.json"),
),
(
"gruvbox-dark-hard",
include_str!("../../../../themes/vscode/gruvbox-dark-hard.json"),
include_str!("../../themes/vscode/gruvbox-dark-hard.json"),
),
(
"gruvbox-dark-medium",
include_str!("../../../../themes/vscode/gruvbox-dark-medium.json"),
include_str!("../../themes/vscode/gruvbox-dark-medium.json"),
),
(
"gruvbox-dark-soft",
include_str!("../../../../themes/vscode/gruvbox-dark-soft.json"),
include_str!("../../themes/vscode/gruvbox-dark-soft.json"),
),
(
"gruvbox-light-hard",
include_str!("../../../../themes/vscode/gruvbox-light-hard.json"),
include_str!("../../themes/vscode/gruvbox-light-hard.json"),
),
(
"gruvbox-light-medium",
include_str!("../../../../themes/vscode/gruvbox-light-medium.json"),
include_str!("../../themes/vscode/gruvbox-light-medium.json"),
),
(
"gruvbox-light-soft",
include_str!("../../../../themes/vscode/gruvbox-light-soft.json"),
),
(
"horizon",
include_str!("../../../../themes/vscode/horizon.json"),
include_str!("../../themes/vscode/gruvbox-light-soft.json"),
),
("horizon", include_str!("../../themes/vscode/horizon.json")),
(
"horizon-bright",
include_str!("../../../../themes/vscode/horizon-bright.json"),
),
(
"houston",
include_str!("../../../../themes/vscode/houston.json"),
include_str!("../../themes/vscode/horizon-bright.json"),
),
("houston", include_str!("../../themes/vscode/houston.json")),
(
"kanagawa-dragon",
include_str!("../../../../themes/vscode/kanagawa-dragon.json"),
include_str!("../../themes/vscode/kanagawa-dragon.json"),
),
(
"kanagawa-lotus",
include_str!("../../../../themes/vscode/kanagawa-lotus.json"),
include_str!("../../themes/vscode/kanagawa-lotus.json"),
),
(
"kanagawa-wave",
include_str!("../../../../themes/vscode/kanagawa-wave.json"),
include_str!("../../themes/vscode/kanagawa-wave.json"),
),
(
"laserwave",
include_str!("../../../../themes/vscode/laserwave.json"),
include_str!("../../themes/vscode/laserwave.json"),
),
(
"light-plus",
include_str!("../../../../themes/vscode/light-plus.json"),
include_str!("../../themes/vscode/light-plus.json"),
),
(
"material-theme",
include_str!("../../../../themes/vscode/material-theme.json"),
include_str!("../../themes/vscode/material-theme.json"),
),
(
"material-theme-darker",
include_str!("../../../../themes/vscode/material-theme-darker.json"),
include_str!("../../themes/vscode/material-theme-darker.json"),
),
(
"material-theme-lighter",
include_str!("../../../../themes/vscode/material-theme-lighter.json"),
include_str!("../../themes/vscode/material-theme-lighter.json"),
),
(
"material-theme-ocean",
include_str!("../../../../themes/vscode/material-theme-ocean.json"),
include_str!("../../themes/vscode/material-theme-ocean.json"),
),
(
"material-theme-palenight",
include_str!("../../../../themes/vscode/material-theme-palenight.json"),
include_str!("../../themes/vscode/material-theme-palenight.json"),
),
(
"min-dark",
include_str!("../../../../themes/vscode/min-dark.json"),
include_str!("../../themes/vscode/min-dark.json"),
),
(
"min-light",
include_str!("../../../../themes/vscode/min-light.json"),
),
(
"monokai",
include_str!("../../../../themes/vscode/monokai.json"),
include_str!("../../themes/vscode/min-light.json"),
),
("monokai", include_str!("../../themes/vscode/monokai.json")),
(
"night-owl",
include_str!("../../../../themes/vscode/night-owl.json"),
include_str!("../../themes/vscode/night-owl.json"),
),
(
"night-owl-light",
include_str!("../../../../themes/vscode/night-owl-light.json"),
include_str!("../../themes/vscode/night-owl-light.json"),
),
("nord", include_str!("../../../../themes/vscode/nord.json")),
("nord", include_str!("../../themes/vscode/nord.json")),
(
"one-dark-pro",
include_str!("../../../../themes/vscode/one-dark-pro.json"),
include_str!("../../themes/vscode/one-dark-pro.json"),
),
(
"one-light",
include_str!("../../../../themes/vscode/one-light.json"),
),
(
"plastic",
include_str!("../../../../themes/vscode/plastic.json"),
include_str!("../../themes/vscode/one-light.json"),
),
("plastic", include_str!("../../themes/vscode/plastic.json")),
(
"poimandres",
include_str!("../../../../themes/vscode/poimandres.json"),
include_str!("../../themes/vscode/poimandres.json"),
),
("red", include_str!("../../../../themes/vscode/red.json")),
("red", include_str!("../../themes/vscode/red.json")),
(
"rose-pine",
include_str!("../../../../themes/vscode/rose-pine.json"),
include_str!("../../themes/vscode/rose-pine.json"),
),
(
"rose-pine-dawn",
include_str!("../../../../themes/vscode/rose-pine-dawn.json"),
include_str!("../../themes/vscode/rose-pine-dawn.json"),
),
(
"rose-pine-moon",
include_str!("../../../../themes/vscode/rose-pine-moon.json"),
include_str!("../../themes/vscode/rose-pine-moon.json"),
),
(
"slack-dark",
include_str!("../../../../themes/vscode/slack-dark.json"),
include_str!("../../themes/vscode/slack-dark.json"),
),
(
"slack-ochin",
include_str!("../../../../themes/vscode/slack-ochin.json"),
include_str!("../../themes/vscode/slack-ochin.json"),
),
(
"snazzy-light",
include_str!("../../../../themes/vscode/snazzy-light.json"),
include_str!("../../themes/vscode/snazzy-light.json"),
),
(
"solarized-dark",
include_str!("../../../../themes/vscode/solarized-dark.json"),
include_str!("../../themes/vscode/solarized-dark.json"),
),
(
"solarized-light",
include_str!("../../../../themes/vscode/solarized-light.json"),
include_str!("../../themes/vscode/solarized-light.json"),
),
(
"synthwave-84",
include_str!("../../../../themes/vscode/synthwave-84.json"),
include_str!("../../themes/vscode/synthwave-84.json"),
),
(
"tokyo-night",
include_str!("../../../../themes/vscode/tokyo-night.json"),
),
(
"vesper",
include_str!("../../../../themes/vscode/vesper.json"),
include_str!("../../themes/vscode/tokyo-night.json"),
),
("vesper", include_str!("../../themes/vscode/vesper.json")),
(
"vitesse-black",
include_str!("../../../../themes/vscode/vitesse-black.json"),
include_str!("../../themes/vscode/vitesse-black.json"),
),
(
"vitesse-dark",
include_str!("../../../../themes/vscode/vitesse-dark.json"),
include_str!("../../themes/vscode/vitesse-dark.json"),
),
(
"vitesse-light",
include_str!("../../../../themes/vscode/vitesse-light.json"),
include_str!("../../themes/vscode/vitesse-light.json"),
),
];
for (name, json) in vscode_themes {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading