diff --git a/src/Composer/Factory.php b/src/Composer/Factory.php index 4f7bfefd8..cc20cd575 100644 --- a/src/Composer/Factory.php +++ b/src/Composer/Factory.php @@ -50,10 +50,11 @@ class Factory } $home = strtr(getenv('APPDATA'), '\\', '/') . '/Composer'; } else { - if (!getenv('HOME')) { - throw new \RuntimeException('The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly'); + $xdgConfig = getenv('XDG_CONFIG_HOME'); + if (!$xdgConfig) { + $xdgConfig = rtrim(getenv('HOME'), '/') . '/.config'; } - $home = rtrim(getenv('HOME'), '/') . '/.composer'; + $home = $xdgConfig . '/composer'; } } @@ -77,7 +78,11 @@ class Factory } $cacheDir = strtr($cacheDir, '\\', '/'); } else { - $cacheDir = $home.'/cache'; + $xdgCache = getenv('XDG_CACHE_HOME'); + if (!$xdgCache) { + $xdgCache = rtrim(getenv('HOME'), '/') . '/.cache'; + } + $cacheDir = $xdgCache . '/composer'; } }