Coder Social home page Coder Social logo

Composer support about mts HOT 10 CLOSED

merlinthemagic avatar merlinthemagic commented on August 17, 2024 1
Composer support

from mts.

Comments (10)

merlinthemagic avatar merlinthemagic commented on August 17, 2024 1

@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.

from mts.

merlinthemagic avatar merlinthemagic commented on August 17, 2024

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

Thx Martin

from mts.

merlinthemagic avatar merlinthemagic commented on August 17, 2024

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?

from mts.

merlinthemagic avatar merlinthemagic commented on August 17, 2024

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

from mts.

Alorel avatar Alorel commented on August 17, 2024

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.

from mts.

merlinthemagic avatar merlinthemagic commented on August 17, 2024

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.

from mts.

Alorel avatar Alorel commented on August 17, 2024

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

from mts.

Alorel avatar Alorel commented on August 17, 2024

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

from mts.

merlinthemagic avatar merlinthemagic commented on August 17, 2024

@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 :)

from mts.

Alorel avatar Alorel commented on August 17, 2024

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

from mts.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.