# Auto-Generated by cargo-bitbake 0.3.13
#
inherit cargo

# If this is git based prefer versioned ones if they exist
# DEFAULT_PREFERENCE = "-1"

# how to get rustfmt-nightly could be as easy as but default to a git checkout:
# SRC_URI += "crate://crates.io/rustfmt-nightly/1.4.2"
SRC_URI += "git://github.com/rust-lang/rustfmt.git;protocol=https;nobranch=1"
SRCREV = "aeb3496f31a0dfa90fc511520d2023634e885260"
S = "${WORKDIR}/git"
CARGO_SRC_DIR = ""
EXCLUDE_FROM_WORLD = "1"

# please note if you have entries that do not begin with crate://
# you must change them to how that package can be fetched
SRC_URI += " \
    crate://crates.io/aho-corasick/0.7.4 \
    crate://crates.io/annotate-snippets/0.6.1 \
    crate://crates.io/ansi_term/0.11.0 \
    crate://crates.io/argon2rs/0.2.5 \
    crate://crates.io/arrayvec/0.4.11 \
    crate://crates.io/atty/0.2.13 \
    crate://crates.io/autocfg/0.1.5 \
    crate://crates.io/backtrace-sys/0.1.31 \
    crate://crates.io/backtrace/0.3.33 \
    crate://crates.io/bitflags/1.1.0 \
    crate://crates.io/blake2-rfc/0.2.18 \
    crate://crates.io/bstr/0.2.6 \
    crate://crates.io/bytecount/0.5.1 \
    crate://crates.io/byteorder/1.3.2 \
    crate://crates.io/c2-chacha/0.2.2 \
    crate://crates.io/cargo_metadata/0.8.1 \
    crate://crates.io/cc/1.0.38 \
    crate://crates.io/cfg-if/0.1.9 \
    crate://crates.io/clap/2.33.0 \
    crate://crates.io/cloudabi/0.0.3 \
    crate://crates.io/constant_time_eq/0.1.3 \
    crate://crates.io/crossbeam-channel/0.3.9 \
    crate://crates.io/crossbeam-deque/0.2.0 \
    crate://crates.io/crossbeam-epoch/0.3.1 \
    crate://crates.io/crossbeam-utils/0.2.2 \
    crate://crates.io/crossbeam-utils/0.6.6 \
    crate://crates.io/derive-new/0.5.7 \
    crate://crates.io/diff/0.1.11 \
    crate://crates.io/dirs-sys/0.3.3 \
    crate://crates.io/dirs/2.0.1 \
    crate://crates.io/either/1.5.2 \
    crate://crates.io/ena/0.13.0 \
    crate://crates.io/env_logger/0.6.2 \
    crate://crates.io/failure/0.1.5 \
    crate://crates.io/failure_derive/0.1.5 \
    crate://crates.io/fnv/1.0.6 \
    crate://crates.io/fuchsia-cprng/0.1.1 \
    crate://crates.io/getopts/0.2.19 \
    crate://crates.io/getrandom/0.1.6 \
    crate://crates.io/globset/0.4.4 \
    crate://crates.io/heck/0.3.1 \
    crate://crates.io/humantime/1.2.0 \
    crate://crates.io/ignore/0.4.8 \
    crate://crates.io/indexmap/1.0.2 \
    crate://crates.io/itertools/0.8.0 \
    crate://crates.io/itoa/0.4.4 \
    crate://crates.io/jobserver/0.1.16 \
    crate://crates.io/lazy_static/1.3.0 \
    crate://crates.io/libc/0.2.60 \
    crate://crates.io/lock_api/0.1.5 \
    crate://crates.io/log/0.4.7 \
    crate://crates.io/memchr/2.2.1 \
    crate://crates.io/memoffset/0.2.1 \
    crate://crates.io/nodrop/0.1.13 \
    crate://crates.io/num_cpus/1.10.1 \
    crate://crates.io/owning_ref/0.4.0 \
    crate://crates.io/packed_simd/0.3.3 \
    crate://crates.io/parking_lot/0.7.1 \
    crate://crates.io/parking_lot_core/0.4.0 \
    crate://crates.io/ppv-lite86/0.2.5 \
    crate://crates.io/proc-macro2/0.4.30 \
    crate://crates.io/quick-error/1.2.2 \
    crate://crates.io/quote/0.6.13 \
    crate://crates.io/rand/0.6.5 \
    crate://crates.io/rand/0.7.0 \
    crate://crates.io/rand_chacha/0.1.1 \
    crate://crates.io/rand_chacha/0.2.1 \
    crate://crates.io/rand_core/0.3.1 \
    crate://crates.io/rand_core/0.4.0 \
    crate://crates.io/rand_core/0.5.0 \
    crate://crates.io/rand_hc/0.1.0 \
    crate://crates.io/rand_hc/0.2.0 \
    crate://crates.io/rand_isaac/0.1.1 \
    crate://crates.io/rand_jitter/0.1.4 \
    crate://crates.io/rand_os/0.1.3 \
    crate://crates.io/rand_pcg/0.1.2 \
    crate://crates.io/rand_xorshift/0.1.1 \
    crate://crates.io/rdrand/0.4.0 \
    crate://crates.io/redox_syscall/0.1.56 \
    crate://crates.io/redox_users/0.3.0 \
    crate://crates.io/regex-syntax/0.6.10 \
    crate://crates.io/regex/1.2.0 \
    crate://crates.io/rustc-ap-arena/542.0.0 \
    crate://crates.io/rustc-ap-graphviz/542.0.0 \
    crate://crates.io/rustc-ap-rustc_data_structures/542.0.0 \
    crate://crates.io/rustc-ap-rustc_errors/542.0.0 \
    crate://crates.io/rustc-ap-rustc_lexer/542.0.0 \
    crate://crates.io/rustc-ap-rustc_macros/542.0.0 \
    crate://crates.io/rustc-ap-rustc_target/542.0.0 \
    crate://crates.io/rustc-ap-serialize/542.0.0 \
    crate://crates.io/rustc-ap-syntax/542.0.0 \
    crate://crates.io/rustc-ap-syntax_pos/542.0.0 \
    crate://crates.io/rustc-demangle/0.1.15 \
    crate://crates.io/rustc-hash/1.0.1 \
    crate://crates.io/rustc-rayon-core/0.2.0 \
    crate://crates.io/rustc-rayon/0.2.0 \
    crate://crates.io/rustc-workspace-hack/1.0.0 \
    crate://crates.io/rustc_version/0.2.3 \
    crate://crates.io/ryu/1.0.0 \
    crate://crates.io/same-file/1.0.5 \
    crate://crates.io/scoped-tls/1.0.0 \
    crate://crates.io/scoped_threadpool/0.1.9 \
    crate://crates.io/scopeguard/0.3.3 \
    crate://crates.io/semver-parser/0.7.0 \
    crate://crates.io/semver/0.9.0 \
    crate://crates.io/serde/1.0.97 \
    crate://crates.io/serde_derive/1.0.97 \
    crate://crates.io/serde_json/1.0.40 \
    crate://crates.io/smallvec/0.6.10 \
    crate://crates.io/spin/0.5.0 \
    crate://crates.io/stable_deref_trait/1.1.1 \
    crate://crates.io/strsim/0.8.0 \
    crate://crates.io/structopt-derive/0.2.18 \
    crate://crates.io/structopt/0.2.18 \
    crate://crates.io/syn/0.15.42 \
    crate://crates.io/synstructure/0.10.2 \
    crate://crates.io/term/0.6.0 \
    crate://crates.io/termcolor/1.0.5 \
    crate://crates.io/textwrap/0.11.0 \
    crate://crates.io/thread_local/0.3.6 \
    crate://crates.io/toml/0.5.1 \
    crate://crates.io/ucd-util/0.1.5 \
    crate://crates.io/unicode-segmentation/1.3.0 \
    crate://crates.io/unicode-width/0.1.5 \
    crate://crates.io/unicode-xid/0.1.0 \
    crate://crates.io/unicode_categories/0.1.1 \
    crate://crates.io/utf8-ranges/1.0.3 \
    crate://crates.io/vec_map/0.8.1 \
    crate://crates.io/walkdir/2.2.9 \
    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
    crate://crates.io/winapi-util/0.1.2 \
    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
    crate://crates.io/winapi/0.3.7 \
    crate://crates.io/wincolor/1.0.1 \
"



# FIXME: update generateme with the real MD5 of the license file
LIC_FILES_CHKSUM = " \
    file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
    file://LICENSE-MIT;md5=0b29d505d9225d1f0815cbdcf602b901 \
"

SUMMARY = "Tool to find and fix Rust formatting issues"
HOMEPAGE = "https://github.com/rust-lang/rustfmt"
LICENSE = "Apache-2.0 | MIT"

# includes this file if it exists but does not fail
# this is useful for anything you may want to override from
# what cargo-bitbake generates.
include rustfmt-nightly-${PV}.inc
include rustfmt-nightly.inc
