marshmallow/laravel-folder-cleaner

Clean folders using a command. This can be helpful if you have temporary files in your projects that need to be cleaned for saving storage.


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Clean folders using a command. This can be helpful if you have temporary files in your projects that need to be cleaned for saving storage.

Installation

You can install the package via composer:

composer require marshmallow/laravel-folder-cleaner

You can install the package by running the command below. This installation command will publish a config file where you can let the package know what you wish to delete.

php artisan folder-cleaner:install

The following config file will now be published.

return [

    /**
     * You can specify the folders that should be cleaned in
     * this config array. We will search for these folders
     * in the root directory of you project.
     */
    'folders' => [
        // '/storage/logs',
        // '/storage' => [
        //     'older_than' => '3 months',
        //     'except' => [
        //         'important.log',
        //     ],
        // ],
        // '/storage/app' => [
        //     'older_than' => '1 day',
        //     'match' => '/^export_\d+\.xlsx$/',
        // ],
    ],
];

Usage

php artisan folder-cleaner:clean {--dry-run} {--quiet}

Options

In the config file you can specify a couple of settings to let the package know what should be cleaned.

If you just provide a string for a folder, all the files in this folder will be deleted when the command is run. Please not, this doesn't work recursively, folders will not be deleted.

return [
    'folders' => [
        // '/storage/logs',
    ]
];

You can also specify some settings as an array after the path of the folder. The example below will delete all files that are older then 3 months, match a patern of export_{number}.xlsx except for export_1.xlsx.

return [
    'folders' => [
        '/storage' => [
            'older_than' => '3 months',
            'match' => '/^export_\d+\.xlsx$/',
            'except' => [
                'export_1.xlsx',
            ],
        ],
    ]
];

If you have a directory which holds temporary directories that can deleted with all its content, you can use the delete_folders options. In the example below, all files in the download directory AND all sub directories in the download directory will be deleted once they are 7 days old.

return [
    'folders' => [
         '/storage/app/public/download' => [
            'delete_folders' => true,
            'older_than' => '7 days',
        ],
    ]
];

If you need more options, please let us know. This was enough for our use case at the moment of creating this package.

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.