Add support for rebasing EOL extensions
From the main commit message:
jobs: Consider every build ref when determining the EOL prefix
We assume that:
* There is always at least one build ref being committed.
* Committed ref names always include a ref type followed by a "/"
character. For example, "app/" or "runtime/".
* The main ref isn't necessarily an "app/" ref. For example, in the
case of extension-only repos, the main ref is a "runtime/" ref.
* The main ref being committed has the shortest ref name when
removing its ref type. For example:
* When the committed ref names are "app/org.app.App" and
"runtime/org.app.App.Plugin", the main ref is "app/org.app.App".
* When the committed ref names are "runtime/org.app.App.Plugin"
and "runtime/org.app.App.Plugin.Debug", the main ref is
"runtime/org.app.App.Plugin".
* The main ref with its ref type removed should be considered to be
the old prefix for the purpose of EOL rebasing.
This should allow rebasing EOL extensions in addition to apps.
Note that while the assumptions above are based on my impression, they are not necessarily all correct. Please review thoroughly.
The main ref being committed has the shortest ref name when removing its ref type.
Technically this assumption may be incorrect. As I understand, add-extensions with bundle: true allows exporting extensions with arbitrary IDs, not necessarily prefixed with the app ID. This is unlikely to be used in practice, though.
The main ref being committed has the shortest ref name when removing its ref type.
Technically this assumption may be incorrect. As I understand,
add-extensionswithbundle: trueallows exporting extensions with arbitrary IDs, not necessarily prefixed with the app ID. This is unlikely to be used in practice, though.
I couldn't find documentation which actually explains this aspect. Are you familiar with any repo where this funtionality is used? If I had access to one I could take a look and adjust the PR if necessary.
Are you familiar with any repo where this funtionality used?
Not with unrelated extension ID, but here is org.chromium.Chromium app exporting a custom org.chromium.Chromium.Codecs extension. Imagine the extension had some ID not starting with org.chromium., e.g. org.flathub.ChromiumCodecs.