🦀 Syncing dotfiles and more

Overview

DT

release tests docs crates.io

DT allows you to sync/populate configuration files at will. It currently provides a CLI tool dt-cli.

Usage

The command line interface dt-cli takes a path to the configuration file as argument and issues the syncing process defined in the configuration file.

See documentations for configuration guides and detailed usages.

Example

A minimal working configuration file to sync all files that matches *init.vim from ~/dt/nvim to ~/.config/nvim can be written as:

[[local]]
name = "Neovim Configs"
basedir = "~/dt/nvim"
sources = ["*init.vim"]
target = "~/.config/nvim"

⚠️ STOP HERE if you don't know what you are doing, or have not backed up existing files under ~/.config/nvim.

Save above config to ~/.config/dt/cli.toml and run

$ dt-cli -c ~/.config/dt/cli.toml

to start syncing. Note the path in this example (~/.config/dt/cli.toml) is also the default path, so the below command (calling dt-cli with no argument) does the same thing as above:

$ dt-cli

Other command line options & flags

Options/Flags Description
-c|--config-path <path> Specifies path to config file.
-d|--dry-run Shows changes to be made without actually syncing files.
-v|--verbose Increases logging verbosity.
-q|--quiet Decreases logging verbosity.
-h|--help Prints help information.
-V Prints version information.

Install

AUR

dt-cli is in the AUR, you can install it with your favorite package manager:

$ paru -S dt-cli

Alternative Ways

Alternatively, you can:

  • Download latest release from GitHub

  • Install from crates.io:

    $ cargo install dt-cli
  • Build from source:

    $ git clone github.com:blurgyy/dt.git
    $ cd dt
    $ cargo test --release
    $ cargo install --path=dt-cli

Contributing

There are many ways to contribute to this project. Get started here!

License

Licensed under the the MIT license http://opensource.org/licenses/MIT or Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0, at your option. This file may not be copied, modified, or distributed except according to those terms.

Comments
  • Config via environment variable(s)?

    Config via environment variable(s)?

    I would like to have my config in a different directory but also not have to specify my config location every time. Right now I am thinking I can just

    alias dt='dt-cli -c ~/.path/to/file'
    

    but would you be open to reading from a DT_CONFIG_PATH variable or something along those lines?

    enhancement good first issue 
    opened by etdr 2
  • build(deps): Bump tokio from 1.22.0 to 1.23.1

    build(deps): Bump tokio from 1.22.0 to 1.23.1

    Bumps tokio from 1.22.0 to 1.23.1.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.23.1

    This release forward ports changes from 1.18.4.

    Fixed

    • net: fix Windows named pipe server builder to maintain option when toggling pipe mode (#5336).

    #5336: tokio-rs/tokio#5336

    Tokio v1.23.0

    Fixed

    • net: fix Windows named pipe connect (#5208)
    • io: support vectored writes for ChildStdin (#5216)
    • io: fix async fn ready() false positive for OS-specific events (#5231)

    Changed

    • runtime: yield_now defers task until after driver poll (#5223)
    • runtime: reduce amount of codegen needed per spawned task (#5213)
    • windows: replace winapi dependency with windows-sys (#5204)

    #5208: tokio-rs/tokio#5208 #5216: tokio-rs/tokio#5216 #5213: tokio-rs/tokio#5213 #5204: tokio-rs/tokio#5204 #5223: tokio-rs/tokio#5223 #5231: tokio-rs/tokio#5231

    Commits
    • 1a997ff chore: prepare Tokio v1.23.1 release
    • a8fe333 Merge branch 'tokio-1.20.x' into tokio-1.23.x
    • ba81945 chore: prepare Tokio 1.20.3 release
    • 763bdc9 ci: run WASI tasks using latest Rust
    • 9f98535 Merge remote-tracking branch 'origin/tokio-1.18.x' into fix-named-pipes-1.20
    • 9241c3e chore: prepare Tokio v1.18.4 release
    • 699573d net: fix named pipes server configuration builder
    • 3ce5a26 chore: prepare Tokio v1.23 release (#5270)
    • 644cb82 rt: fix *_closed false positives (#5231)
    • a1316cd io: impl std::io::BufRead on SyncIoBridge\<T> (#5265)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): Update shellexpand requirement from 2.1.2 to 3.0.0 in /dt-core

    build(deps): Update shellexpand requirement from 2.1.2 to 3.0.0 in /dt-core

    Updates the requirements on shellexpand to permit the latest version.

    Commits
    • a7e18d6 Merge branch 'versions' into 'main'
    • a3b63cb Bump versions for release
    • 98569ed cargo update (update example lockfile only)
    • faf7f29 Merge branch 'features' into 'main'
    • 26495ad Make dirs dependency optional
    • 0cb4d4e Document features, and introduce base-0 feature
    • 28ff118 Merge branch 'wip.paths' into 'main'
    • 2edf2ed Rename traits
    • 99b2a25 Rename hopefully_into_xstring to try_into_xstring
    • 3a31f39 Document new path feature in README
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): Update gethostname requirement from 0.3.0 to 0.4.0 in /dt-core

    build(deps): Update gethostname requirement from 0.3.0 to 0.4.0 in /dt-core

    Updates the requirements on gethostname to permit the latest version.

    Changelog

    Sourced from gethostname's changelog.

    0.4.0 – 2022-10-28

    Changed

    • Replace winapi with windows-rs, see GH-7.
    • Bump MSRV to 1.64 as required by windows-rs, see GH-7.

    GH-7: lunaryorn/gethostname.rs#7

    0.3.0 – 2022-10-09

    Changed

    • Bump MSRV to 1.56.

    0.2.3 – 2022-03-12

    Changed

    • Limit gethostname() to cfg(unix) and cfg(windows) to provide more useful build failures on other platforms (see CB-7).

    0.2.2 – 2022-01-14

    0.2.1 – 2019-12-18

    Changed

    • Consolidate documetation.
    • Update crates.io metadata.

    0.2.0 – 2019-01-22

    Added

    • Add Windows implementation (see GH-1).

    GH-1: lunaryorn/gethostname.rs#1

    Changed

    • Pin supported Rust version to 1.31

    0.1.0 – 2019-01-20

    Initial release.

    Added

    • gethostname() for non-Windows platforms.
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): Update color-eyre requirement from 0.5.11 to 0.6.0 in /dt-core

    build(deps): Update color-eyre requirement from 0.5.11 to 0.6.0 in /dt-core

    Updates the requirements on color-eyre to permit the latest version.

    Changelog

    Sourced from color-eyre's changelog.

    [0.6.0] - 2022-01-12

    Changed

    • Updated dependencies to match newest tracing versions

    [0.5.11] - 2021-04-13

    [0.5.10] - 2020-12-02

    Added

    • Support custom themes

    [0.5.9] - 2020-12-02

    Fixed

    • Bumped color-spantrace dependency version to fix a panic

    [0.5.8] - 2020-11-23

    Added

    • Exposed internal interfaces for the panic handler so that it can be wrapped by consumers to customize the behaviour of the panic hook.

    [0.5.7] - 2020-11-05

    Fixed

    • Added missing cfgs that caused compiler errors when only enabling the issue-url feature

    [0.5.6] - 2020-10-02

    Added

    • Add support for track caller added in eyre 0.6.1 and print original callsites of errors in all eyre::Reports by default

    [0.5.5] - 2020-09-21

    Added

    • add issue_filter method to HookBuilder for disabling issue generation based on the error encountered.

    [0.5.4] - 2020-09-17

    Added

    • Add new "issue-url" feature for generating issue creation links in error reports pre-populated with information about the error

    [0.5.3] - 2020-09-14

    Added

    • add panic_section method to HookBuilder for overriding the printer for the panic message at the start of panic reports

    [0.5.2] - 2020-08-31

    Added

    • make it so all Section trait methods can be called on Report in addition to the already supported usage on Result<T, E: Into<Report>>
    • panic_section to HookBuilder to add custom sections to panic reports
    • display_env_section to HookBuilder to disable the output indicating what

    ... (truncated)

    Commits
    • d79aab1 (cargo-release) version 0.6.0
    • 5cd0abd Prepare for 0.6 release
    • 5624f10 Merge pull request #92 from asonix/asonix/update-tracing-error
    • 316efcc integrate the rest of the changes by asonix
    • aaa87c2 update the rest of the tests/data files
    • 73cd61f fix clippy warnings
    • 3df3e93 integrate color-spantrace release
    • d8f8657 Fix tests (these seem very brittle)
    • 088ed53 Depend on proper subscriber features
    • 1480982 Update tracing error
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    Dependabot will merge this PR once CI passes on it, as requested by @blurgyy.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(deps): Update gethostname requirement from 0.3.0 to 0.4.1 in /dt-core

    build(deps): Update gethostname requirement from 0.3.0 to 0.4.1 in /dt-core

    Updates the requirements on gethostname to permit the latest version.

    Changelog

    Sourced from gethostname's changelog.

    [0.4.1] – 2022-12-01

    Changed

    [0.4.0] – 2022-10-28

    Changed

    • Replace winapi with windows-rs, see GH-7.
    • Bump MSRV to 1.64 as required by windows-rs, see GH-7.

    GH-7: swsnr/gethostname.rs#7

    [0.3.0] – 2022-10-09

    Changed

    • Bump MSRV to 1.56.

    [0.2.3] – 2022-03-12

    Changed

    • Limit gethostname() to cfg(unix) and cfg(windows) to provide more useful build failures on other platforms (see CB-7).

    [0.2.2] – 2022-01-14

    [0.2.1] – 2019-12-18

    Changed

    • Consolidate documetation.
    • Update crates.io metadata.

    [0.2.0] – 2019-01-22

    Added

    • Add Windows implementation (see GH-1).

    GH-1: swsnr/gethostname.rs#1

    Changed

    • Pin supported Rust version to 1.31

    0.1.0 – 2019-01-20

    Initial release.

    Added

    • gethostname() for non-Windows platforms.

    ... (truncated)

    Commits
    • 9cb0e5e Release 0.4.1
    • 09d334a Note new repository in changelog
    • 19989c1 Update github URLs
    • 09a7382 Restore compatibility with cargo deny 0.12
    • af1ff94 Release 0.4.0
    • 3a3b7c5 Merge pull request #7 from lunaryorn/use-windows-rs
    • bdd5096 Remove old prior art section
    • 08b6da7 Fix clippy::unnecessary_cast
    • e57103a Check that the hostname is not empty
    • 3888ac8 Add safety asserts to windows code
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): Update gethostname requirement from 0.2.2 to 0.3.0 in /dt-core

    build(deps): Update gethostname requirement from 0.2.2 to 0.3.0 in /dt-core

    Updates the requirements on gethostname to permit the latest version.

    Changelog

    Sourced from gethostname's changelog.

    0.3.0 – 2022-10-09

    Changed

    • Bump MSRV to 1.56.

    0.2.3 – 2022-03-12

    Changed

    • Limit gethostname() to cfg(unix) and cfg(windows) to provide more useful build failures on other platforms (see #7).

    #7: lunaryorn/gethostname.rs#7

    0.2.2 – 2022-01-14

    0.2.1 – 2019-12-18

    Changed

    • Consolidate documetation.
    • Update crates.io metadata.

    0.2.0 – 2019-01-22

    Added

    • Add Windows implementation (see GH-1).

    Gh-1: lunaryorn/gethostname.rs#1

    Changed

    • Pin supported Rust version to 1.31

    0.1.0 – 2019-01-20

    Initial release.

    Added

    • gethostname() for non-Windows platforms.
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.7.10)
  • v0.7.10(Oct 13, 2022)

    [0.7.9] - 2022-06-08

    Bug Fixes

    • Don't abort with ConfigError if dir to be created already exists

    Documentation

    • Outdated API doc for Registry::get()
    • Fix typos
    • Update key references

    Miscellaneous Tasks

    • Fix typos
    • Add typos checking config for documentation
    • Minor adjustment to error message

    Styling

    • Format code with textwidth=100

    Testing

    • Update as per commit 71ae07e349f673b3b081cb754d1b198b61a89fc7

    Build

    • Strip installed binary

    Ops

    • Check typos with crate-ci/typos
    • Also check typos in documentation
    • Remove unused exclude entry for checking typos
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.10-aarch64(2.05 MB)
    dt-cli-v0.7.10-armv7(1.83 MB)
    dt-cli-v0.7.10-x86_64(2.31 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.7.9(Jun 8, 2022)

    [0.7.9] - 2022-06-08

    Bug Fixes

    • Don't abort with ConfigError if dir to be created already exists

    Documentation

    • Outdated API doc for Registry::get()
    • Fix typos
    • Update key references

    Miscellaneous Tasks

    • Fix typos
    • Add typos checking config for documentation
    • Minor adjustment to error message

    Styling

    • Format code with textwidth=100

    Testing

    • Update as per commit 71ae07e349f673b3b081cb754d1b198b61a89fc7

    Build

    • Strip installed binary

    Ops

    • Check typos with crate-ci/typos
    • Also check typos in documentation
    • Remove unused exclude entry for checking typos
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.9-aarch64(2.27 MB)
    dt-cli-v0.7.9-armv7(1.90 MB)
    dt-cli-v0.7.9-x86_64(2.53 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.7.8(Apr 15, 2022)

    [0.7.8] - 2022-04-15

    Bug Fixes

    • Wrong help messages for helpers
    • Unrenderable sources were not registered into registry

    Documentation

    • Adjust formatting in helpers' API docs and usage messages
    • Add API docs for helper if_os and unless_os

    Features

    • Config renderablility globally or per-group explicitly
    • Allow conditioning on os-release info with if_os and unless_os helpers

    Miscellaneous Tasks

    • Update log messages and documentation for the new renderable key

    Performance

    • Lazy load non-renderable files

    Styling

    • Reuse helper's help strings internally

    Testing

    • Add tests for helpers if_os and unless_os
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.8-aarch64(2.27 MB)
    dt-cli-v0.7.8-armv7(1.90 MB)
    dt-cli-v0.7.8-x86_64(2.54 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.7.7(Apr 5, 2022)

    [0.7.7] - 2022-04-05

    Bug Fixes

    • Do not silently pass unreadable sources while initializing registry

    Documentation

    • Add examples for using arrays in [context] to match attributes
    • Add mandatory double quotes for usage examples for helpers

    Features

    • Template a group if any component of its name exists as a context key
    • Match negated (list of) elements in block helpers
    • Allow arrays from templating contexts to serve as conditions

    Miscellaneous Tasks

    • [breaking] Change for_XX helper names to if_XX
    • Resolve warnings generated by cargo-clippy

    Performance

    • Minor optimization when matching condition is an array

    Refactor

    • Remove negated matching in block helpers
    • Move negated matching to separate helpers
    • Prepare for unit testing of helpers

    Testing

    • Add unit tests for templating helpers
    • Use deterministic dummy functions for tests
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.7-aarch64(2.24 MB)
    dt-cli-v0.7.7-armv7(1.87 MB)
    dt-cli-v0.7.7-x86_64(2.49 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.7.6(Mar 27, 2022)

  • v0.7.5(Mar 16, 2022)

  • v0.7.4(Mar 6, 2022)

    [0.7.4] - 2022-03-06

    Bug Fixes

    • Error occurred during setting permissions no longer aborts program

    Features

    • Add key ignore_failure to treat syncing errors as warnings
    • Add block helpers for_user and for_uid
    • Add block helper for_host

    Miscellaneous Tasks

    • Remove unused use in module item

    Performance

    • Registry cache was not utilized

    Refactor

    • Use to_string_lossy to convert OsStr to str across codebase

    Styling

    • Log single-line verbose messages at level "debug"
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.4-aarch64(2.22 MB)
    dt-cli-v0.7.4-armv7(1.86 MB)
    dt-cli-v0.7.4-x86_64(2.47 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.7.3(Feb 24, 2022)

    [0.7.3] - 2022-02-24

    Bug Fixes

    • Restore checks for remote groups
    • Type of Group::sources was non-generic

    Documentation

    • Resolve dead links in API docs

    Features

    • Allow hierarchical subgroups delimitered with slashes in name of groups
    • Filter groups hierarchically via command line

    Refactor

    • Provide no default impl in trait DTItem
    • Restrict group's generic parameter with bound Operate
    • Provide no default impl in trait DTRegistry
    • Render templates before modifying the file system
    • Take ownership for methods that return Self

    Styling

    • Rename trait DTItem to Operate
    • Rearrange order of struct definitions in config.rs
    • Update doc comments
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.3-aarch64(2.21 MB)
    dt-cli-v0.7.3-armv7(1.84 MB)
    dt-cli-v0.7.3-x86_64(2.46 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.7.2(Feb 14, 2022)

  • v0.7.1(Feb 4, 2022)

    [0.7.1] - 2022-02-04

    Bug Fixes

    • Host-specific item can sometimes be populated twice to destination

    Documentation

    • Fix highlighted lines in config example
    • Fix broken links in API docs

    Features

    • Add built-in helper get-mine to retrieve value for current host
    • Add array of remote groups to DTConfig
    • Abort on base/target/staging being the same
    • Treat empty paths in stating/base/target as .

    Miscellaneous Tasks

    • Update roadmap

    Refactor

    • Make Group a generic type to prepare for remote groups

    Styling

    • Remove redundant commas and format comments

    Testing

    • Make unit tests self-contained
    • Allow empty base to be present in config files
    • Refactor config tests that need filesystem access into config.rs

    Ops

    • Run tests on aarch64, armv7 and x86_64 architectures

    Reafactor

    • [breaking] Rename basedir to base and LocalGroup to Group
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.1-aarch64(2.19 MB)
    dt-cli-v0.7.1-armv7(1.83 MB)
    dt-cli-v0.7.1-x86_64(2.43 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.7.0(Jan 25, 2022)

    [0.7.0] - 2022-01-25

    Bug Fixes

    • Copy source file's permissions to destination
    • Non-existent target path's permission was read when symlinking

    Documentation

    • Add explanation of a "group"
    • Proof-read API docs
    • Add examples for the templating feature

    Features

    • Add templating utility via [context] section in config file

    Miscellaneous Tasks

    • Remove unused clippy exclude macro
    • Remove unused clippy exclude macro
    • Better error message when encoutering unreadable a source item
    • Fix typo "conig" -> "config"

    Refactor

    • Try to avoid rendering on binary files
    • Use handlebars instead of minijinja as templating engine
    • Make method DTConfig::expand_tilde behave functionally
    • Minor optimization on staging directory check
    • Infer default values for [global] section from helper types
    • Register templates into a global registry for later rendering
    • Drop templated config key, check is_templated on the fly
    • Deserialize scope key as default value when it's not present

    Styling

    • Resolve cargo-clippy warnings

    Ops

    • Run tests on all branches except for branch "docs"
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.7.0-aarch64(1.72 MB)
    dt-cli-v0.7.0-armv7(1.51 MB)
    dt-cli-v0.7.0-x86_64(1.95 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.6.3(Jan 15, 2022)

  • v0.6.2(Jan 15, 2022)

    [0.6.2] - 2022-01-15

    Documentation

    • Bump to v0.6.1
    • Wrong link name and broken link due to line breaking
    • Update descriptions for default staging directory

    Miscellaneous Tasks

    • Simplify function calls in dt-cli

    Performance

    • Reimplement item populating as a method from trait DTItem
    • Reimplement item populating (dry run) as a method from DTItem

    Build

    • Update color-eyre requirement in /dt-core

    Ops

    • Strip "linux" from names of released binaries
    • Use armv7 as architecture name for armv7 builds
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.6.2-aarch64(1.50 MB)
    dt-cli-v0.6.2-armv7(1.29 MB)
    dt-cli-v0.6.2-x86_64(1.68 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.6.1(Jan 5, 2022)

    [0.6.1] - 2022-01-05

    Documentation

    • Update example for scope in API docs for dt-core
    • Add documentations for the rename key
    • Better illustration structure for introduction of filename manip.
    • Add missing long option for showing version info

    Features

    • Allow groups to have duplicated names to enable finer control

    Miscellaneous Tasks

    • Only include executable crates in "command-lint-utilities" category
    • Use XDG_DATA_HOME instead of XDG_CACHE_HOME to store staged items
    • Remove duplicated keywords from dt-cli/Cargo.toml

    Performance

    • Reduce cloning operations when trying to get groups' attributes

    Styling

    • Quote path in tracing message when renaming items

    Ops

    • Use only tag as release name
    • Remove all symbols with strip
    • Release binaries for armv7l and aarch64
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.6.1-aarch64(1.51 MB)
    dt-cli-v0.6.1-armv7(1.31 MB)
    dt-cli-v0.6.1-x86_64(1.69 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.6.0(Dec 26, 2021)

    [0.6.0] - 2021-12-26

    Features

    Documentation

    • Revise API docs for regex matching and replacing utility
    • Default staging path was ambiguous in configuration guide

    Styling

    • Make tracing information for match and replace more readable
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.6.0-x86_64(1.69 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.5.2(Dec 16, 2021)

  • v0.5.1(Dec 6, 2021)

    [0.5.1] - 2021-12-06

    Performance

    • Skip overwriting destination files with identical contents as src

    Documentation

    • Update docs domain to dt.cli.rs (Thanks @zackify for the awesome repo cli.rs)
    • Fix repository link in package.json
    • Add comprehensive documentations for the scope key
    • Move config examples of scope into hands-on guide
    • Add action link to quickly skip background subsection
    • Fix typos, add emphasizes, and improve grammars
    • Bump dependencies

    Miscellaneous Tasks

    Ops

    • Include build arch in file name of released binary
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.5.1-x86_64(1.61 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.5.0(Nov 26, 2021)

    [0.5.0] - 2021-11-26

    Features

    • Specify optional desired group names without -l|--local-name

    Bug Fixes

    • Not all bad globbing patterns were considered
    • Do not create staging directory when method is not "Symlink"
    • Should use target to determine conflicting groups

    Documentation

    • Review API docs for DTScope
    • Update structure of documentation home page

    Miscellaneous Tasks

    • Rephrase readme
    • Add missing punct in readme
    • Fix git clone remote in readme
    • Update roadmap

    Ops

    • Include version info in file name of released binary
    Source code(tar.gz)
    Source code(zip)
    dt-cli-v0.5.0(1.61 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.4.0(Nov 16, 2021)

    [0.4.0] - 2021-11-16

    Features

    • Add priority control via the scope key

    Performance

    • Only expand groups that are to be synced when -l is passed
    • Reduce useless fs operations by checking properly set symlinks

    Bug Fixes

    • Do not try to read non-existent basedir
    • Method Copy did not work properly when target is a symlink
    • Do not create missing staging/target directory during dry run

    Documentation

    • Add missing description and tests for DTItem::make_target
    • Strip redundant line

    Miscellaneous Tasks

    • Bump dt-core version for dt-cli
    • Update roadmap
    • Remove unit test instructions
    • Update roadmap
    • Update readme

    Refactor

    • Handle group name filtering before passing config to dt-core

    Styling

    • Remove "Syncing" in log message throughout syncing

    Testing

    • Add unit tests for priority controlling
    • Avoid boilerplate code in doc tests

    Build

    • Minimize released binary size
    Source code(tar.gz)
    Source code(zip)
    dt-cli(1.60 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.3.1(Nov 6, 2021)

    [0.3.1] - 2021-11-06

    Bug Fixes

    • Show error message about unreadable basedir

    Documentation

    • Complete API docs of dt-core

    Features

    • Manage item behaviours with trait DTItem
    • Only attempt to remove existing target/staging file when they are readonly
    • Warn about source that does not match anything

    Refactor

    • Provide error types from dt-core
    • Make target path via trait DTItem
    • Remove useless condition
    • Use ! to negate boolean
    • Resolve warnings generated by cargo clippy

    Styling

    • Resolve warnings generated by cargo-clippy
    • Quote paths in panic messages
    • Add trailing comma after last parameters of macros

    Testing

    • Cover cases introduced from 8ccada2
    • Also clean up dummy file when test fails

    Build

    • Add licenses to released assets
    Source code(tar.gz)
    Source code(zip)
    dt-cli(2.33 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.3.0(Oct 27, 2021)

    [0.3.0] - 2021-10-27

    Features

    • Use $XDG_CONFIG_HOME/dt/cli.toml as default config for dt-cli, fallback to $XDG_CONFIG_HOME/dt/config.toml
    • Pass -l|--local-name to specify name of group(s) to be processed E.g.: Command dt-cli -lSSH -lGPG -lNeovim will sync only groups with name that is either SSH, GPG, Neovim, and warn about unrecognized group names.

    Documentation

    • Prettify code example in docs
    • Update command line flags and options

    Miscellaneous Tasks

    • Use Rust version 2021
    • Fix typo in roadmap
    • Update readme

    Refactor

    • Infer default config path in dt-core::utils

    Styling

    • Log which config file is used in dt-cli
    • Better logging messages
    • Wrap comments with rustfmt

    Testing

    • Update globbing test to account for "dt-server"

    Build

    • Lock dependencies in continuous integration pipelines
    Source code(tar.gz)
    Source code(zip)
    dt-cli(2.66 MB)
    LICENSE-APACHE(11.09 KB)
    LICENSE-MIT(1.04 KB)
  • v0.2.1(Oct 17, 2021)

    [0.2.1] - 2021-10-17

    Bug Fixes

    • Ignore and warn about unexpected file types
    • dry_sync() had the same behaviours as sync()
    • Application crashes when default config path does not exist
    • Handle hostname_sep occurred in sources array
    • to_non_host_specific did not remove all host-specific suffixes

    Documentation

    • Add tip to host-specific syncing
    • Add hyperlink to repository in contributing guide
    • Add head image to home page
    • Deploy as a single page application
    • Fix size of head image
    • Fix typo in sidebar
    • Remove head image due to display error in latest vitepress
    • Add frontmatters to fix __VP_STATIC_START__
    • Add section "error handling"
    • Sync contributing guide with main project
    • Note about behaviours when type of an item is unexpected
    • Switch package manager to pnpm
    • Switch package manager to pnpm
    • Update command line usage example
    • Add more advantages of method "Symlink"
    • Organize command line options/flags into a table
    • Update license section in contributing guide
    • Update host-specific configs

    Features

    • Add -v to increase verbosity
    • Infer default config file location when no config is specified
    • Use -q|--quiet to decrease logging verbosity
    • Deny source items that contains hostname_sep

    Miscellaneous Tasks

    • Update roadmap
    • Add CODE_OF_CONDUCT.md
    • Add contributing guidelines
    • Add hyperlink to repository in contributing guide
    • Fix typo in README.md
    • Update roadmap
    • Update readme, contributing and roadmap
    • Update roadmap
    • Update example in README.md
    • Update license description
    • Add badge for crates.io to README.md
    • Fix license file name

    Refactor

    • Rename struct LocalSyncConfig to LocalGroup
    • Resolve warnings from cargo-clippy
    • Initialize default config with constants
    • Use more idiomatic Rust

    Styling

    • Format doc comments
    • Fix typo and add assertion failed info
    • Better logging behaviours with unimplemented file types
    • Make help messages for command line options/flags more coherent

    Testing

    • Organize config validation order
    • Deny hostname_sep in basedir
    • Deny empty name/basedir/target
    • Handle when basedir/target/staging exists/is file
    • Fix host-specific basedir handling
    • Deny readonly target and staging paths
    • Deny unreadable source items
    • Restore item permissions after testing
    Source code(tar.gz)
    Source code(zip)
    dt-cli(2.61 MB)
Tool for managing dotfiles directories; Heavily based on rcm.

Paro paro : to prepare, get ready / set, put / furnish, supply. Tool for managing dotfiles directories; Heavily based on rcm. TODO Rust Boilerplate CI

Rafael Delboni 7 Nov 20, 2022
No non-sense dotfiles linker

dotlink A simple program that can help you link all your dotfiles in place. Supports multiple presets, in order to avoid linking every file in every m

null 26 Apr 19, 2023
Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

Warp is a blazingly fast, Rust-based terminal that makes you and your team more productive at running, debugging, and deploying code and infrastructure.

Warp 10.4k Jan 4, 2023
Tools - The Rome Toolchain. A linter, compiler, bundler, and more for JavaScript, TypeScript, HTML, Markdown, and CSS.

Rome is currently being rewritten in Rust. Read more about it in our latest blog post. The documentation below is out of date and available for poster

Rome 22k Jan 3, 2023
A Faster(⚡) formatter, linter, bundler, and more for JavaScript, TypeScript, JSON, HTML, Markdown, and CSS Lapce Plugin

Lapce Plugin for Rome Lapce-rome is a Lapce plugin for rome, The Rome is faster ⚡ , A formatter, linter, compiler, bundler, and more for JavaScript, T

xiaoxin 7 Dec 16, 2022
(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.

Uplink Privacy First, Modular, P2P messaging client built atop Warp. Uplink is written in pure Rust with a UI in Dioxus (which is also written in Rust

Satellite 13 Jan 25, 2023
A more compact and intuitive ASCII table in your terminal: an alternative to "man 7 ascii" and "ascii"

asciit A more compact and intuitive ASCII table in your terminal: an alternative to man 7 ascii and ascii. Colored numbers and letters are much more e

Qichen Liu 刘启辰 5 Nov 16, 2023
⚙️ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.

This repository lists static analysis tools for all programming languages, build tools, config files and more. The official website, analysis-tools.de

Analysis Tools 10.7k Jan 2, 2023
An awesome CLI tool for effectively learning Rust and more. Project winner of the RustFi 2022 hackathon

rlrn An awesome CLI tool for effectively learning Rust and more Table of Contents About The Project Built With Getting Started Prerequisites Installat

Victor Kostyuk 6 Dec 25, 2022
rpsc is a *nix command line tool to quickly search for file systems items matching varied criterions like permissions, extended attributes and much more.

rpsc rpsc is a *nix command line tool to quickly search for file systems items matching varied criterions like permissions, extended attributes and mu

null 3 Dec 15, 2022
Use Thunk to build your Rust program that runs on old Windows platforms, support Windows XP and more!

Use Thunk to build your Rust program that runs on old platforms. Thunk uses VC-LTL5 and YY-Thunks to build programs that support old platforms. So, ho

null 6 May 21, 2023
Simpler and more powerful replacement for `find`

FindFile (FF) An simple, ergonomic, and powerful replacement for find. Note: this repo is under active development The syntax is (mostly) figured out,

Sam Westerman 4 Jun 20, 2023
Catch Tailwindcss Errors at Compile-Time Before They Catch You, without making any change to your code! Supports overriding, extending, custom classes, custom modifiers, Plugins and many more 🚀🔥🦀

twust Twust is a powerful static checker in rust for TailwindCSS class names at compile-time. Table of Contents Overview Installation Usage Statement

null 15 Nov 8, 2023
A drop-in replacement for std::time::Instant that is faster and more accurate.

Fastant A drop-in replacement for std::time::Instant that measures time with high performance and high accuracy powered by Time Stamp Counter (TSC). U

FastLabs 8 Sep 15, 2024
du + rust = dust. Like du but more intuitive.

Dust du + rust = dust. Like du but more intuitive. Why Because I want an easy way to see where my disk is being used. Demo Install Cargo cargo install

andy.boot 5.4k Jan 4, 2023
A more intuitive version of du in rust

A more intuitive version of du in rust

andy.boot 3k Sep 20, 2021
A more free Rust-Iterator.

CURSOR A more free Rust-Iterator. | Examples | Docs | Latest Note | [dependencies] cursor = "1.0.0" Example use cursor::*; fn example7() -> u8 {

Doha Lee 4 Jun 1, 2022
A rust binary that will flip one or more bits of a file (mostly for messing with images for fun).

file-bitflipper A rust binary that will flip one or more bits of a file (mostly for messing with images for fun). Example (bitflipped bentley) Usage $

null 1 Aug 31, 2022
A list of crates with snippets used by me to learn more about Rust.

my-rust-examples This is a list of crates used by me to learn Rust. How to execute You can use a dependency called cargo-play: cargo install cargo-pla

Ronald 0 Jan 3, 2022