* Get files to be included by default at the start of each shell session.
*
* @return string[]
*/
publicfunctiongetDefaultIncludes():array
{
return$this->defaultIncludes?:[];
}
/**
* Set the shell's config directory location.
*
* @param string $dir
*/
publicfunctionsetConfigDir(string$dir)
{
$this->configDir=(string)$dir;
$this->configPaths->overrideDirs([
'configDir'=>$this->configDir,
'dataDir'=>$this->dataDir,
'runtimeDir'=>$this->runtimeDir,
]);
}
/**
* Get the current configuration directory, if any is explicitly set.
*
* @return string|null
*/
publicfunctiongetConfigDir()
{
return$this->configDir;
}
/**
* Set the shell's data directory location.
*
* @param string $dir
*/
publicfunctionsetDataDir(string$dir)
{
$this->dataDir=(string)$dir;
$this->configPaths->overrideDirs([
'configDir'=>$this->configDir,
'dataDir'=>$this->dataDir,
'runtimeDir'=>$this->runtimeDir,
]);
}
/**
* Get the current data directory, if any is explicitly set.
*
* @return string|null
*/
publicfunctiongetDataDir()
{
return$this->dataDir;
}
/**
* Set the shell's temporary directory location.
*
* @param string $dir
*/
publicfunctionsetRuntimeDir(string$dir)
{
$this->runtimeDir=(string)$dir;
$this->configPaths->overrideDirs([
'configDir'=>$this->configDir,
'dataDir'=>$this->dataDir,
'runtimeDir'=>$this->runtimeDir,
]);
}
/**
* Get the shell's temporary directory location.
*
* Defaults to `/psysh` inside the system's temp dir unless explicitly
* overridden.
*
* @throws RuntimeException if no temporary directory is set and it is not possible to create one
*
* @param bool $create False to suppress directory creation if it does not exist
*/
publicfunctiongetRuntimeDir($create=true):string
{
$runtimeDir=$this->configPaths->runtimeDir();
if($create){
if(!@ConfigPaths::ensureDir($runtimeDir)){
thrownewRuntimeException(\sprintf('Unable to create PsySH runtime directory. Make sure PHP is able to write to %s in order to continue.',\dirname($runtimeDir)));