1 // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
13 #![feature(iter_arith)]
14 #![feature(rustc_private)]
18 extern crate rustc_back
;
21 use std
::error
::Error
;
23 use std
::sync
::atomic
::{AtomicIsize, ATOMIC_ISIZE_INIT, Ordering}
;
24 use subcommand
::Subcommand
;
37 static EXIT_STATUS
: AtomicIsize
= ATOMIC_ISIZE_INIT
;
40 let mut term
= Term
::new();
41 let cmd
: Vec
<_
> = env
::args().collect();
46 match subcommand
::parse_name(&cmd
[1][..]) {
48 match subcmd
.parse_args(&cmd
[..cmd
.len()-1]) {
50 match subcmd
.execute(&mut term
) {
53 term
.err(&format
!("error: {}", err
));
58 println
!("{}", err
.description());
65 println
!("Unrecognized command '{}'.", cmd
[1]);
71 process
::exit(EXIT_STATUS
.load(Ordering
::SeqCst
) as i32);