Allow the indexed pack icon in packwiz channel publication
Build Sanctuary / build (push) Canceled after 0s
Build Sanctuary / build (push) Canceled after 0s
This commit is contained in:
@@ -38,4 +38,3 @@ Reçu : `build/beta104-artifact.json`.
|
|||||||
|
|
||||||
Les GameTests dédiés restent exclus. Aucun monde, canal ou installation
|
Les GameTests dédiés restent exclus. Aucun monde, canal ou installation
|
||||||
personnelle modifié ; archives locales uniquement.
|
personnelle modifié ; archives locales uniquement.
|
||||||
|
|
||||||
|
|||||||
@@ -95,3 +95,8 @@ Reçu : `build/integration110-artifact.json`, manifeste des sources :
|
|||||||
Les essais natifs sont macOS avec serveur intégré ; pas de test Windows ni
|
Les essais natifs sont macOS avec serveur intégré ; pas de test Windows ni
|
||||||
connexion depuis un second ordinateur. La neige antérieure non suivie garde
|
connexion depuis un second ordinateur. La neige antérieure non suivie garde
|
||||||
la limite de fonte documentée dans beta.109.
|
la limite de fonte documentée dans beta.109.
|
||||||
|
|
||||||
|
Le script de publication a été corrigé pour autoriser uniquement `icon.png`
|
||||||
|
en plus des manifestes TOML, après contrôle de l'index et comparaison à l'icône
|
||||||
|
source. Les JAR restent exclusivement des pièces jointes de release. Cette
|
||||||
|
correction de distribution ne change aucun binaire ni le tag source beta.110.
|
||||||
|
|||||||
@@ -31,4 +31,3 @@ de débogage changent). Reçu : `build/beta103-artifact.json`.
|
|||||||
|
|
||||||
Les GameTests du serveur dédié restent exclus. Aucun monde personnel,
|
Les GameTests du serveur dédié restent exclus. Aucun monde personnel,
|
||||||
aucune installation ni aucun canal de distribution modifié.
|
aucune installation ni aucun canal de distribution modifié.
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -8,7 +8,8 @@ https://git.botsu.net/koka/sanctuary-beta/raw/branch/packwiz/pack.toml
|
|||||||
```
|
```
|
||||||
|
|
||||||
Les sources sont sur la branche de travail du ticket. La branche `packwiz`
|
Les sources sont sur la branche de travail du ticket. La branche `packwiz`
|
||||||
contient uniquement les manifestes de distribution produits par le build ; les
|
contient les manifestes de distribution produits par le build et l’icône
|
||||||
|
`icon.png` déclarée dans leur index ; les
|
||||||
JAR Sanctuary sont des pièces jointes de releases Gitea. Aucun JAR de mod ou
|
JAR Sanctuary sont des pièces jointes de releases Gitea. Aucun JAR de mod ou
|
||||||
dépendance téléchargée n'entre dans l'historique Git. Le canal Beta est distinct
|
dépendance téléchargée n'entre dans l'historique Git. Le canal Beta est distinct
|
||||||
de l'ancien pack 26.2.
|
de l'ancien pack 26.2.
|
||||||
|
|||||||
+12
-3
@@ -115,12 +115,21 @@ def remote_tag_commit(tag):
|
|||||||
return found.get('refs/tags/' + tag + '^{}') or found.get('refs/tags/' + tag)
|
return found.get('refs/tags/' + tag + '^{}') or found.get('refs/tags/' + tag)
|
||||||
|
|
||||||
|
|
||||||
|
def channel_file(relative):
|
||||||
|
"""The indexed pack icon is the only non-TOML file allowed on the channel."""
|
||||||
|
path = Path(relative)
|
||||||
|
return path.suffix == '.toml' or path.as_posix() == 'icon.png'
|
||||||
|
|
||||||
|
|
||||||
def publish_channel(origin, version, source_head):
|
def publish_channel(origin, version, source_head):
|
||||||
staged = ROOT / 'build/packwiz-release'
|
staged = ROOT / 'build/packwiz-release'
|
||||||
pack.check_index(staged)
|
pack.check_index(staged)
|
||||||
files = [path for path in staged.rglob('*') if path.is_file()]
|
files = [path for path in staged.rglob('*') if path.is_file()]
|
||||||
pack.require(all(path.suffix == '.toml' for path in files),
|
pack.require(all(channel_file(path.relative_to(staged)) for path in files),
|
||||||
'Distribution branch must contain only generated TOML metadata')
|
'Distribution branch must contain only generated TOML metadata and the pack icon')
|
||||||
|
if (staged / 'icon.png').exists():
|
||||||
|
pack.require((staged / 'icon.png').read_bytes() == (ROOT / 'packwiz/icon.png').read_bytes(),
|
||||||
|
'Distribution icon differs from the verified source icon')
|
||||||
remote = git('ls-remote', '--heads', 'origin', 'refs/heads/' + CHANNEL)
|
remote = git('ls-remote', '--heads', 'origin', 'refs/heads/' + CHANNEL)
|
||||||
with tempfile.TemporaryDirectory(prefix='sanctuary-pack-channel-') as temp:
|
with tempfile.TemporaryDirectory(prefix='sanctuary-pack-channel-') as temp:
|
||||||
directory = Path(temp)
|
directory = Path(temp)
|
||||||
@@ -134,7 +143,7 @@ def publish_channel(origin, version, source_head):
|
|||||||
git('fetch', '--quiet', 'origin', CHANNEL, cwd=directory)
|
git('fetch', '--quiet', 'origin', CHANNEL, cwd=directory)
|
||||||
git('checkout', '--quiet', '-b', CHANNEL, 'FETCH_HEAD', cwd=directory)
|
git('checkout', '--quiet', '-b', CHANNEL, 'FETCH_HEAD', cwd=directory)
|
||||||
tracked = git('ls-files', cwd=directory).splitlines()
|
tracked = git('ls-files', cwd=directory).splitlines()
|
||||||
pack.require(all(name.endswith('.toml') for name in tracked),
|
pack.require(all(channel_file(name) for name in tracked),
|
||||||
'Existing distribution branch contains unexpected files')
|
'Existing distribution branch contains unexpected files')
|
||||||
for name in tracked:
|
for name in tracked:
|
||||||
(directory / name).unlink()
|
(directory / name).unlink()
|
||||||
|
|||||||
Reference in New Issue
Block a user