1.0.0 Alpha Release #59
1 changed files with 82 additions and 1 deletions
|
@ -5,11 +5,15 @@
|
||||||
namespace ncc\Managers;
|
namespace ncc\Managers;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use ncc\Abstracts\BuiltinRemoteSourceType;
|
||||||
use ncc\Abstracts\CompilerExtensions;
|
use ncc\Abstracts\CompilerExtensions;
|
||||||
use ncc\Abstracts\ConstantReferences;
|
use ncc\Abstracts\ConstantReferences;
|
||||||
use ncc\Abstracts\DependencySourceType;
|
use ncc\Abstracts\DependencySourceType;
|
||||||
use ncc\Abstracts\LogLevel;
|
use ncc\Abstracts\LogLevel;
|
||||||
|
use ncc\Abstracts\RemoteSourceType;
|
||||||
use ncc\Abstracts\Scopes;
|
use ncc\Abstracts\Scopes;
|
||||||
|
use ncc\Abstracts\Versions;
|
||||||
|
use ncc\Classes\ComposerExtension\ComposerSourceBuiltin;
|
||||||
use ncc\Classes\NccExtension\PackageCompiler;
|
use ncc\Classes\NccExtension\PackageCompiler;
|
||||||
use ncc\Classes\PhpExtension\PhpInstaller;
|
use ncc\Classes\PhpExtension\PhpInstaller;
|
||||||
use ncc\CLI\Main;
|
use ncc\CLI\Main;
|
||||||
|
@ -32,6 +36,7 @@
|
||||||
use ncc\Objects\PackageLock\PackageEntry;
|
use ncc\Objects\PackageLock\PackageEntry;
|
||||||
use ncc\Objects\PackageLock\VersionEntry;
|
use ncc\Objects\PackageLock\VersionEntry;
|
||||||
use ncc\Objects\ProjectConfiguration\Dependency;
|
use ncc\Objects\ProjectConfiguration\Dependency;
|
||||||
|
use ncc\Objects\RemotePackageInput;
|
||||||
use ncc\ThirdParty\Symfony\Filesystem\Filesystem;
|
use ncc\ThirdParty\Symfony\Filesystem\Filesystem;
|
||||||
use ncc\ThirdParty\theseer\DirectoryScanner\DirectoryScanner;
|
use ncc\ThirdParty\theseer\DirectoryScanner\DirectoryScanner;
|
||||||
use ncc\Utilities\Console;
|
use ncc\Utilities\Console;
|
||||||
|
@ -308,6 +313,83 @@
|
||||||
return $package->Assembly->Package;
|
return $package->Assembly->Package;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $source
|
||||||
|
* @return string
|
||||||
|
* @throws InstallationException
|
||||||
|
*/
|
||||||
|
public function fetchFromSource(string $source): string
|
||||||
|
{
|
||||||
|
$parsed_source = new RemotePackageInput($source);
|
||||||
|
|
||||||
|
if($parsed_source->Source == null)
|
||||||
|
throw new InstallationException('No source specified');
|
||||||
|
|
||||||
|
if($parsed_source->Package == null)
|
||||||
|
throw new InstallationException('No package specified');
|
||||||
|
|
||||||
|
if($parsed_source->Version == null)
|
||||||
|
$parsed_source->Version = Versions::Latest;
|
||||||
|
|
||||||
|
$remote_source_type = Resolver::detectRemoteSourceType($parsed_source->Source);
|
||||||
|
|
||||||
|
if($remote_source_type == RemoteSourceType::Builtin)
|
||||||
|
{
|
||||||
|
switch($parsed_source->Source)
|
||||||
|
{
|
||||||
|
case BuiltinRemoteSourceType::Composer:
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return ComposerSourceBuiltin::fetch($parsed_source);
|
||||||
|
}
|
||||||
|
catch(Exception $e)
|
||||||
|
{
|
||||||
|
throw new InstallationException('Cannot fetch package from composer source, ' . $e->getMessage(), $e);
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new InstallationException('Builtin source type ' . $parsed_source->Source . ' is not implemented');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($remote_source_type == RemoteSourceType::Defined)
|
||||||
|
{
|
||||||
|
$remote_source_manager = new RemoteSourcesManager();
|
||||||
|
$remote_source = $remote_source_manager->getRemoteSource($parsed_source->Source);
|
||||||
|
if($remote_source == null)
|
||||||
|
throw new InstallationException('Remote source ' . $parsed_source->Source . ' is not defined');
|
||||||
|
|
||||||
|
// TODO: Implement defined remote sources
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new InstallationException(sprintf('Unknown remote source type %s', $remote_source_type));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Installs a package from a source syntax (vendor/package=version@source)
|
||||||
|
*
|
||||||
|
* @param string $source
|
||||||
|
* @return string
|
||||||
|
* @throws AccessDeniedException
|
||||||
|
* @throws FileNotFoundException
|
||||||
|
* @throws IOException
|
||||||
|
* @throws InstallationException
|
||||||
|
* @throws MissingDependencyException
|
||||||
|
* @throws NotImplementedException
|
||||||
|
* @throws PackageAlreadyInstalledException
|
||||||
|
* @throws PackageLockException
|
||||||
|
* @throws PackageNotFoundException
|
||||||
|
* @throws PackageParsingException
|
||||||
|
* @throws UnsupportedCompilerExtensionException
|
||||||
|
* @throws UnsupportedRunnerException
|
||||||
|
* @throws VersionNotFoundException
|
||||||
|
*/
|
||||||
|
public function installFromSource(string $source): string
|
||||||
|
{
|
||||||
|
$package_path = $this->fetchFromSource($source);
|
||||||
|
return $this->install($package_path);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Dependency $dependency
|
* @param Dependency $dependency
|
||||||
* @param Package $package
|
* @param Package $package
|
||||||
|
@ -379,7 +461,6 @@
|
||||||
* @param string $package
|
* @param string $package
|
||||||
* @return PackageEntry|null
|
* @return PackageEntry|null
|
||||||
* @throws PackageLockException
|
* @throws PackageLockException
|
||||||
* @throws PackageLockException
|
|
||||||
*/
|
*/
|
||||||
public function getPackage(string $package): ?PackageEntry
|
public function getPackage(string $package): ?PackageEntry
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue