make_composer_json.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. // create a virtual package to make composer load the plugin from the current directory
  3. error_reporting(-1);
  4. ini_set('display_errors', 1);
  5. if (empty($argv[1])) {
  6. echo "argument 1 must be composer.json file name!\n";
  7. exit(1);
  8. }
  9. $targetFile = $argv[1];
  10. $json = stream_get_contents(STDIN);
  11. if (empty($json)) {
  12. echo "expected composer.json content on STDIN!\n";
  13. exit(1);
  14. }
  15. $packageJson = file_get_contents(__DIR__ . '/../../composer.json');
  16. $packageComposerJson = json_decode($packageJson, true);
  17. check_json_error($packageJson);
  18. $PLUGIN_SOURCE = dirname(dirname(__DIR__)) . '/package.zip';
  19. $packageComposerJson['version'] = 'dev-test';
  20. $packageComposerJson['dist'] = array(
  21. 'url' => "file://$PLUGIN_SOURCE",
  22. 'type' => 'zip',
  23. );
  24. $rootComposerJson = json_decode($json, true);
  25. check_json_error($json);
  26. $rootComposerJson['require']['yiisoft/yii2-composer'] = 'dev-test as 2.0.x-dev';
  27. $rootComposerJson['repositories'][] = array(
  28. 'type' => 'package',
  29. 'package' => $packageComposerJson,
  30. );
  31. file_put_contents($targetFile, json_encode($rootComposerJson, JSON_PRETTY_PRINT));
  32. function check_json_error($json)
  33. {
  34. if (json_last_error() !== JSON_ERROR_NONE) {
  35. echo "Failed to parse JSON: " . json_last_error_msg() . "\n";
  36. echo "$json\n";
  37. exit(1);
  38. }
  39. }