private function storage($file = null)
    {
        $folder = static::STORAGE_DIR;
        $path   = __DIR__ . "/../../../$folder";

        if (!file_exists($path)) {
            mkdir($path);
            $this->initDefaultData(realpath($path));
        }

        if (!file_exists("$path/.gitignore")) {
            file_put_contents("$path/.gitignore", '*');
        }

        return $file ? "$path/$file" : "$path";
    }