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

PHAR: ComposerFilesParser.php searches for composer.(json|lock) inside the phar #1229

Open
gennadigennadigennadi opened this issue Jun 20, 2023 · 4 comments

Comments

@gennadigennadigennadi
Copy link
Member

$ ./deptrac.phar -c ../deptrac.yaml 

Warning: file_get_contents(composer.lock): Failed to open stream: No such file or directory in phar:///var/www/deptrac/tmp/deptrac.phar/src/Core/Layer/Collector/ComposerFilesParser.php on line 37
                                                                                                                        
 [ERROR] Analysis finished with an Exception.                                                                           
                                                                                                                        
         Could not parse file.                                                                                          
                                                                                                                        
         Could not parse composer files.                                                                                
                                                                                                                        
         Could not load composer.lock file                                                                              
@patrickkusebauch
Copy link
Collaborator

This kind of begs the question, what should be the base path that this collector should look at in case a relative path to the file is provided?

@gennadigennadigennadi
Copy link
Member Author

Did you @patrickkusebauch or @dbrumann discussed, what deptrac sees as its base path?

  • the users current dir?
  • the path of the deptrac executable?
  • the paht of the deptrac-config?

In the code I have seen Parameters for currentWorkingDirectory and projectDirectory and both get getcwd() assigned.

The documentations says:

* `%currentWorkingDirectory%` The path Deptrac runs in
* `%projectDirectory%` The path where the configuration is stored.

But what I see in the code is:

        if (false === ($currentWorkingDirectory = getcwd())) {
            throw CannotGetCurrentWorkingDirectoryException::cannotGetCWD();
        }

        ....
        $factory = new ServiceContainerBuilder($currentWorkingDirectory);
    public function build(): ContainerBuilder
    {
        $container = new ContainerBuilder();

        $container->setParameter('currentWorkingDirectory', $this->workingDirectory);

        self::registerCompilerPasses($container);
        self::loadServices($container, $this->cacheFile);

        $container->registerExtension(new DeptracExtension());

        $container->setParameter('projectDirectory', $this->workingDirectory);
        if (null !== $this->configFile) {
            self::loadConfiguration($container, $this->configFile);
        }

        $container->compile(true);

        return $container;
    }

I could work on this problem as soon as I understand the path situation. Btw it's also relevant for the #1078, I think.

@patrickkusebauch
Copy link
Collaborator

Nope, we didn't.

@gennadigennadigennadi
Copy link
Member Author

gennadigennadigennadi commented Jun 21, 2023

This kind of begs the question, what should be the base path that this collector should look at in case a relative path to the file is provided?

I would say, relative to the config-file.

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

No branches or pull requests

2 participants