view rust/hgcli/src/main.rs @ 46315:2ef575c62f10

test-regression: backing out D9640 (63c923fd7fa8) Since D9640 was pushed, we have seen failure on at least: - test-commit-interactive.t - test-i18n.t - test-log.t The author that change requested it to be removed until he can investigate. For reference: https://phab.mercurial-scm.org/D9640 Backed out changeset 63c923fd7fa8 Differential Revision: https://phab.mercurial-scm.org/D9803
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 17 Jan 2021 02:48:15 +0100
parents 426294d06ddc
children
line wrap: on
line source

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() {
    // The following code is in a block so the MainPythonInterpreter is
    // destroyed in an orderly manner, before process exit.
    let code = {
        // Load the default Python configuration as derived by the PyOxidizer
        // config file used at build time.
        let config = default_python_config();

        // Construct a new Python interpreter using that config, handling any
        // errors from construction.
        match MainPythonInterpreter::new(config) {
            Ok(mut interp) => {
                // 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.
                interp.run_as_main()
            }
            Err(msg) => {
                eprintln!("{}", msg);
                1
            }
        }
    };

    // And exit the process according to code execution results.
    std::process::exit(code);
}