Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Composer support #1

Closed
itsmemattchung opened this issue May 19, 2016 · 10 comments
Closed

Composer support #1

itsmemattchung opened this issue May 19, 2016 · 10 comments
Assignees

Comments

@itsmemattchung
Copy link
Contributor

Would it be possible to use something like composer to install the library. I'm not running a web server and won't be executing the installation script.

@merlinthemagic
Copy link
Owner

Absolutely. I am exploring the best way to solve dependencies and install the lib.

Thx Martin

@merlinthemagic
Copy link
Owner

The project depends on 2 programs "screen" and "python". Optionally "sudo" if sudo is available it can be configured to make getting root access easier than passing root credentials.

I have looked around and i cannot find any dependency management tool that includes the ability to add system level packages. Composer can list the available packages but not install .

Composer would be fine to ensure the correct PHP version and OS version, but it would not be able to i.e. trigger 'apt-get install screen' or edit '/etc/sudoers' if the user wanted sudo support.

Do you know of any managers that can handle the process end to end? Otherwise does it not make more sense to create a CLI installation script to remove the dependance on a webserver?

@merlinthemagic
Copy link
Owner

i updated MtsSetup.php so it can be run on the CLI without a browser installed.

@Alorel
Copy link

Alorel commented Jun 20, 2016

A definite +1 on supporting composer - yes, it does not offer a function to require specific system packages to be installed, but neither does reading the README.md.

The best way to check if the packages are installed I can think of is doing a

trigger_error('message', E_USER_ERROR);

either when the user attempts to perform an operation and receives an output implying that a required package is missing, or by executing a dummy file via shell at the top of your library's PHP files once and checking if the operation exited with code 0.

The 2nd approach would add extra overhead, but could be "cached", e.g. if the test passed, create an empty file in the library's directory and, the next time the library is included, simply check if the file exists instead.

@merlinthemagic
Copy link
Owner

Hi Alorel,
I will work on composer support, in the mean time did you see the segment of the Readme regarding installation? It was located at the very bottom, which in hind sight might have been a mistake. I moved it to the top.

@Alorel
Copy link

Alorel commented Jun 20, 2016

I did and it's all straightforward - the main aim of my post was to suggest some possible options for your first reply. :)

@merlinthemagic
Copy link
Owner

@itsmemattchung @Alorel
Added composer.json (used "https://github.com/Alorel/dropbox-v2-php/blob/master/composer.json" as template :) ).

However since Composer does not support check or installation of system packages a post install script is triggered. I am not confident in how I defined the autoloader setup, feedback is appreciated.

@Alorel
Copy link

Alorel commented Oct 15, 2016

Thanks for the update!

The spl_autoload_register code block could be moved to composer.json assuming your classes and namespaces follow the PSR4 specification (i.e. package name + class name = file path, case-sensitive). You could, therefore, have the following in your composer.json:

{
   "autoload": {
      "psr-4": {
        "MTS\\": "MTS"
      },
     "files": [
        "MTS/EnableMTS.php"
      ]
    }
}

EDIT: fixed the json

@merlinthemagic
Copy link
Owner

@Alorel the namespace is psr-4 compliant. But I am not sure maintaining the constants in the file and allowing composer to handle auto loading of classes is the most flexible option. Anyone installing the library outside of Composer would need to supply an autoloader for MTS to function.

But i appreciate the quick feedback :)

@Alorel
Copy link

Alorel commented Oct 15, 2016

In that case keeping the autoloader within EnableMTS.php is most likely the best solution. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants