dargo 0.0.5

Some useful third-party tools for Cargo
# Dargo

[![release](https://img.shields.io/crates/v/dargo.svg)](https://crates.io/crates/dargo)
[![dependency status](https://deps.rs/repo/github/dcjanus/dargo/status.svg)](https://deps.rs/repo/github/dcjanus/dargo)
[![LOC](https://tokei.rs/b1/github/dcjanus/dargo)](https://github.com/dcjanus/dargo)

Some useful third-party tools based [Cargo](https://github.com/rust-lang/cargo).

# Install

Latest released: `cargo install -f dargo`

Latest branched: `cargo install -f dargo --git https://github.com/DCjanus/dargo.git`

PS: Recommend to use [cargo-update](https://github.com/nabijaczleweli/cargo-update) to keep all tools up to date.

# Commands

## dargo upgrade

Upgrade version requirements in `Cargo.toml` to latest, more usage: `dargo upgrade -h`.

Version requirements like `1.2.3`, `0.1.2`, always updated to the latest version. 

Version requirements like `^1.2.3`, `~2.0.1`, `=0.3.0`, `1.2`, `1.*`, `>0.1.0` would not be upgraded (unless with `--force`). If you want to exclude some dependencies from `dargo upgrade`, those kinds of version requirements could be used.

## dargo add

Add dependencies to your `Cargo.toml`, more usage: `dargo add -h`.

Without version specified like `dargo add failure libc`, add latest version dependencies to `Cargo.toml`.

With version requirement like `dargo add futures-preview@>=0.3.0-alpha.12 libc@^1.0.1`, add dependencies with specified version requirement.

## dargo rm

Remove dependencies from your `Cargo.toml`, more usage: `dargo rm -h`.

# Tips

+ `dargo upgrade` and `dargo add` would not update local registry index, unless run with flag `--update`.

# Position

There are some useful CLI tools for Rust developers, for example, [cargo-edit](https://github.com/killercup/cargo-edit), [cargo-outdated](https://github.com/kbknapp/cargo-outdated).

They are fabulous, but for some reason, some designs are not suitable for my needs, for example: for compile speed, `cargo-edit` doesn't rely on [cargo](https://crates.io/crates/cargo), and query latest version of crate via HTTP API, which is so slow in China. So I have to write `dargo` for myself and query latest version from local registry index.

# TODO 

## dargo outdated

Check dependencies in Cargo.lock

## remove cargo dependency

When I'm familiar with `cargo`, I'd like to parse everything by hand rather than `cargo`, it would be helpful to reduce compilation time.([cargo_metadata](https://crates.io/crates/cargo_metadata/)?)