add get_env function to yuck (#779)

* added basic get_env function to yuck

* added get_env to changelog

* added get_env to docs

* changed key to string in doc

* changed suggested code

* credit myself in CHANGELOG.md
This commit is contained in:
Jacob 2024-03-20 11:45:08 +00:00 committed by GitHub
parent 4ce42455a4
commit f1ec00a1c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 8 deletions

View File

@ -15,6 +15,7 @@ All notable changes to eww will be listed here, starting at changes since versio
- Remove `eww windows` command, replace with `eww active-windows` and `eww list-windows`
### Features
- Add `get_env` function (By: RegenJacob)
- Add `:namespace` window option
- Default to building with x11 and wayland support simultaneously
- Add `truncate-left` property on `label` widgets (By: kawaki-san)

View File

@ -313,6 +313,13 @@ impl SimplExpr {
fn call_expr_function(name: &str, args: Vec<DynVal>) -> Result<DynVal, EvalError> {
match name {
"get_env" => match args.as_slice() {
[var_name] => {
let var = std::env::var(var_name.as_string()?).unwrap_or_default();
Ok(DynVal::from(var))
}
_ => Err(EvalError::WrongArgCount(name.to_string())),
},
"round" => match args.as_slice() {
[num, digits] => {
let num = num.as_f64()?;

View File

@ -51,11 +51,12 @@ Supported currently are the following features:
- `arraylength(value)`: Gets the length of the array
- `objectlength(value)`: Gets the amount of entries in the object
- `jq(value, jq_filter_string)`: run a [jq](https://stedolan.github.io/jq/manual/) style command on a json value. (Uses [jaq](https://crates.io/crates/jaq) internally).
- `formattime(unix_timestamp, format_str, timezone)`: Gets the time in a given format from UNIX timestamp.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string and [chrono-tz's documentation](https://docs.rs/chrono-tz/latest/chrono_tz/enum.Tz.html)
for available time zones.
- `formattime(unix_timestamp, format_str)`: Gets the time in a given format from UNIX timestamp.
Same as other `formattime`, but does not accept timezone. Instead, it uses system's local timezone.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string.
- `get_env(string)`: Gets the specified enviroment variable
- `formattime(unix_timestamp, format_str, timezone)`: Gets the time in a given format from UNIX timestamp.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string and [chrono-tz's documentation](https://docs.rs/chrono-tz/latest/chrono_tz/enum.Tz.html)
for available time zones.
- `formattime(unix_timestamp, format_str)`: Gets the time in a given format from UNIX timestamp.
Same as other `formattime`, but does not accept timezone. Instead, it uses system's local timezone.
Check [chrono's documentation](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) for more
information about format string.