redaxo/redaxo — pull request #194 by gharlan (2013-02-08 10:14:12+00:00)
Title: Conflicts-Angabe in package.yml / Änderung "requires"-Angabe

https://github.com/redaxo/redaxo/issues/191#issuecomment-13044971

> vllt macht es sinn in der package.yml definieren zu können, dass ein addon/plugin eine alternative zu einem anderen addon/plugin ist (wie gerade z.b. Mit der linkmap diskutiert).
Dann könnte der addon installer sicherstellen, das immer nur eines derm packages installiert werden darf (da sie wenn beide installiert, sich gegenseitig in die quere kommen).

Finde ich sinnvoll. In der package.yml könnte man es "conflicts:" nennen, aber wie man die Angaben dann im Detail macht, ist mir nicht ganz klar.

"requires" sieht ja zum Beispiel so aus:

```yaml
requires:
addons:
structure:
plugins:
content:
min-version: '1.0'
```

Versionsangaben sind bei den Conflicts unnötig, denke ich, oder? Daher könnte es dann so aussehen:

```yaml
conflicts:
addons:
- structure
```

Aber da addons jetzt kein assoz. Array mehr ist, kann man keine Plugins integrieren. Daher ist es vielleicht schlauer, eine platte Struktur für die Packages zu nehmen:

```yaml
conflicts:
packages:
- textile
- structure/content
```

Falls man das so macht, ist aber die Frage, ob man dann nicht "requires" entsprechend anpasst:

```yaml
requires:
packages:
textile: {min-version: '1.0'}
structure/content: {min-version: '1.0'}
```

Und unabhängig von den ganzen Dingen oben könnte man drüber nachdenken, ob wir die Versionsangabe nicht [wie bei composer](http://getcomposer.org/doc/01-basic-usage.md#package-versions) realisieren wollen, statt min-version, max-version und version. Also:

```yaml
requires:
redaxo: "~5.0"
php:
version: "<5.5"
extensions: [gd]
packages:
textile: ">=1.0,!=1.1.2"
structure/content: "~1.0"
```