ParsesIniTrait.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace Aws\Token;
  3. trait ParsesIniTrait
  4. {
  5. /**
  6. * Gets profiles from specified $filename, or default ini files.
  7. */
  8. private static function loadProfiles($filename)
  9. {
  10. $profileData = \Aws\parse_ini_file($filename, true, INI_SCANNER_RAW);
  11. $configFilename = self::getHomeDir() . '/.aws/config';
  12. if (is_readable($configFilename)) {
  13. $configProfiles = \Aws\parse_ini_file($configFilename, true, INI_SCANNER_RAW);
  14. $profileData = array_merge($configProfiles, $profileData);
  15. }
  16. foreach ($profileData as $name => $profile) {
  17. // standardize config profile names
  18. $name = str_replace('profile ', '', $name);
  19. $profileData[$name] = $profile;
  20. }
  21. return $profileData;
  22. }
  23. /**
  24. * Gets the environment's HOME directory if available.
  25. *
  26. * @return null|string
  27. */
  28. private static function getHomeDir()
  29. {
  30. // On Linux/Unix-like systems, use the HOME environment variable
  31. if ($homeDir = getenv('HOME')) {
  32. return $homeDir;
  33. }
  34. // Get the HOMEDRIVE and HOMEPATH values for Windows hosts
  35. $homeDrive = getenv('HOMEDRIVE');
  36. $homePath = getenv('HOMEPATH');
  37. return ($homeDrive && $homePath) ? $homeDrive . $homePath : null;
  38. }
  39. }