##// END OF EJS Templates
errors: make exit codes class variables instead...
errors: make exit codes class variables instead Kyle pointed out to me that we can simply make the exit codes class variables. Python provides some magic for making them accessible as instance variables. This also makes it easier to let subclasses of existing errors override the exit codes by letting them simply define their own values as class variables. That means that there's no need to pass them into the superclass's constructor arguments, so the superclass doesn't need to expose the them as arguments. (Making a subclass set a different exit code for a subclass of `StorageError` was actually the goal with my recent series.) Differential Revision: https://phab.mercurial-scm.org/D10758

File last commit:

r46195:426294d0 default
r48085:73f52278 default
Show More
main.rs
39 lines | 1.4 KiB | application/rls-services+xml | RustLexer
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128 use pyembed::MainPythonInterpreter;
// Include an auto-generated file containing the default
// `pyembed::PythonConfig` derived by the PyOxidizer configuration file.
//
// If you do not want to use PyOxidizer to generate this file, simply
// remove this line and instantiate your own instance of
// `pyembed::PythonConfig`.
include!(env!("PYOXIDIZER_DEFAULT_PYTHON_CONFIG_RS"));
fn main() {
Martin von Zweigbergk
rust: move rustfmt.toml to repo root so it can be used by `hg fix`...
r46195 // The following code is in a block so the MainPythonInterpreter is
// destroyed in an orderly manner, before process exit.
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128 let code = {
Martin von Zweigbergk
rust: move rustfmt.toml to repo root so it can be used by `hg fix`...
r46195 // Load the default Python configuration as derived by the PyOxidizer
// config file used at build time.
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128 let config = default_python_config();
Martin von Zweigbergk
rust: move rustfmt.toml to repo root so it can be used by `hg fix`...
r46195 // Construct a new Python interpreter using that config, handling any
// errors from construction.
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128 match MainPythonInterpreter::new(config) {
Ok(mut interp) => {
Martin von Zweigbergk
rust: move rustfmt.toml to repo root so it can be used by `hg fix`...
r46195 // And run it using the default run configuration as specified
// by the configuration. If an uncaught Python
// exception is raised, handle it.
// This includes the special SystemExit, which is a request to
// terminate the process.
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128 interp.run_as_main()
}
Err(msg) => {
eprintln!("{}", msg);
1
}
}
};
// And exit the process according to code execution results.
std::process::exit(code);
}