Apa itu repositori
Clink membaca pek daripada repositori GitHub awam. Anda menambah satu mengikut namanya, Clink membaca keluaran terbarunya, dan setiap fail disahkan sebelum dipasang. Tiada apa-apa dimuat naik, dan tiada apa-apa milik anda berjalan pada pelayan.
Masukkan owner/repository, github.com/owner/repository atau URL HTTPS penuh. Clink mengesahkan setiap manifes keluaran dan fail sebelum apa-apa boleh dimuat turun.
Pilih satu jenis
Setiap jenis pek mempunyai sambungan failnya sendiri dan nama koleksinya sendiri di dalam manifes, dan Clink mengenakan had saiznya sendiri pada setiap satu. Pilih baris yang anda terbitkan dan patuhi ia: tema yang difailkan di bawah panel memang tidak akan dibaca.
| Jenis | Fail | Koleksi | Fail terbesar, dalam bait | Repositori rasmi |
|---|---|---|---|---|
| Tema | .clinktheme | themes | 128,000 | anti-ltd/clink-themes |
| Susun atur | .clinklayout | layouts | 512,000 | anti-ltd/clink-layouts |
| Profil | .clinkprofile | profiles | 256,000 | anti-ltd/clink-profiles |
| Bunyi | .clinkpack | sounds | 512,000 | anti-ltd/clink-sounds |
| Fon | .otf .ttf | fonts | 32,000,000 | anti-ltd/clink-fonts |
| Panel | .clinkpanel | panels | 50,000 | anti-ltd/clink-panels |
| Tindakan | .clinkext | actions | 48,000 | anti-ltd/clink-actions |
| Plugin | .clinkplugin | plugins | 66,000 | anti-ltd/clink-plugins |
Pek bahasa ialah pengecualiannya. Di sana, sebuah pek ialah satu set fail leksikon dan model, bukan satu dokumen, dan repositori rasmi membawa rantaian alat yang membinanya. Mulakan dengan README di sana, bukan dengan halaman ini.
Mulakan daripada repositori rasmi
Jalan terpantas ialah fork. Ia datang dengan folder pek, pembina manifes dan aliran kerja keluaran yang sudah bersambung, serta contoh yang berfungsi untuk disalin.
# 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.clinkpanelKekalkan tools/ dan .github/workflows/. Kedua-duanya yang menukar satu tolakan menjadi keluaran yang boleh dibaca Clink, dan fork tanpa keduanya tidak menerbitkan apa-apa.
Atau bina satu daripada tiga fail
Tiada apa yang istimewa tentang sebuah repositori. Ia perlukan folder pek, skrip yang menulis manifes, dan aliran kerja yang mengeluarkan keluaran.
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 releaseAliran kerja itu melakukan tiga perkara: membina semula manifes, memadam keluaran sebelumnya, dan menerbitkan satu keluaran baharu bertanda latest, dengan fail pek dan manifes dilampirkan. Itu sahaja.
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 }}" }Pembina itu menyusur folder dan menulis satu entri bagi setiap fail. Hanya di situ cincangan dan kiraan bait dihasilkan, sebab itulah ia berjalan dalam aliran kerja dan bukan secara manual.
#!/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))Manifes
Setiap keluaran menerbitkan manifest.json di sebelah fail pek, dan Clink membacanya daripada keluaran terbaru di https://github.com/<owner>/<repository>/releases/latest/download/manifest.json. Setiap entri menamakan fail itu, alamatnya di dalam keluaran yang sama, cincangan SHA-256nya dan kiraan baitnya yang tepat.
{
"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
}
}
]
}Nama koleksi mesti sepadan dengan jenisnya. Panel di bawah panels, tema di bawah themes, dan seterusnya mengikut jadual di atas.
Cuba dahulu sebelum menerbitkan
Pek di dalam repositori ialah fail yang sama yang boleh anda buka sendiri, jadi cuba jalan pendek dahulu: AirDrop ke telefon anda, atau letakkan dalam Fail dan buka dengan Clink. Kemudian semak manifes yang ditulis oleh skrip anda.
python3 tools/build-manifest.py
cat manifest.json- Jalankan pembina itu. Ia menulis semula manifest.json daripada apa sahaja yang ada dalam folder ketika itu.
- Baca apa yang ditulisnya. Setiap entri patut menamakan fail yang benar-benar ada, dengan kiraan bait yang sepadan.
- Buka fail pek itu sendiri dalam Clink dan gunakannya. Panel atau tindakan akan mendarat dalam editornya, tempat anda boleh menjalankannya.
Menerbitkan
git add Panels manifest.json
git commit -m "Add my first panel"
git pushTolak ke main dan aliran kerja mengambil alih. Ia menggantikan keluaran latest dan bukan menambah kepadanya, jadi tolakan terbaharu sentiasa yang diterima orang lain.
Buka tab ini selepas repositori menerbitkan keluaran.
Tambah ia dalam Clink
- Buka Umum, kemudian Repositori, dan tambah pemilik/repositori.
- Buka tab bagi jenis anda dan tarik untuk menyegarkan. Pek anda disenaraikan dengan nama yang diberikan oleh manifes.
- Ketik satu untuk memuat turun. Clink mengesahkannya, kemudian memasangnya seperti mana-mana pek lain.
Menambah repositori sudah memadai untuk pek data: tema, susun atur, profil, bunyi, fon dan bahasa. Panel, tindakan dan plugin membawa logik, jadi setiap repositori memerlukan suisnya sendiri sebelum Clink memasang mana-mana daripadanya, dan aplikasi bertanya pada kali pertama.
Panel mengandungi logik interaktif terkawal. Benarkan hanya repositori yang anda percayai.
Apa yang Clink semak
- Alamatnya HTTPS di github.com, di bawah keluaran repositori yang anda tambah.
- Muat turun itu tepat sama dengan kiraan bait dalam manifes, dan cincangan SHA-256 sepanjang 64 aksaranya sepadan.
- Fail itu membawa sambungan yang betul dan dinyahkod sebagai jenis pek yang didakwanya.
- Panel, tindakan dan plugin melepasi dasar sumber sebelum disimpan.
Apabila muat turun ditolak, ia salah satu daripada lima ini. Mesej dalam app sengaja dibuat ringkas, jadi semak mengikut urutan.
| Semakan | Ditolak apabila |
|---|---|
github.com | Alamatnya bukan HTTPS di github.com, di bawah keluaran repositori yang anda tambah. Manifes tidak boleh menunjuk ke tempat lain, walaupun ke repositori anda yang lain. |
byteCount | Fail itu bukan tepat saiz yang didakwa manifes, atau melebihi had bagi jenisnya. Membina semula manifes selepas setiap suntingan menyelesaikan kebanyakan kes ini. |
sha256 | Cincangan tidak sepadan dengan baitnya. Biasanya manifes ditulis sebelum perubahan terakhir pada fail itu. |
path | Nama fail tidak berakhir dengan sambungan yang dikehendaki jenis itu, atau ia cuba keluar daripada keluaran dengan dua titik. |
source | Panel, tindakan atau plugin tidak melepasi dasar sumber: terlalu panjang, atau membawa serpihan yang ditolak dasar itu. |
Mengemas kini, dan menarik balik sesuatu
Id ialah nama fail tanpa sambungannya, dan itulah yang menjadikan satu kemas kini benar-benar kemas kini. Kekalkan namanya dan keluaran baharu menggantikan salinan yang sudah ada pada orang. Tukar nama fail dan anda telah menerbitkan pek kedua di sebelah yang pertama.
Membuang pek daripada repositori menghentikan muat turun baharu. Ia tidak sampai kepada telefon yang sudah memilikinya, jadi anggap keluaran yang buruk sebagai sesuatu untuk diganti, bukan dipadam.
Repositori rasmi
Fork mana-mana daripada ini untuk bermula. Setiap satu membina manifesnya sendiri dan menerbitkan dirinya dengan GitHub Actions.