Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(whiskers)!: switch to tera, use rich context objects #150

Merged
merged 12 commits into from
Mar 31, 2024
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
881 changes: 618 additions & 263 deletions Cargo.lock

Large diffs are not rendered by default.

37 changes: 26 additions & 11 deletions whiskers/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "catppuccin-whiskers"
version = "1.1.4"
version = "2.0.0"
authors = ["backwardspy <backwardspy@pigeon.life>"]
edition = "2021"
description = "Soothing port creation tool for the high-spirited!"
Expand All @@ -9,27 +9,42 @@ homepage = "https://github.com/catppuccin/toolbox/tree/main/whiskers"
repository = "https://github.com/catppuccin/toolbox"
license = "MIT"

[lib]
name = "whiskers"
path = "src/lib.rs"

[[bin]]
name = "whiskers"
path = "src/main.rs"

[lints.clippy]
all = "warn"
pedantic = "warn"
nursery = "warn"
unwrap_used = "warn"
missing_errors_doc = "allow"
implicit_hasher = "allow"
cast_possible_truncation = "allow"
cast_sign_loss = "allow"

[dependencies]
anyhow = "1.0"
base64 = "0.22"
catppuccin = { version = "2.1", features = ["css-colors"] }
indexmap = { version = "2.2", features = ["serde"] }
catppuccin = { version = "2.1", features = ["serde", "css-colors"] }
clap = { version = "4.5", features = ["derive"] }
clap-stdin = "0.4"
color-eyre = { version = "0.6", default-features = false }
clap-stdin = "0.4.0"
css-colors = "1.0"
handlebars = "5.1"
regex = "1.10"
indexmap = { version = "2.2", features = ["serde"] }
itertools = "0.12"
lzma-rust = "0.1"
nullishamy marked this conversation as resolved.
Show resolved Hide resolved
rmp-serde = "1.1"
semver = { version = "1.0.22", features = ["serde"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", features = ["preserve_order"] }
serde_json = "1.0"
nullishamy marked this conversation as resolved.
Show resolved Hide resolved
serde_yaml = "0.9"
tempfile = "3.10"
tempfile = "3.10.1"
tera = { version = "1.19", features = ["preserve_order"] }
thiserror = "1.0"
titlecase = "2.2"
json-patch = "1.2"

[dev-dependencies]
assert_cmd = "2.0"
Expand Down
495 changes: 252 additions & 243 deletions whiskers/README.md

Large diffs are not rendered by default.

27 changes: 0 additions & 27 deletions whiskers/examples/demo/input.hbs

This file was deleted.

28 changes: 28 additions & 0 deletions whiskers/examples/demo/input.tera
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
whiskers:
version: "2.0.0"
---
## Demo

**flavor:** {{ flavor.name }}

### Colours
{% set lightred = red | add(lightness=10) -%}
{% set darkred = red | sub(lightness=10) -%}
{% set palered = red | mix(color=base, amount=0.3) -%}
{% set fadered1 = red | mod(opacity=0.6) -%}
{% set fadered2 = red | mod(opacity=0.5) -%}

- **red:** #{{ red.hex }} / {{ css_rgb(color=red) }} / {{ css_hsl(color=red) }}
- **components:** r: {{ red.rgb.r }} / {{ red.rgb.r / 255 | trunc(places=2) }}, g: {{ red.rgb.g }} / {{ red.rgb.g / 255 | trunc(places=2) }}, b: {{ red.rgb.b }} / {{ red.rgb.b / 255 | trunc(places=2) }}
- **alpha:** {{ fadered1.opacity }} / {{ fadered1.opacity / 255 | trunc(places=2) }}
- **10% lighter:** #{{ lightred.hex }} / {{ css_rgb(color=lightred) }} / {{ css_hsl(color=lightred) }}
- **10% darker:** #{{ darkred.hex }} / {{ css_rgb(color=darkred) }} / {{ css_hsl(color=darkred) }}

- **30% mix with base:** #{{ palered.hex }} / {{ css_rgb(color=palered) }} / {{ css_hsl(color=palered) }}

- **50% opacity:** #{{ fadered2.hex }} / {{ css_rgba(color=fadered2) }} / {{ css_hsla(color=fadered2) }}

### Conditionals

this is a {{ if(cond=flavor.dark, t="dark", f="light") }} theme
2 changes: 1 addition & 1 deletion whiskers/examples/demo/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ clean:

# Generate a single flavor, e.g. "mocha"
gen flavor:
@{{whiskers_cmd}} input.hbs {{flavor}} -o {{output}}/{{flavor}}.md
@{{whiskers_cmd}} input.tera -f {{flavor}} > {{output}}/{{flavor}}.md

# Generate all four flavors
all: setup (gen "latte") (gen "frappe") (gen "macchiato") (gen "mocha")
13 changes: 4 additions & 9 deletions whiskers/examples/demo/output/frappe.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,16 @@
**flavor:** Frappé

### Colours

- **red:** #e78284 / rgb(231, 130, 132) / hsl(359, 68%, 71%)
- **components:** r: 231 / 0.91, g: 130 / 0.51, b: 132 / 0.52
- **alpha:** 153 / 0.60
backwardspy marked this conversation as resolved.
Show resolved Hide resolved
- **10% lighter:** #f0aeb0 / rgb(240, 174, 176) / hsl(358, 69%, 81%)
- **10% lighter:** #f0aeb0 / rgb(240, 174, 176) / hsl(359, 68%, 81%)
- **10% darker:** #df5759 / rgb(223, 87, 89) / hsl(359, 68%, 61%)

- **30% mix with base:** #684c59 / rgb(104, 76, 89) / hsl(332, 16%, 35%)
- **30% mix with base:** #684b59 / rgb(104, 75, 89) / hsl(331, 16%, 35%)

- **50% opacity:** #e7838480 / rgba(231, 131, 132, 0.50) / hsla(359, 67%, 71%, 0.50)
- **50% opacity:** #e7828480 / rgba(231, 130, 132, 0.50) / hsla(359, 68%, 71%, 0.50)

### Conditionals

this is a dark theme

### Misc

unquote this: false
this is a dark theme
13 changes: 4 additions & 9 deletions whiskers/examples/demo/output/latte.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,16 @@
**flavor:** Latte

### Colours

- **red:** #d20f39 / rgb(210, 15, 57) / hsl(347, 87%, 44%)
- **components:** r: 210 / 0.82, g: 15 / 0.06, b: 57 / 0.22
- **alpha:** 153 / 0.60
- **10% lighter:** #f02652 / rgb(240, 38, 82) / hsl(347, 87%, 55%)
- **10% darker:** #a20c2c / rgb(162, 12, 44) / hsl(347, 86%, 34%)
- **10% darker:** #a20c2c / rgb(162, 12, 44) / hsl(347, 87%, 34%)

- **30% mix with base:** #e7adbd / rgb(231, 173, 189) / hsl(343, 55%, 79%)
- **30% mix with base:** #e6adbc / rgb(230, 173, 188) / hsl(344, 53%, 79%)

- **50% opacity:** #d30f3a80 / rgba(211, 15, 58, 0.50) / hsla(347, 87%, 44%, 0.50)
- **50% opacity:** #d20f3980 / rgba(210, 15, 57, 0.50) / hsla(347, 87%, 44%, 0.50)

### Conditionals

this is a light theme

### Misc

unquote this: true
this is a light theme
11 changes: 3 additions & 8 deletions whiskers/examples/demo/output/macchiato.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,16 @@
**flavor:** Macchiato

### Colours

- **red:** #ed8796 / rgb(237, 135, 150) / hsl(351, 74%, 73%)
- **components:** r: 237 / 0.93, g: 135 / 0.53, b: 150 / 0.59
- **alpha:** 153 / 0.60
- **10% lighter:** #f4b4be / rgb(244, 180, 190) / hsl(351, 75%, 83%)
- **10% lighter:** #f4b4be / rgb(244, 180, 190) / hsl(351, 74%, 83%)
- **10% darker:** #e65a6f / rgb(230, 90, 111) / hsl(351, 74%, 63%)

- **30% mix with base:** #624455 / rgb(98, 68, 85) / hsl(326, 18%, 33%)
- **30% mix with base:** #614455 / rgb(97, 68, 85) / hsl(325, 18%, 33%)

- **50% opacity:** #ed879680 / rgba(237, 135, 150, 0.50) / hsla(351, 74%, 73%, 0.50)

### Conditionals

this is a dark theme

### Misc

unquote this: false
this is a dark theme
11 changes: 3 additions & 8 deletions whiskers/examples/demo/output/mocha.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,16 @@
**flavor:** Mocha

### Colours

- **red:** #f38ba8 / rgb(243, 139, 168) / hsl(343, 81%, 75%)
- **components:** r: 243 / 0.95, g: 139 / 0.55, b: 168 / 0.66
- **alpha:** 153 / 0.60
- **10% lighter:** #f8bacc / rgb(248, 186, 204) / hsl(343, 82%, 85%)
- **10% lighter:** #f8bacc / rgb(248, 186, 204) / hsl(343, 81%, 85%)
- **10% darker:** #ee5c85 / rgb(238, 92, 133) / hsl(343, 81%, 65%)

- **30% mix with base:** #5e4054 / rgb(94, 64, 84) / hsl(320, 19%, 31%)
- **30% mix with base:** #5e3f53 / rgb(94, 63, 83) / hsl(321, 20%, 31%)

- **50% opacity:** #f38ba880 / rgba(243, 139, 168, 0.50) / hsla(343, 81%, 75%, 0.50)

### Conditionals

this is a dark theme

### Misc

unquote this: false
this is a dark theme
File renamed without changes.
41 changes: 0 additions & 41 deletions whiskers/examples/frontmatter/input.hbs

This file was deleted.

39 changes: 39 additions & 0 deletions whiskers/examples/frontmatter/input.tera
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
whiskers:
version: "2.0.0"
dark_accent: mauve
light_accent: pink
---
{% set parent = if(cond=flavor.dark, t='darcula', f='default') -%}
{% set accent = if(cond=flavor.dark, t=dark_accent, f=light_accent) -%}

## Demo With Frontmatter

**flavor:** {{ flavor.name }}

This file also contains variables that have been defined in the frontmatter, as shown below:

### Frontmatter Variables

- **parent** is {{ parent }}
- **accent** is #{{ flavor.colors[accent].hex }}

### Colours

- **red:** #{{ red.hex }} / {{ css_rgb(color=red) }} / {{ css_hsl(color=red) }}
- **components:** r: {{ red.rgb.r }} / {{ red.rgb.r / 255 | trunc(places=2) }}, g: {{ red.rgb.g }} / {{ red.rgb.g / 255 | trunc(places=2) }}, b: {{ red.rgb.b }} / {{ red.rgb.b / 255 | trunc(places=2) }}
- **alpha:** {{ red.opacity }} / {{ red.opacity / 255 | trunc(places=2) }}
{% set lightred = red | add(lightness=10) -%}
- **10% lighter:** #{{ lightred.hex }} / {{ css_rgb(color=lightred) }} / {{ css_hsl(color=lightred) }}
{% set darkred = red | sub(lightness=10) -%}
- **10% darker:** #{{ darkred.hex }} / {{ css_rgb(color=darkred) }} / {{ css_hsl(color=darkred) }}

{% set palered = red | mix(color=base, amount=0.3) -%}
- **30% mix with base:** #{{ palered.hex }} / {{ css_rgb(color=palered) }} / {{ css_hsl(color=palered) }}

{% set fadered = red | mod(opacity=0.5) -%}
- **50% opacity:** #{{ fadered.hex }} / {{ css_rgba(color=fadered) }} / {{ css_hsla(color=fadered) }}

### Conditionals

this is a {{ if(cond=flavor.dark, t="dark", f="light") }} theme
2 changes: 1 addition & 1 deletion whiskers/examples/frontmatter/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ clean:

# Generate a single flavor, e.g. "mocha"
gen flavor:
@{{whiskers_cmd}} input.hbs {{flavor}} -o {{output}}/{{flavor}}.md
@{{whiskers_cmd}} input.tera --flavor {{flavor}} > {{output}}/{{flavor}}.md

# Generate all four flavors
all: setup (gen "latte") (gen "frappe") (gen "macchiato") (gen "mocha")
14 changes: 5 additions & 9 deletions whiskers/examples/frontmatter/output/frappe.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,14 @@ This file also contains variables that have been defined in the frontmatter, as

- **red:** #e78284 / rgb(231, 130, 132) / hsl(359, 68%, 71%)
- **components:** r: 231 / 0.91, g: 130 / 0.51, b: 132 / 0.52
- **alpha:** 153 / 0.60
- **10% lighter:** #f0aeb0 / rgb(240, 174, 176) / hsl(358, 69%, 81%)
- **alpha:** 255 / 1.00
- **10% lighter:** #f0aeb0 / rgb(240, 174, 176) / hsl(359, 68%, 81%)
- **10% darker:** #df5759 / rgb(223, 87, 89) / hsl(359, 68%, 61%)

- **30% mix with base:** #684c59 / rgb(104, 76, 89) / hsl(332, 16%, 35%)
- **30% mix with base:** #684b59 / rgb(104, 75, 89) / hsl(331, 16%, 35%)

- **50% opacity:** #e7838480 / rgba(231, 131, 132, 0.50) / hsla(359, 67%, 71%, 0.50)
- **50% opacity:** #e7828480 / rgba(231, 130, 132, 0.50) / hsla(359, 68%, 71%, 0.50)

### Conditionals

this is a dark theme

### Misc

unquote this: false
this is a dark theme
14 changes: 5 additions & 9 deletions whiskers/examples/frontmatter/output/latte.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,14 @@ This file also contains variables that have been defined in the frontmatter, as

- **red:** #d20f39 / rgb(210, 15, 57) / hsl(347, 87%, 44%)
- **components:** r: 210 / 0.82, g: 15 / 0.06, b: 57 / 0.22
- **alpha:** 153 / 0.60
- **alpha:** 255 / 1.00
- **10% lighter:** #f02652 / rgb(240, 38, 82) / hsl(347, 87%, 55%)
- **10% darker:** #a20c2c / rgb(162, 12, 44) / hsl(347, 86%, 34%)
- **10% darker:** #a20c2c / rgb(162, 12, 44) / hsl(347, 87%, 34%)

- **30% mix with base:** #e7adbd / rgb(231, 173, 189) / hsl(343, 55%, 79%)
- **30% mix with base:** #e6adbc / rgb(230, 173, 188) / hsl(344, 53%, 79%)

- **50% opacity:** #d30f3a80 / rgba(211, 15, 58, 0.50) / hsla(347, 87%, 44%, 0.50)
- **50% opacity:** #d20f3980 / rgba(210, 15, 57, 0.50) / hsla(347, 87%, 44%, 0.50)

### Conditionals

this is a light theme

### Misc

unquote this: true
this is a light theme
Loading
Loading