WITH_COMPOSER constant: Make a difference between "downloaded with composer" and "autoloaded with composer"
ulk200 opened this issue · 3 comments
This is related to hoaproject/Ruler#86
I'm using the Hoa/Ruler library that i downloded with composer, but i'm using a third party autoloader. When hoa://Library/Ruler/Grammar.pp
gets loaded the \Hoa\Protocol\Node\Library
object calls its parent in the reach
function because the WITH_COMPOSER
contant is false
. effectivly looking into directories in a camelcase name format.
But since i used composer to download the files, Grammar.pp
is not found (my directories are not camelcase)
I solved this by forcing WITH_COMPOSER
to true
, this constant is based on wether the Composer\Autoload\ClassLoader
class exists or not.
It may be preferable to make a distinction between "downloaded with composer" (which sets a specific directory structure) from the "autoloaded_with_composer" (which imply the class present at runtime).
Then hoa://Library/Ruler/Grammar.pp
should rely on the "downloaded with composer" constant to call its parent or not.
Thank you.
Hello :-),
Is there a way to detect whether files/resources have been installed with Composer? I guess no 😢.
Maybe you could test if the containing directory is named "Hoa" vs "hoa" ? I'm no composer expert but maybe you can tell composer (in the install phase) to generate an additionnal file ? Or to trigger a hook in the sources it just downloded ?
The issue is when you are working with a FS that is can insensitive, like the default one on Mac OS X. is_dir('Hoa') === is_dir('hoa')
if one of them exists.