aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/util/ini_helper.rs
blob: e09b94f2c85090bb278cf89c89f9d6c34f48ae35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! ref: composer/src/Composer/Util/IniHelper.php

use shirabe_external_packages::composer::xdebug_handler::xdebug_handler::XdebugHandler;

pub struct IniHelper;

impl IniHelper {
    /// Returns an array of php.ini locations with at least one entry.
    pub fn get_all() -> Vec<String> {
        XdebugHandler::get_all_ini_files()
    }

    /// Describes the location of the loaded php.ini file(s).
    pub fn get_message() -> String {
        let mut paths = Self::get_all();

        if paths.first().map_or(false, |s| s.is_empty()) {
            paths.remove(0);
        }

        let ini = if paths.is_empty() {
            String::new()
        } else {
            paths.remove(0)
        };

        if ini.is_empty() {
            return "A php.ini file does not exist. You will have to create one.".to_string();
        }

        if !paths.is_empty() {
            return "Your command-line PHP is using multiple ini files. Run `php --ini` to show them.".to_string();
        }

        format!("The php.ini used by your command-line PHP is: {}", ini)
    }
}