summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/Token/ParsesIniTrait.php
blob: b96a6d97bc88c93b61d05a69a4c7796e5c7cc75e (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
38
39
40
41
42
43
44
<?php
namespace Aws\Token;

trait ParsesIniTrait
{
    /**
     * Gets profiles from specified $filename, or default ini files.
     */
    private static function loadProfiles($filename)
    {
        $profileData = \Aws\parse_ini_file($filename, true, INI_SCANNER_RAW);
        $configFilename = self::getHomeDir() . '/.aws/config';
        if (is_readable($configFilename)) {
            $configProfiles = \Aws\parse_ini_file($configFilename, true, INI_SCANNER_RAW);
            $profileData = array_merge($configProfiles, $profileData);
        }
        foreach ($profileData as $name => $profile) {
            // standardize config profile names
            $name = str_replace('profile ', '', $name);
            $profileData[$name] = $profile;
        }

        return $profileData;
    }

    /**
     * Gets the environment's HOME directory if available.
     *
     * @return null|string
     */
    private static function getHomeDir()
    {
        // On Linux/Unix-like systems, use the HOME environment variable
        if ($homeDir = getenv('HOME')) {
            return $homeDir;
        }

        // Get the HOMEDRIVE and HOMEPATH values for Windows hosts
        $homeDrive = getenv('HOMEDRIVE');
        $homePath = getenv('HOMEPATH');

        return ($homeDrive && $homePath) ? $homeDrive . $homePath : null;
    }
}