Code Monkey home page Code Monkey logo

Comments (3)

TheBay0r avatar TheBay0r commented on May 29, 2024

More Information:
First Object = Proxy
Second Object = Group

[
  {
    "v4.1.1": {
      "name": "symfony/symfony",
      "description": "The Symfony PHP framework",
      "keywords": [
        "framework"
      ],
      "homepage": "https://symfony.com",
      "version": "v4.1.1",
      "version_normalized": "4.1.1.0",
      "license": [
        "MIT"
      ],
      "authors": [
        {
          "name": "Fabien Potencier",
          "email": "[email protected]"
        },
        {
          "name": "Symfony Community",
          "homepage": "https://symfony.com/contributors"
        }
      ],
      "dist": {
        "url": "https://{internal-url}/repository/composer-proxy/symfony/symfony/v4.1.1/symfony-symfony-v4.1.1.zip",
        "type": "zip",
        "reference": "68b56033c43d2c499d8dcf79f374c33049184b96",
        "shasum": ""
      },
      "type": "library",
      "time": "2018-06-25T13:07:10+00:00",
      "autoload": {
        "psr-4": {
          "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
          "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
          "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
          "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
          "Symfony\\Bundle\\": "src/Symfony/Bundle/",
          "Symfony\\Component\\": "src/Symfony/Component/"
        },
        "classmap": [
          "src/Symfony/Component/Intl/Resources/stubs"
        ],
        "exclude-from-classmap": [
          "**/Tests/"
        ]
      },
      "extra": {
        "branch-alias": {
          "dev-master": "4.1-dev"
        }
      },
      "require": {
        "doctrine/common": "~2.4@stable",
        "ext-xml": "*",
        "fig/link-util": "^1.0",
        "php": "^7.1.3",
        "psr/cache": "~1.0",
        "psr/container": "^1.0",
        "psr/link": "^1.0",
        "psr/log": "~1.0",
        "psr/simple-cache": "^1.0",
        "symfony/polyfill-ctype": "~1.8",
        "symfony/polyfill-intl-icu": "~1.0",
        "symfony/polyfill-mbstring": "~1.0",
        "symfony/polyfill-php72": "~1.5",
        "twig/twig": "^1.35|^2.4.4"
      },
      "require-dev": {
        "cache/integration-tests": "dev-master",
        "doctrine/annotations": "~1.0",
        "doctrine/cache": "~1.6",
        "doctrine/data-fixtures": "1.0.*",
        "doctrine/dbal": "~2.4",
        "doctrine/doctrine-bundle": "~1.4",
        "doctrine/orm": "~2.4,>=2.4.5",
        "egulias/email-validator": "~1.2,>=1.2.8|~2.0",
        "monolog/monolog": "~1.11",
        "ocramius/proxy-manager": "~0.4|~1.0|~2.0",
        "phpdocumentor/reflection-docblock": "^3.0|^4.0",
        "predis/predis": "~1.0",
        "symfony/phpunit-bridge": "~3.4|~4.0",
        "symfony/security-acl": "~2.8|~3.0"
      },
      "conflict": {
        "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
        "phpdocumentor/type-resolver": "<0.2.1",
        "phpunit/phpunit": "<5.4.3"
      },
      "provide": {
        "psr/cache-implementation": "1.0",
        "psr/container-implementation": "1.0",
        "psr/log-implementation": "1.0",
        "psr/simple-cache-implementation": "1.0"
      },
      "replace": {
        "symfony/asset": "self.version",
        "symfony/browser-kit": "self.version",
        "symfony/cache": "self.version",
        "symfony/config": "self.version",
        "symfony/console": "self.version",
        "symfony/css-selector": "self.version",
        "symfony/dependency-injection": "self.version",
        "symfony/debug": "self.version",
        "symfony/debug-bundle": "self.version",
        "symfony/doctrine-bridge": "self.version",
        "symfony/dom-crawler": "self.version",
        "symfony/dotenv": "self.version",
        "symfony/event-dispatcher": "self.version",
        "symfony/expression-language": "self.version",
        "symfony/filesystem": "self.version",
        "symfony/finder": "self.version",
        "symfony/form": "self.version",
        "symfony/framework-bundle": "self.version",
        "symfony/http-foundation": "self.version",
        "symfony/http-kernel": "self.version",
        "symfony/inflector": "self.version",
        "symfony/intl": "self.version",
        "symfony/ldap": "self.version",
        "symfony/lock": "self.version",
        "symfony/messenger": "self.version",
        "symfony/monolog-bridge": "self.version",
        "symfony/options-resolver": "self.version",
        "symfony/process": "self.version",
        "symfony/property-access": "self.version",
        "symfony/property-info": "self.version",
        "symfony/proxy-manager-bridge": "self.version",
        "symfony/routing": "self.version",
        "symfony/security": "self.version",
        "symfony/security-core": "self.version",
        "symfony/security-csrf": "self.version",
        "symfony/security-guard": "self.version",
        "symfony/security-http": "self.version",
        "symfony/security-bundle": "self.version",
        "symfony/serializer": "self.version",
        "symfony/stopwatch": "self.version",
        "symfony/templating": "self.version",
        "symfony/translation": "self.version",
        "symfony/twig-bridge": "self.version",
        "symfony/twig-bundle": "self.version",
        "symfony/validator": "self.version",
        "symfony/var-dumper": "self.version",
        "symfony/web-link": "self.version",
        "symfony/web-profiler-bundle": "self.version",
        "symfony/web-server-bundle": "self.version",
        "symfony/workflow": "self.version",
        "symfony/yaml": "self.version"
      },
      "uid": 2287735
    }
  },
  {
    "v4.1.1": {
      "name": "symfony/symfony",
      "version": "v4.1.1",
      "dist": {
        "url": "https://{internal-url}/repository/composer/symfony/symfony/v4.1.1/symfony-symfony-v4.1.1.zip",
        "type": "zip",
        "reference": "68b56033c43d2c499d8dcf79f374c33049184b96",
        "shasum": ""
      },
      "time": "2018-06-25T13:07:10+00:00",
      "uid": 1865870344,
      "autoload": {
        "psr-4": {
          "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
          "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
          "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
          "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
          "Symfony\\Bundle\\": "src/Symfony/Bundle/",
          "Symfony\\Component\\": "src/Symfony/Component/"
        },
        "classmap": [
          "src/Symfony/Component/Intl/Resources/stubs"
        ],
        "exclude-from-classmap": [
          "**/Tests/"
        ]
      },
      "require": {
        "doctrine/common": "~2.4@stable",
        "ext-xml": "*",
        "fig/link-util": "^1.0",
        "php": "^7.1.3",
        "psr/cache": "~1.0",
        "psr/container": "^1.0",
        "psr/link": "^1.0",
        "psr/log": "~1.0",
        "psr/simple-cache": "^1.0",
        "symfony/polyfill-ctype": "~1.8",
        "symfony/polyfill-intl-icu": "~1.0",
        "symfony/polyfill-mbstring": "~1.0",
        "symfony/polyfill-php72": "~1.5",
        "twig/twig": "^1.35|^2.4.4"
      },
      "require-dev": {
        "cache/integration-tests": "dev-master",
        "doctrine/annotations": "~1.0",
        "doctrine/cache": "~1.6",
        "doctrine/data-fixtures": "1.0.*",
        "doctrine/dbal": "~2.4",
        "doctrine/doctrine-bundle": "~1.4",
        "doctrine/orm": "~2.4,>=2.4.5",
        "egulias/email-validator": "~1.2,>=1.2.8|~2.0",
        "monolog/monolog": "~1.11",
        "ocramius/proxy-manager": "~0.4|~1.0|~2.0",
        "phpdocumentor/reflection-docblock": "^3.0|^4.0",
        "predis/predis": "~1.0",
        "symfony/phpunit-bridge": "~3.4|~4.0",
        "symfony/security-acl": "~2.8|~3.0"
      },
      "authors": [
        {
          "name": "Fabien Potencier",
          "email": "[email protected]"
        },
        {
          "name": "Symfony Community",
          "homepage": "https://symfony.com/contributors"
        }
      ],
      "conflict": {
        "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
        "phpdocumentor/type-resolver": "<0.2.1",
        "phpunit/phpunit": "<5.4.3"
      },
      "description": "The Symfony PHP framework",
      "extra": {
        "branch-alias": {
          "dev-master": "4.1-dev"
        }
      },
      "homepage": "https://symfony.com",
      "keywords": [
        "framework"
      ],
      "license": [
        "MIT"
      ],
      "provide": {
        "psr/cache-implementation": "1.0",
        "psr/container-implementation": "1.0",
        "psr/log-implementation": "1.0",
        "psr/simple-cache-implementation": "1.0"
      }
    }
  }
]

from nexus-repository-composer.

fjmilens3 avatar fjmilens3 commented on May 29, 2024

@TheBay0r, I've checked out your branch and tried it out for both include-path and replace, and in my testing it seems to be working.

My exact setup:

  1. I built the Docker image using the instructions in our README.md.
  2. I set up a composer-proxy repository pointing to packagist.org.
  3. I set up a composer-group repository containing the composer-proxy repository.
  4. I fetched the content for p/symfony/symfony.json from packagist.org as a baseline.
  5. I fetched the content for p/symfony/symfony.json from the proxy repo.
  6. I fetched the content for p/symfony/symfony.json from the group repo.

Counts for include-path:

  • packagist.org (0)
  • composer-proxy (0)
  • composer-group (0)

Counts for replace:

  • packagist.org (357)
  • composer-proxy (357)
  • composer-group (357)

So to me, it looks like it works. Your branch only has test cases for the include-path key, so I'd go add ones for the replace key as well (exactly as you did for include-path), then rebuild and try it again.

The only other difference I can think of is that if perhaps we're using different staging setups. Are you by any chance using a hosted repo for test purposes in the group scenario? Are you sure that you have a clean build and a new Docker image containing your most recent commit (containing the addition of the replace key)?

(By the way, I also like your cleanup on https://github.com/kununu/nexus-repository-composer/tree/restructure-composer-json-processor as a means of reducing technical debt; most of our format implementations adopt a pattern of using string constants for each key, but past a certain point that gets very unwieldy as you've no doubt noticed. There are a couple of stylistic changes that would be nice to make it fit the Nexus coding style but I'd like you to open up a PR so we could get that merged in as well.)

from nexus-repository-composer.

TheBay0r avatar TheBay0r commented on May 29, 2024

Hey @fjmilens3 thanks for your feedback… I didn't write tests for replace, because it doesn't seem to be working in my setup. I can add tests ofc.

Are you by any chance using a hosted repo for test purposes in the group scenario?

Yes, in my scenario the group repository is a combination from the packagist proxy and a hosted repository. Although I have to admit that my testing setup was more an upgrade to an existing instance. I will give it a try with a clean instance as well 🤔If it works with a clean installation, is there any chance to get it working in an existing setup too?

By the way, I also like your cleanup on …

Thanks! Sadly it fails the tests and I didn't have the time to investigate why. I first thought of a more JavaScripty way of doing this, but then I got reminded that Java doesn't support dynamic objects (assigning new properties to existing objects), at least not that I'm aware. My alternative thought would have been to retrieve this information via a resource template.json... but also no time to look into this in more detail. I'll open a PR were we can discuss this further

from nexus-repository-composer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.