gitignores

Crates.iogitignores
lib.rsgitignores
version2.5.1
sourcesrc
created_at2021-10-07 15:33:23.487037
updated_at2024-10-18 13:46:09.727047
descriptionGitHub’s collection of gitignores, embedded, automatically updated
homepagehttps://watchexec.github.io/#gitignores
repositoryhttps://github.com/watchexec/gitignores
max_upload_size
id461833
size264,687
Félix Saparelli (passcod)

documentation

https://docs.rs/gitignores

README

Crate release version Crate license: CC0-1.0 MSRV: 1.37.0 (breaking) CI status

Gitignores

GitHub’s collection of gitignores, embedded, automatically updated.

Quick start

[dependencies]
gitignores = "1.0.0"
dbg!(gitignores::Root::Rust);

API

Each gitignore is available as a variant of one of three enums:

(
	gitignores::Root::Rust,
	gitignores::Global::Emacs,
	gitignores::Community::Racket,
)

The enums implement Display / .to_string(), which will return the contents of the gitignore (only when the std feature is enabled):

println!("{}", gitignores::Root::Rust);
gitignores::Global::Emacs.to_string();

The enums also implement a GitIgnore trait:

trait GitIgnore {
	/// The contents of the gitignore
	///
	/// Returns an empty string if the `no-contents` feature is enabled.
	fn contents(self) -> &'static str;

	/// The file name of the gitignore
	fn file_name(self) -> &'static str;

	/// The full path of the gitignore relative to repo root
	fn file_path(self) -> &'static str;

	/// The list of all included gitignores
	fn list() -> Vec<&'static str>;
}

Finally, there is a constant with the git reference of the commit the crate was built from:

dbg!(gitignores::GIT_COMMIT_REF);

Features

By default all gitignores are included, but you can customise this as granularily as you wish. To get started with selecting your custom set, first disable the default features:

[dependencies.gitignores]
default-features = false
features = []

Collections

Feature name Path in gitignore repo Path in crate
root /*.gitignore Root::
global /Global/**/*.gitignore Global::
community /community/**/*.gitignore Community::

Individual gitignores

Each gitignore can be enabled with the <collection>-<name> feature. Gitignores in subfolders have the folder name prepended to the name, like <collection>-<folder>-<name>. All are lowercased.

Other

  • no-contents: omit the embedded file contents, leaving only the metadata.
  • std: implement the Display trait on the enums.

Examples

All globals and only Rust root

[dependencies.gitignores]
default-features = false
features = ["global", "root-rust"]

Some specific gitignores

[dependencies.gitignores]
default-features = false
features = ["community-racket", "global-emacs", "root-commonlisp"]

Versioning

This crate respects semver!

It will bump the major version (breaking release) when:

  • Gitignores disappear from a collection
  • Gitignores move from a collection to another
  • Gitignores are renamed
  • The minimum required Rust version increases

It will bump the minor version when:

  • New gitignores are added to a collection

It will bump the patch version when:

  • Gitignore contents change

This repo checks for updates to the gitignore repo once a day, and automatically releases if changes are found.

License

The published crate (gitignores) is generated from the data, which is CC0-1.0, and so it itself is CC0-1.0 (Public Domain).

The generator code is Apache 2.0 / MIT.

Commit count: 50

cargo fmt