servo: Merge #11262 - Add `--version` flag (from campaul:add_version_flag); r=Manishearth

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy --faster` does not report any errors
- [X] These changes fix #11241 (github issue number if applicable).

Either:
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____

Not 100% sure of a good way to test this, so I'm submitting as is for feedback. Manually testing it appears to work fine.

Source-Repo: https://github.com/servo/servo
Source-Revision: 5478e605aef93cc384b709688cc68e3ed854a68b
This commit is contained in:
Cameron Paul 2016-06-29 09:05:35 -05:00
Родитель ac2f7f10cb
Коммит e4f50cdbe4
3 изменённых файлов: 30 добавлений и 0 удалений

Просмотреть файл

@ -40,6 +40,7 @@ use servo::Browser;
use servo::compositing::windowing::WindowEvent;
use servo::util::opts::{self, ArgumentParsingResult};
use servo::util::panicking::initiate_panic_hook;
use std::process;
use std::rc::Rc;
pub mod platform {
@ -102,6 +103,11 @@ fn main() {
return servo::run_content_process(token)
}
if opts::get().is_printing_version {
println!("Servo {}{}", env!("CARGO_PKG_VERSION"), env!("GIT_INFO"));
process::exit(0);
}
let window = app::create_window(None);
// Our wrapper around `Browser` that also implements some

Просмотреть файл

@ -202,6 +202,9 @@ pub struct Opts {
// don't skip any backtraces on panic
pub full_backtraces: bool,
/// Print the version and exit.
pub is_printing_version: bool,
}
fn print_usage(app: &str, opts: &Options) {
@ -507,6 +510,7 @@ pub fn default_opts() -> Opts {
render_api: DEFAULT_RENDER_API,
config_dir: None,
full_backtraces: false,
is_printing_version: false,
}
}
@ -564,6 +568,7 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
opts.optopt("G", "graphics", "Select graphics backend (gl or es2)", "gl");
opts.optopt("", "config-dir",
"config directory following xdg spec on linux platform", "");
opts.optflag("v", "version", "Display servo version information");
let opt_match = match opts.parse(args) {
@ -753,6 +758,8 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
_ => args_fail(&format!("error: graphics option must be gl or es2:")),
};
let is_printing_version = opt_match.opt_present("v") || opt_match.opt_present("version");
let opts = Opts {
is_running_problem_test: is_running_problem_test,
url: Some(url),
@ -807,6 +814,7 @@ pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
use_msaa: debug_options.use_msaa,
config_dir: opt_match.opt_str("config-dir"),
full_backtraces: debug_options.full_backtraces,
is_printing_version: is_printing_version,
};
set_defaults(opts);

Просмотреть файл

@ -374,6 +374,22 @@ class CommandBase(object):
env['RUSTFLAGS'] = env.get('RUSTFLAGS', "") + " -W unused-extern-crates"
git_info = []
if os.path.isdir('.git'):
git_sha = subprocess.check_output([
'git', 'rev-parse', '--short', 'HEAD'
]).strip()
git_is_dirty = bool(subprocess.check_output([
'git', 'status', '--porcelain'
]).strip())
git_info.append('')
git_info.append(git_sha)
if git_is_dirty:
git_info.append('dirty')
env['GIT_INFO'] = '-'.join(git_info)
return env
def servo_crate(self):