techendeavors / app-path
Wrapper for the linux `which` command to autoconfigure application paths in your Laravel web application
1.1.0
2018-07-12 19:39 UTC
Requires
- php: ^7.1
- illuminate/support: ^5.5
Requires (Dev)
- phpunit/phpunit: ^7.0
Suggests
- techendeavors/fileinfo: Gets file information like mimetype, hashes, size, creation and modification date, symlink chains, permissions and ownership, etc.
README
Very short description of the package
Wrapper for the linux which
command.
It comes in handy for people who want to automatically configure application paths in your Laravel web application.
We've taken care to ensure that it takes a lot of edge cases into account and prevents problems.
- uses
which
which is built into the shell so it's the one thing that we can assume. - uses native PHP functions to get file information when possible
- When the binary is located inside of a snap package, uses the shell to get the file information
- verifies that the user that owns the PHP process can actually execute the found applications
- If multiple runnable versions are found, sorts the results according to the latest modification date
- Deals with servers that have a different timezones for their filesystem and the PHP process
To Do
- [ ] Use config file to allow people to override how results should be sorted
- [ ] Use config file to add additional locations to the PATH
- [X] Create the data as an object from the start rather than converting everything to an object
- [ ] Verify
stat
exists before calling it - [X] If file is not a
snap
package then use native PHP functions to get file data - [x] Migrate to using the Techendeavors\FileInfo package once it is available
- [X] Break out some components into individual functions to clean everything up
- [X] Keep date as a Carbon object
- [ ] Make sure it works on multiple platforms, including Windows and MacOS
- [ ] Write Tests
- [ ] Make a helper
- [X] Allow it to be called statically
- [ ] Create a __string function that just outputs the path of the top choice
- [ ] Sort collection by modification date
Installation
You can install the package via composer:
composer require techendeavors/app-path
Usage
>>> AppPath::search('ffmpeg')
=> Illuminate\Support\Collection {#2843
all: [
[
"match" => "/usr/bin/ffmpeg",
"details" => Illuminate\Support\Collection {#2840
all: [
"query" => "/usr/bin/ffmpeg",
"tests" => [
"directory" => false,
"executable" => true,
"file" => true,
"link" => false,
],
"permissions" => [
"readable" => true,
"writable" => false,
"user" => "root",
"group" => "root",
"octal" => "0755",
"human" => "rwxr-xr-x",
],
"info" => [
"name" => "ffmpeg",
"path" => "/usr/bin",
"type" => "file",
"mime" => "application/x-sharedlib",
],
"size" => [
"bytes" => 272528,
"human" => "266.14KB",
],
"hashes" => null,
"events" => [
"modified" => Carbon\Carbon @1523273080 {#2849
date: 2018-04-09 11:24:40.0 UTC (+00:00),
},
"changed" => Carbon\Carbon @1526714923 {#2850
date: 2018-05-19 07:28:43.0 UTC (+00:00),
},
"accessed" => Carbon\Carbon @1531345222 {#2851
date: 2018-07-11 21:40:22.0 UTC (+00:00),
},
],
],
},
],
[
"match" => "/snap/bin/ffmpeg",
"details" => Illuminate\Support\Collection {#2846
all: [
"query" => "/snap/ffmpeg/current/usr/bin/ffmpeg",
"tests" => [
"directory" => false,
"executable" => true,
"file" => true,
"link" => false,
],
"permissions" => [
"readable" => true,
"writable" => false,
"user" => "root",
"group" => "root",
"octal" => "0755",
"human" => "rwxr-xr-x",
],
"info" => [
"name" => "ffmpeg",
"path" => "/snap/ffmpeg/current/usr/bin",
"type" => "file",
"mime" => "application/x-executable",
],
"size" => [
"bytes" => 259304,
"human" => "253.23KB",
],
"hashes" => null,
"events" => [
"modified" => Carbon\Carbon @1526035316 {#2853
date: 2018-05-11 10:41:56.0 UTC (+00:00),
},
"changed" => Carbon\Carbon @1526035316 {#2854
date: 2018-05-11 10:41:56.0 UTC (+00:00),
},
"accessed" => Carbon\Carbon @1526035316 {#2855
date: 2018-05-11 10:41:56.0 UTC (+00:00),
},
],
],
},
],
],
}
>>>
Testing
Not yet implemented
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please use the issue tracker
Credits
License
The MIT License (MIT). Please see License File for more information.