     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

    //! Parity bitcoin client.

    #[macro_use]
    extern crate clap;
    #[macro_use]
    extern crate log;
    extern crate env_logger;
    extern crate app_dirs;
    extern crate libc;

    extern crate storage;
    extern crate db;
    extern crate chain;
    extern crate keys;
    extern crate logs;
    extern crate script;
    extern crate message;
    extern crate network;
    extern crate p2p;
    extern crate sync;
    extern crate import;
    extern crate rpc as ethcore_rpc;
    extern crate primitives;
    extern crate verification;

    mod commands;
    mod config;
    mod seednodes;
    mod util;
    mod rpc;
    mod rpc_apis;

    use app_dirs::AppInfo;

    pub const APP_INFO: AppInfo = AppInfo { name: "pbtc", author: "Parity" };
    pub const PROTOCOL_VERSION: u32 = 70_014;
    pub const PROTOCOL_MINIMUM: u32 = 70_001;
    pub const USER_AGENT: &'static str = "pbtc";
    pub const REGTEST_USER_AGENT: &'static str = "/Satoshi:0.12.1/";
    pub const LOG_INFO: &'static str = "sync=info";

    fn main() {
    	// Always print backtrace on panic.
    	::std::env::set_var("RUST_BACKTRACE", "1");

    	if let Err(err) = run() {
    		println!("{}", err);
    	}
    }

    fn run() -> Result<(), String> {
    	let yaml = load_yaml!("cli.yml");
    	let matches = clap::App::from_yaml(yaml).get_matches();
    	let cfg = try!(config::parse(&matches));

    	if !cfg.quiet {
    		if cfg!(windows) {
    			logs::init(LOG_INFO, logs::DateLogFormatter);
    		} else {
    			logs::init(LOG_INFO, logs::DateAndColorLogFormatter);
    		}
    	} else {
    		env_logger::init();
    	}

    	match matches.subcommand() {
    		("import", Some(import_matches)) => commands::import(cfg, import_matches),
    		("rollback", Some(rollback_matches)) => commands::rollback(cfg, rollback_matches),
    		_ => commands::start(cfg),
    	}
    }

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)