Mis on hoidla

Clink loeb pakke avalikest GitHubi hoidlatest. Sina lisad hoidla nime järgi, Clink loeb selle uusima väljalaske ja iga fail kontrollitakse enne paigaldamist. Midagi ei laadita üles ja miski sinu oma ei jookse serveris.

Sisesta owner/repository, github.com/owner/repository või täielik HTTPS-i URL. Clink kontrollib iga väljalaske manifesti ja faili, enne kui midagi saab alla laadida.

Vali liik

Igal pakiliigil on oma faililaiend ja oma kogu nimi manifestis, ja Clink rakendab igaühele ta enda suurusepiiri. Vali rida, mida avaldad, ja püsi selle juures: paneelide alla pandud teemat lihtsalt ei loeta.

LiikFailKoguSuurim fail, baitidesAmetlik hoidla
Teemad.clinkthemethemes128 000anti-ltd/clink-themes
Paigutused.clinklayoutlayouts512 000anti-ltd/clink-layouts
Profiilid.clinkprofileprofiles256 000anti-ltd/clink-profiles
Helid.clinkpacksounds512 000anti-ltd/clink-sounds
Fondid.otf .ttffonts32 000 000anti-ltd/clink-fonts
Paneelid.clinkpanelpanels50 000anti-ltd/clink-panels
Tegevused.clinkextactions48 000anti-ltd/clink-actions
Pistikprogrammid.clinkpluginplugins66 000anti-ltd/clink-plugins

Keelepakid on erand. Seal ei ole pakk üks dokument, vaid hulk sõnastiku- ja mudelifaile, ja ametlik hoidla kannab kaasas tööriistu, mis neid ehitavad. Alusta selle README failist, mitte siit lehelt.

Alusta ametlikust hoidlast

Kiireim tee on koopia. See tuleb koos pakikaustaga, manifesti ehitajaga ja avaldamise töövooga, mis on juba omavahel ühendatud, ning lisaks töötavate näidetega, mida saab maha kirjutada.

# Everything a repository needs is already wired together in the official one.
gh repo fork anti-ltd/clink-panels --clone
cd clink-panels

# Your packs replace the examples. Keep tools/ and .github/.
rm Panels/*.clinkpanel
cp ~/Downloads/my-panel.clinkpanel Panels/kaomoji-plus.clinkpanel

Jäta alles tools/ ja .github/workflows/. Just need kaks teevad tõukest väljalaske, mida Clink oskab lugeda; ilma nendeta koopia ei avalda midagi.

Või ehita see kolmest failist

Hoidlas ei ole midagi erilist. Tal on vaja pakkide kausta, skripti, mis kirjutab manifesti, ja töövoogu, mis väljalaske teeb.

my-panels/
├── Panels/
   └── kaomoji.clinkpanel        # one file per pack, the name is the id
├── tools/
   └── build-manifest.py         # writes manifest.json from that folder
└── .github/workflows/
    └── release.yml               # turns a push into a release

Töövoog teeb kolme asja: ehitab manifesti uuesti, kustutab eelmise väljalaske ja avaldab uue sildiga latest, pakifailid ja manifest külge pandud. Ongi kõik.

name: Release panels
on:
  push:
    branches: [main]
    paths: ["Panels/**", "tools/**", ".github/workflows/release.yml"]
permissions: { contents: write }
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: python3 tools/build-manifest.py
      - run: gh release delete latest --yes || true
        env: { GH_TOKEN: "${{ github.token }}" }
      - run: gh release create latest Panels/*.clinkpanel manifest.json --title "Latest panels" --latest
        env: { GH_TOKEN: "${{ github.token }}" }
.github/workflows/release.yml

Ehitaja käib kausta läbi ja kirjutab iga faili kohta ühe kirje. See on ainus koht, kust räsi ja baitide arv tulevad, ja just seepärast käib ta töövoos, mitte käsitsi.

#!/usr/bin/env python3
import hashlib, json, os, pathlib

root = pathlib.Path(__file__).resolve().parents[1]
repository = os.environ.get("GITHUB_REPOSITORY", "<owner>/<repository>")
packs = []
for path in sorted((root / "Panels").glob("*.clinkpanel")):
    data = path.read_bytes()
    pack = json.loads(data)
    packs.append({
        "id": path.stem,
        "name": pack["name"],
        "version": "latest",
        "asset": {
            "path": path.name,
            "url": f"https://github.com/{repository}/releases/download/latest/{path.name}",
            "sha256": hashlib.sha256(data).hexdigest(),
            "byteCount": len(data),
        },
    })
(root / "manifest.json").write_text(json.dumps({"version": "latest", "panels": packs}, indent=2))
tools/build-manifest.py. Teise liigi jaoks muuda kaust, laiend ja kogu nimi valitud rea järgi.

Manifest

Iga väljalase avaldab pakifailide kõrval faili manifest.json ja Clink loeb selle uusimast väljalaskest aadressilt https://github.com/<owner>/<repository>/releases/latest/download/manifest.json. Iga kirje nimetab faili, selle aadressi samas väljalaskes, SHA-256 räsi ja täpse baitide arvu.

{
  "version": "latest",
  "panels": [
    {
      "id": "kaomoji",
      "name": "Kaomoji",
      "version": "latest",
      "asset": {
        "path": "kaomoji.clinkpanel",
        "url": "https://github.com/<owner>/<repository>/releases/download/latest/kaomoji.clinkpanel",
        "sha256": "8f14e45fce…",
        "byteCount": 2048
      }
    }
  ]
}
Üks kirje paneelihoidla manifestist.

Kogu nimi peab liigiga kokku minema. Paneelid käivad panels alla, teemad themes alla, ja nii edasi mööda ülalolevat tabelit.

Proovi enne avaldamist

Hoidlas olev pakk on seesama fail, mille saad ka käsitsi avada, nii et proovi kõigepealt lühemat teed: saada see AirDropiga telefoni või pane Failidesse ja ava Clinkiga. Seejärel vaata üle manifest, mille su skript kirjutab.

python3 tools/build-manifest.py
cat manifest.json
  1. Käivita ehitaja. See kirjutab manifest.json ümber selle järgi, mis parajasti kaustas on.
  2. Loe läbi, mis kirja sai. Iga kirje peaks nimetama faili, mis tõesti olemas on, ja sellega kokku minevat baitide arvu.
  3. Ava pakifail ise Clinkis ja kasuta seda. Paneel või tegevus maandub oma redaktoris, kus saad selle käima panna.

Avaldamine

git add Panels manifest.json
git commit -m "Add my first panel"
git push

Lükka muudatused harusse main ja töövoog võtab üle. See asendab väljalaske latest, mitte ei lisa sellele, nii et viimane tõuge on alati see, mida teised saavad.

Ava see kaart pärast seda, kui hoidla on väljalaske avaldanud.

Lisa see Clinki

  1. Ava Üldine, siis Hoidlad, ja lisa omanik/hoidla.
  2. Ava oma liigi kaart ja tõmba värskendamiseks alla. Sinu pakid on seal nende nimedega, mille manifest neile andis.
  3. Puuduta ühte, et see alla laadida. Clink kontrollib selle üle ja paigaldab nagu iga teise paki.

Hoidla lisamisest piisab andmepakkide jaoks: teemad, paigutused, profiilid, helid, fondid ja keeled. Paneelid, toimingud ja pistikprogrammid kannavad loogikat, seega vajab iga hoidla oma lülitit, enne kui Clink neist midagi paigaldab, ja rakendus küsib esimesel korral.

Paneelid sisaldavad piiratud interaktiivset loogikat. Luba ainult hoidlaid, mida usaldad.

Mida Clink kontrollib

  1. Aadress on HTTPS hostil github.com, sinu lisatud hoidla väljalasete all.
  2. Allalaadimises on täpselt nii palju baite, kui manifest ütleb, ja selle 64 märgiline SHA-256 räsi klapib.
  3. Failil on õige laiend ja see loeb end sellise pakiliigina, nagu ta väidab end olevat.
  4. Paneelid, toimingud ja pistikprogrammid läbivad enne salvestamist lähtekoodipoliitika.

Kui allalaadimine tagasi lükatakse, on põhjus üks neist viiest. Teade rakenduses on meelega lühike, nii et käi need järjekorras läbi.

KontrollKeeldutakse, kui
github.comAadress ei ole HTTPS hostil github.com, sinu lisatud hoidla väljalasete all. Manifest ei saa osutada mujale, isegi mitte sinu teisele hoidlale.
byteCountFail ei ole täpselt nii suur, nagu manifest väidab, või ületab oma liigi piiri. Manifesti uuesti ehitamine pärast iga muudatust lahendab enamiku neist.
sha256Räsi ei klapi baitidega. Enamasti on manifest kirjutatud enne faili viimast muutmist.
pathFaili nimi ei lõpe laiendiga, mida liik nõuab, või üritab kahe punktiga väljalaskest välja ronida.
sourcePaneel, toiming või pistikprogramm ei läbinud lähtekoodipoliitikat: liiga pikk või sisaldab fragmenti, mille poliitika keelab.

Uuendamine ja tagasivõtmine

Id on faili nimi ilma laiendita, ja just tema teeb uuendusest uuenduse. Hoia nimi alles ja uus väljalase asendab koopia, mis inimestel juba olemas on. Muuda nime ja oled avaldanud esimese kõrvale teise paki.

Paki hoidlast eemaldamine peatab uued allalaadimised. Telefonidesse, kus see juba on, see ei ulatu, nii et halba väljalaset tasub pigem asendada kui kustutada.

Ametlikud hoidlad

Alustamiseks tee mõnest neist koopia. Igaüks ehitab oma manifesti ja avaldab end ise GitHub Actionsiga.

Laadi alla App Store’ist