Skip to content

Instantly share code, notes, and snippets.

@CybotTM
Last active September 24, 2020 08:31
Show Gist options
  • Save CybotTM/1b811cc4aacf40e2d73d764be490ba7a to your computer and use it in GitHub Desktop.
Save CybotTM/1b811cc4aacf40e2d73d764be490ba7a to your computer and use it in GitHub Desktop.
GitLab composer registry install from source workaround
<?php
$composerJson = json_decode(file_get_contents(__DIR__ . 'composer.json'), true);
$mappings = $composerJson['config']['extra']['sources-mapping'];
foreach ($mappings as $package => $repository) {
$packageInfo = shell_exec("composer info --format=json $package");
if ($packageJson = json_decode($packageInfo, true)) {
$path = $packageJson['path'];
$version = str_replace('dev-', '', reset($packageJson['versions']));
shell_exec("rm -rf $path && git clone --branch $version -- $repository $path");
}
}
{
"name": "netresearch/project",
"description" : "Example project for GitLab hosted composer packages installed as source",
"repositories": [
{ "type": "composer", "url": "https://my.git.server/api/v4/group/123456/-/packages/composer/packages.json"}
],
"require": {
"software/core": "^10.0.3",
"netresearch/foo": "dev-master",
"netresearch/bar": "dev-master"
},
"minimum-stability": "dev",
"prefer-stable": true,
"config": {
"gitlab-domains": [
"my.git.server"
],
"preferred-install": {
"*": "dist",
"netresearch/*": "source"
},
"extra" : {
"sources-mapping": {
"netresearch/foo": "git@my.git.server:acme/project/foo.git",
"netresearch/bar": "git@my.git.server:acme/project/lib/bar.git"
}
}
},
"scripts":{
"checkout-packages": [
"[ $COMPOSER_DEV_MODE -eq 0 ] || php checkout-packages.php"
],
"post-autoload-dump": [
"@checkout-packages"
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment