All Projects → dbrgn → Tealdeer

dbrgn / Tealdeer

Licence: other
A very fast implementation of tldr in Rust.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Tealdeer

Tldr
📚 Collaborative cheatsheets for console commands
Stars: ✭ 36,408 (+2962.07%)
Mutual labels:  hacktoberfest, tldr
Tldr
Golang command line client for tldr https://github.com/tldr-pages/tldr
Stars: ✭ 210 (-82.34%)
Mutual labels:  hacktoberfest, tldr
Tsuru Client
tsuru-client is a tsuru command line tool for application developers.
Stars: ✭ 72 (-93.94%)
Mutual labels:  hacktoberfest
Mockingcase
node package that converts a string to mOcKiNgCaSe
Stars: ✭ 74 (-93.78%)
Mutual labels:  hacktoberfest
Flatdict
Python module for interacting with nested dicts as a single level dict with delimited keys.
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest
Dotenv Java
🗝️ Dotenv is a no-dep, pure Java module that loads environment variables from a .env file
Stars: ✭ 72 (-93.94%)
Mutual labels:  hacktoberfest
Cstate
🔥 Open source static (serverless) status page. Uses hyperfast Go & Hugo, minimal HTML/CSS/JS, customizable, outstanding browser support (IE8+), preloaded CMS, read-only API, badges & more.
Stars: ✭ 1,186 (-0.25%)
Mutual labels:  hacktoberfest
Loadingshimmer
An easy way to add a shimmering effect to any view with just one line of code. It is useful as an unobtrusive loading indicator.
Stars: ✭ 1,180 (-0.76%)
Mutual labels:  hacktoberfest
Openjdk Tests
Home of test infrastructure for AdoptOpenJDK builds
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest
Choco Wiki
The content from this repository has been moved to https://github.com/chocolatey/docs. If you have found an issue, or want to submit a fix, then please open an issue, or a PR, on that repository.
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest
Scidart
Multiplatform scientific computing for Dart
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest
Puppet Gitlab
Puppet module to manage Gitlab (Omnibus)
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest
Emayili
An R package for sending email messages.
Stars: ✭ 72 (-93.94%)
Mutual labels:  hacktoberfest
Catalogscanner
Scans Animal Crossing: New Horizon catalog from video of user scrolling through.
Stars: ✭ 74 (-93.78%)
Mutual labels:  hacktoberfest
Pagination
Paginate record sets, not tied in directly to a database.
Stars: ✭ 72 (-93.94%)
Mutual labels:  hacktoberfest
Masc
A Web Malware Scanner
Stars: ✭ 74 (-93.78%)
Mutual labels:  hacktoberfest
Church Calendar Api
API providing Roman Catholic church calendar data for your apps
Stars: ✭ 72 (-93.94%)
Mutual labels:  hacktoberfest
Gr Nrsc5
A GNU Radio implementation of HD Radio (NRSC-5)
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest
Ssh known hosts
Development repository for Chef Cookbook ssh_known_hosts
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest
Remove W3schools
Chrome extension to remove W3Schools results in google searches.
Stars: ✭ 73 (-93.86%)
Mutual labels:  hacktoberfest

tealdeer

teal deer

Crate CI (Linux/macOS/Windows)
Crates.io GitHub CI

A very fast implementation of tldr in Rust: Simplified, example based and community-driven man pages.

Screenshot of tldr command

If you pronounce "tldr" in English, it sounds somewhat like "tealdeer". Hence the project name :)

In case you're in a hurry and just want to quickly try tealdeer, you can find static binaries on the GitHub releases page!

Docs (Installing, Usage, Configuration)

User documentation is available at https://dbrgn.github.io/tealdeer/!

The docs are generated using mdbook. They can be edited through the markdown files in the docs/src/ directory.

Goals

High level project goals:

  • [x] Download and cache pages
  • [x] Don't require a network connection for anything besides updating the cache
  • [x] Command line interface similar or equivalent to the NodeJS client
  • [x] Be fast

A tool like tldr should be as frictionless as possible to use. It should be easy to invoke (just tldr tar, not using another subcommand like tldr find tar) and it should show the output as fast as possible.

tealdeer reaches these goals. During a (highly non-scientific) test (see #38 for details), I tested the invocation speed of tldr <command> for a few of the existing clients:

Client Times (ms) Avg of 5 (ms)
Tealdeer 15/11/5/5/11 9.4 (100%)
C client 11/5/12/11/15 10.8 (115%)
Bash client 15/19/22/25/24 21.0 (223%)
Go client by k3mist 98/96/100/95/101 98.8 (1'051%)
Python client 152/148/151/158/140 149.8 (1'594%)
NodeJS client 169/171/170/170/170 170.0 (1'809%)

tealdeer was the winner here, although the C client and the Bash client are in the same speed class. Interpreted languages are clearly much slower to invoke, a delay of 170 milliseconds is definitely noticeable and increases friction for the user.

These are the clients I tried but failed to compile or run: Haskell client, Ruby client, Perl client, Go client by anoopengineer, PHP client.

Development

Creating a debug build with logging enabled:

$ cargo build --features logging

Release build without logging:

$ cargo build --release

To enable the log output, set the RUST_LOG env variable:

$ export RUST_LOG=tldr=debug

To run tests:

$ cargo test

To run lints:

$ rustup component add clippy
$ cargo clean && cargo clippy

MSRV (Minimally Supported Rust Version)

Tealdeer will not bump the MSRV requirement in patch versions, but it may increase it in minor versions. The reason is that many important libraries (e.g. the Tokio ecosystem, which is a dependency of reqwest, which is used for downloading the cache) do not follow a static MSRV, but instead follow a "stable + last n releases" approach. Trying to guarantee the same MSRV across all minor releases would be a futile attempt.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Thanks to @SShrike for coming up with the name "tealdeer"!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].