22581b2f创建于 2025年12月16日历史提交
/*
 * -------------------------------------------------------------------------
 * This file is part of the MindStudio project.
 * Copyright (c) 2025 Huawei Technologies Co.,Ltd.
 *
 * MindStudio is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *
 *          http://license.coscl.org.cn/MulanPSL2
 *
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 * -------------------------------------------------------------------------
 */

use std::env;
use std::env::current_exe;
use std::process::Command;

pub fn main() {
    use std::process::exit;

    let args: Vec<String> = env::args().collect();
    let profiler_path = current_exe()
        .expect("Failed to get current exe path")
        .parent()
        .expect("Failed to get parent path of  current exe")
        .join("resources")
        .join("profiler")
        .join("start_script.py")
        .to_path_buf();
    let Some(path) = profiler_path.to_str() else {
        return;
    };
    let mut server_command = Command::new("python3");
    server_command.arg(path);
    for arg in args {
        server_command.arg(arg);
    }
    match server_command.output() {
        Ok(output) => {
            let formatted = String::from_utf8(output.stdout).unwrap();
            if !formatted.is_empty() {
                eprintln!("{}", formatted);
            }
            exit(output.status.code().unwrap_or(0))
        }
        Err(e) => {
            eprintln!("Failed to start server.Error:{e:?}")
        }
    };
}