aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-06-29 09:05:35 -0500
committerGitHub <noreply@github.com>2016-06-29 09:05:35 -0500
commit5478e605aef93cc384b709688cc68e3ed854a68b (patch)
treecae570fd14014cb9fbde7e383125a7b09a7ffc4c
parent19cb3e99680427a7ae30dbbc11f550e35ecc4576 (diff)
parentd76ffa8fd8b9311ef13eb477c55fc0b7dce753f5 (diff)
downloadservo-5478e605aef93cc384b709688cc68e3ed854a68b.tar.gz
servo-5478e605aef93cc384b709688cc68e3ed854a68b.zip
Auto merge of #11262 - campaul:add_version_flag, r=Manishearth
Add `--version` flag - [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. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11262) <!-- Reviewable:end -->
-rw-r--r--components/servo/main.rs6
-rw-r--r--components/util/opts.rs8
-rw-r--r--python/servo/command_base.py16
3 files changed, 30 insertions, 0 deletions
diff --git a/components/servo/main.rs b/components/servo/main.rs
index bf4c0b14f4c..ca0eec17955 100644
--- a/components/servo/main.rs
+++ b/components/servo/main.rs
@@ -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
diff --git a/components/util/opts.rs b/components/util/opts.rs
index 711782ab3ea..1fe76f96d26 100644
--- a/components/util/opts.rs
+++ b/components/util/opts.rs
@@ -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);
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index e90245f43ec..990bc9a586c 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -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):