diff --git a/Cargo.lock b/Cargo.lock index f01b2a5..2f73403 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -228,12 +228,6 @@ dependencies = [ "syn", ] -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - [[package]] name = "errno" version = "0.3.8" @@ -244,28 +238,12 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "hashbrown" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" - [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown", -] - [[package]] name = "itoa" version = "1.0.11" @@ -320,8 +298,8 @@ dependencies = [ "rust-apt", "serde", "serde_json", - "serde_yaml", "termios", + "toml", "walkdir", ] @@ -472,19 +450,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "strsim" version = "0.11.1" @@ -530,6 +495,15 @@ dependencies = [ "libc", ] +[[package]] +name = "toml" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" +dependencies = [ + "serde", +] + [[package]] name = "unicode-ident" version = "1.0.12" @@ -548,12 +522,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - [[package]] name = "utf8parse" version = "0.2.1" diff --git a/README.md b/README.md index a22c470..31d8939 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ This tree shows my pacdef repository (not the `pacdef` config dir). │ ├── hostname_a │ ├── hostname_b │ └── hostname_c -└── pacdef.yaml +└── pacdef.toml ``` - The `base` group holds all packages I need unconditionally, and includes things like zfs, @@ -174,18 +174,18 @@ Use `--help` or the zsh completion to find the right aliases. ## Configuration -On first execution, it will create an empty config file under `$XDG_CONFIG_HOME/pacdef/pacdef.yaml`. +On first execution, it will create an empty config file under `$XDG_CONFIG_HOME/pacdef/pacdef.toml`. The following key-value pairs can be set. The listed values are the defaults. -```yaml -aur_helper: paru # AUR helper to use on Arch Linux (paru, yay, ...) -aur_rm_args: [] # additional args to pass to AUR helper when removing packages (optional) -disabled_backends: [] # backends that pacdef should not manage, e.g. ["python"], this can reduce runtime if the package manager is notoriously slow (like pip) +```toml +aur_helper = paru # AUR helper to use on Arch Linux (paru, yay, ...) +aur_rm_args = [] # additional args to pass to AUR helper when removing packages (optional) +disabled_backends = [] # backends that pacdef should not manage, e.g. ["python"], this can reduce runtime if the package manager is notoriously slow (like pip) -warn_not_symlinks: true # warn if a group file is not a symlink -flatpak_systemwide: true # whether flatpak packages should be installed system-wide or per user -pip_binary: pip # choose whether to use pipx instead of pip for python package management (see below, 'pitfalls while using pipx') +warn_not_symlinks = true # warn if a group file is not a symlink +flatpak_systemwide = true # whether flatpak packages should be installed system-wide or per user +pip_binary = pip # choose whether to use pipx instead of pip for python package management (see below, 'pitfalls while using pipx') ``` diff --git a/crates/pacdef/Cargo.toml b/crates/pacdef/Cargo.toml index d378fa4..bd71cad 100644 --- a/crates/pacdef/Cargo.toml +++ b/crates/pacdef/Cargo.toml @@ -23,7 +23,7 @@ enum_dispatch = "0.3" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -serde_yaml = "0.9" +toml = "0.4" # backends alpm = { version = "3.0", optional = true } diff --git a/crates/pacdef/src/config.rs b/crates/pacdef/src/config.rs index 77ff2df..50f7e88 100644 --- a/crates/pacdef/src/config.rs +++ b/crates/pacdef/src/config.rs @@ -6,7 +6,7 @@ use anyhow::{bail, Context, Result}; use serde::{Deserialize, Serialize}; // Update the master README if fields change. -/// Config for the program, as listed in `$XDG_CONFIG_HOME/pacdef/pacdef.yaml`. +/// Config for the program, as listed in `$XDG_CONFIG_HOME/pacdef/pacdef.toml`. #[derive(Debug, Serialize, Deserialize)] pub struct Config { /// The AUR helper to use for Arch Linux. @@ -61,7 +61,7 @@ impl Config { } }; - serde_yaml::from_str(&content).context("parsing yaml config") + toml::from_str(&content).context("parsing toml config") } /// Save the instance of [`Config`] to disk. @@ -70,7 +70,7 @@ impl Config { /// /// This function will return an error if the config file cannot be saved to disk. pub fn save(&self, file: &Path) -> Result<()> { - let content = serde_yaml::to_string(&self).context("converting Config to yaml")?; + let content = toml::to_string(&self).context("converting Config to toml")?; let parent = file.parent().context("getting parent of config dir")?; if !parent.is_dir() { diff --git a/crates/pacdef/src/main.rs b/crates/pacdef/src/main.rs index e54ca43..c1782e2 100644 --- a/crates/pacdef/src/main.rs +++ b/crates/pacdef/src/main.rs @@ -25,9 +25,9 @@ use pacdef::path::{get_config_path, get_config_path_old_version, get_group_dir}; use pacdef::{Config, Error as PacdefError, Group}; const MAJOR_UPDATE_MESSAGE: &str = "VERSION UPGRADE -You seem to have used version 0.x of pacdef before. -Version 1.x changes the syntax of the config files and the command line arguments. -Check out https://github.com/steven-omaha/pacdef for new syntax information. +You seem to have used version 1.x of pacdef before. +In version 2.0 the config file needed to be changed from yaml to toml. +Check out https://github.com/steven-omaha/pacdef/blob/main/README.md#configuration for new syntax information. This message will not appear again. ------"; diff --git a/crates/pacdef/src/path.rs b/crates/pacdef/src/path.rs index 9c47fb7..5c26c5a 100644 --- a/crates/pacdef/src/path.rs +++ b/crates/pacdef/src/path.rs @@ -8,8 +8,8 @@ use std::{env, path::Path}; use anyhow::{Context, Result}; use path_absolutize::Absolutize; -const CONFIG_FILE_NAME: &str = "pacdef.yaml"; -const CONFIG_FILE_NAME_OLD: &str = "pacdef.conf"; +const CONFIG_FILE_NAME: &str = "pacdef.toml"; +const CONFIG_FILE_NAME_OLD: &str = "pacdef.yaml"; /// Get the group directory where all group files are located. This is /// `$XDG_CONFIG_HOME/pacdef/groups`, which defaults to `$HOME/.config/pacdef/groups`. @@ -76,7 +76,7 @@ pub fn get_home_dir() -> Result { Ok(env::var("HOME").context("getting $HOME variable")?.into()) } -/// Get the path to the pacdef config file. This is `$XDG_CONFIG_HOME/pacdef/pacdef.yaml`. +/// Get the path to the pacdef config file. This is `$XDG_CONFIG_HOME/pacdef/pacdef.toml`. /// /// # Errors /// diff --git a/man/pacdef.8 b/man/pacdef.8 index 38c9df4..f5b7ee9 100644 --- a/man/pacdef.8 +++ b/man/pacdef.8 @@ -16,7 +16,7 @@ Each section contains one or more packages that can be installed respective pack .SH CONFIGURATION Configure pacdef in its config file. See -.BR pacdef.yaml(5). +.BR pacdef.toml(5). .SS GROUP FILE SYNTAX @@ -163,5 +163,5 @@ Mostly 'steven-omaha'. Contributors under https://github.com/steven-omaha/pacdef/graphs/contributors. .SH SEE ALSO -.BR pacdef.yaml(5) +.BR pacdef.toml(5) diff --git a/man/pacdef.yaml.5 b/man/pacdef.toml.5 similarity index 88% rename from man/pacdef.yaml.5 rename to man/pacdef.toml.5 index cfe93e3..985547c 100644 --- a/man/pacdef.yaml.5 +++ b/man/pacdef.toml.5 @@ -1,11 +1,11 @@ -.TH "PACDEF.YAML" "5" "2024\-04\-13" "pacdef v1\&.6\&.0" "Pacdef Manual" +.TH "PACDEF.TOML" "5" "2024\-04\-13" "pacdef v1\&.6\&.0" "Pacdef Manual" .SH NAME -pacdef.yaml \(em pacdef configuration file +pacdef.toml \(em pacdef configuration file .SH SYNOPSIS -$XDG_CONFIG_HOME/pacdef/pacdef.yaml +$XDG_CONFIG_HOME/pacdef/pacdef.toml .br -$HOME/.config/pacdef/pacdef.yaml +$HOME/.config/pacdef/pacdef.toml . .SH DESCRIPTION This is the config file for