1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
//! A [`cargo` subcommand](https://github.com/rust-lang/cargo/wiki/Third-party-cargo-subcommands) for checking and applying updates to installed executables //! //! # Library doc //! //! This library is used by `cargo-update` itself for all its function and is therefore contains all necessary functions. //! //! ## Data flow //! //! ```text //! Options::parse() //! |> installed_main_repo_packages() //! |> intersect_packages() //! |> MainRepoPackage::pull_version() //! ``` //! //! # Executable manpage //! //! ## SYNOPSIS //! //! [`cargo install-update`](https://github.com/nabijaczleweli/cargo-update) [OPTIONS] [PACKAGE...] //! //! ## DESCRIPTION //! //! Cargo subcommand for checking and applying updates to installed executables. //! //! This was mostly built out of a frustration with periodically checking for //! updates for my cargo-installed executables, which was long and boring. //! //! Only updates packages from the main repository. //! //! Exit values and possible errors: //! //! ```text //! -1 - cargo install process was terminated by a signal (Linux-only) //! 1 - option parsing error //! X - bubbled-up cargo install exit value //! ``` //! //! ## OPTIONS //! //! -a --all //! //! ```text //! Update all currently installed executables. //! //! Exclusive with list of packages. Required if list of packages not given. //! ``` //! //! [PACKAGE...] //! //! ```text //! List of packages to update. //! //! Exclusive with --all. Required if --all not given. //! ``` //! //! -l --list //! //! ```text //! Don't update any packages, just list them. //! ``` //! //! -c --cargo-dir <CARGO_DIR> //! //! ```text //! Set the directory containing cargo metadata. //! //! Required. Default: "$CARGO_HOME", then $HOME/.cargo", otherwise manual. //! ``` //! //! ## EXAMPLES //! //! `cargo install-update -a` //! //! ```text //! Update all installed packages. //! //! Example output: //! Package Installed Latest Needs update //! cargo-count v0.2.2 v0.2.2 No //! cargo-graph v0.3.0 v0.3.0 No //! cargo-outdated v0.2.0 v0.2.0 No //! checksums v0.5.0 v0.5.2 Yes //! identicon v0.1.1 v0.1.1 No //! racer v1.2.10 v1.2.10 No //! rustfmt v0.6.2 v0.6.2 No //! treesize v0.2.0 v0.2.1 Yes //! //! Updating checksums //! Updating registry `https://github.com/rust-lang/crates.io-index` //! Downloading checksums v0.5.2 //! [...] //! Compiling checksums v0.5.2 //! Finished release [optimized] target(s) in 95.2 secs //! Replacing D:\Users\nabijaczleweli\.cargo\bin\checksums.exe //! //! Updating treesize //! Updating registry `https://github.com/rust-lang/crates.io-index` //! Downloading treesize v0.2.1 //! [...] //! Compiling treesize v0.2.1 //! Finished release [optimized] target(s) in 76.77 secs //! Replacing D:\Users\nabijaczleweli\.cargo\bin\treesize.exe //! ``` //! //! `cargo install-update` *racer treesize cargo-cln* //! //! ```text //! Only consider racer, treesize and cargo-cln for updates. //! Since cargo-cln is not installed, it'll be ignored. //! //! Example output: //! Package Installed Latest Needs update //! racer v1.2.10 v1.2.10 No //! treesize v0.2.0 v0.2.1 Yes //! //! Updating treesize //! Updating registry `https://github.com/rust-lang/crates.io-index` //! Downloading treesize v0.2.1 //! [...] //! Compiling treesize v0.2.1 //! Finished release [optimized] target(s) in 76.77 secs //! Replacing D:\Users\nabijaczleweli\.cargo\bin\treesize.exe //! ``` //! //! `cargo install-update -al` //! //! ```text //! List all installed packages, don't update any. //! //! Example output: //! Package Installed Latest Needs update //! cargo-count v0.2.2 v0.2.2 No //! cargo-graph v0.3.0 v0.3.0 No //! cargo-outdated v0.2.0 v0.2.0 No //! checksums v0.5.0 v0.5.2 Yes //! identicon v0.1.1 v0.1.1 No //! racer v1.2.10 v1.2.10 No //! rustfmt v0.6.2 v0.6.2 No //! treesize v0.2.0 v0.2.1 Yes //! ``` #[macro_use] extern crate lazy_static; extern crate array_tool; extern crate semver; extern crate hyper; extern crate regex; #[macro_use] extern crate clap; extern crate toml; extern crate json; mod options; pub mod ops; pub use options::Options;