tea tworzy nowe technologie, które zmienią sposób dystrybucji kodu
Max Howell, autor popularnego systemu do zarządzania pakietami homebrew na macOS o nazwie brew , ogłosił, że pracuje nad rozwojem nowego menedżera pakietów o nazwie Tea. Ma on być kontynuacją rozwoju programu brew, wykraczającą poza menedżera pakietów i oferującą ujednoliconą infrastrukturę zarządzania pakietami, która współpracuje ze zdecentralizowanymi repozytoriami.
Tea nie jest koncepcyjnie podobny do tradycyjnych menedżerów pakietów i zamiast paradygmatu „Chcę zainstalować pakiet” wykorzystuje podejście „Chcę użyć pakietu”.
Dokładniej rzecz ujmując, Tea nie posiada polecenia instalacji pakietów jako takiego; zamiast tego wykorzystuje generowanie środowiska do uruchomienia zawartości pakietów, która nie pokrywa się z bieżącym systemem. Pakiety są umieszczane w osobnym katalogu ~/.tea i nie są przypisane do ścieżek bezwzględnych (można je przenosić).
Tea oferuje dwa podstawowe tryby działania: przejście do powłoki poleceń z dostępem do środowiska z zainstalowanymi pakietami oraz bezpośrednie wywoływanie poleceń związanych z pakietami. Na przykład, uruchomienie „tea +gnu.org/wget” spowoduje, że menedżer pakietów pobierze narzędzie wget wraz ze wszystkimi niezbędnymi zależnościami, a następnie zapewni dostęp do powłoki w środowisku, w którym zainstalowane narzędzie wget jest dostępne.
Druga opcja polega na bezpośrednim uruchomieniu: ` tea +gnu.org/wget -qO- tea.xyz/white-paper | tea +charm.sh/glow glow -` , co spowoduje zainstalowanie narzędzia wget i natychmiastowe uruchomienie go w oddzielnym środowisku, pobierając plik, który następnie zostanie wyrenderowany z użyciem glow. Możliwy jest bardziej złożony łańcuch; na przykład, aby pobrać plik `white-paper.pdf` i przetworzyć go za pomocą narzędzia glow, można użyć następującego polecenia (jeśli wget i glow nie są jeszcze zainstalowane, zostaną zainstalowane).
Podobnie możesz bezpośrednio uruchamiać skrypty , przykłady kodu i sprytne frazy, automatycznie ładując narzędzia potrzebne do wykonania zadania.
Bez przykładu uruchom:
tea https://gist.githubusercontent.com/i0bj/2b3afbe07a44179250474b5f36e7bd9b/raw/colors.go --yellow
tea: installing go 1.18.3
go: installing deps
go: running colors.go
…
Zainstaluje zestaw narzędzi językowych Go i uruchomi skrypt colors.go z argumentem „–żółty”.
Aby uniknąć wywoływania polecenia tea za każdym razem, możesz połączyć je jako uniwersalnego menedżera środowiska wirtualnego i program obsługi brakujących programów. W takim przypadku, jeśli uruchomiony program będzie niedostępny, zostanie zainstalowany, a jeśli był zainstalowany wcześniej, zostanie uruchomiony w Twoim środowisku.
W obecnej formie pakiety dostępne dla Tea zebrane są w dwóch kolekcjach , pantry.core i pantry.extra , które zawierają metadane opisujące źródła pobierania pakietów, skrypty kompilacji i zależności.
Kolekcja pantry.core zawiera biblioteki i narzędzia podstawowe, które programiści Tea stale aktualizują i testują. Pantry.extra zawiera pakiety, które nie są jeszcze dobrze ustabilizowane lub są sugerowane przez społeczność. Dostępny jest interfejs sieciowy do przeglądania pakietów.
Proces tworzenia pakietów dla Tea jest znacznie uproszczony i sprowadza się do stworzenia uniwersalnego pliku package.yml (przykład), który nie wymaga dostosowywania pakietu do każdej nowej wersji. Aby odkryć nowe wersje i pobrać jego kod, pakiet można połączyć z GitHub.
Plik opisuje również zależności i udostępnia skrypty kompilacji dla obsługiwanych platform. Zainstalowane zależności są niezmienne (wersja jest stała), co eliminuje powtarzające się sytuacje podobne do incydentu z lewym padem.
W przyszłości planowane jest stworzenie zdecentralizowanych repozytoriów, które nie będą powiązane z żadnym oddzielnym systemem przechowywania danych, a także wykorzystanie rozproszonego blockchaina do przechowywania metadanych oraz zdecentralizowanej infrastruktury do przechowywania pakietów. Wersje będą certyfikowane bezpośrednio przez osoby odpowiedzialne za utrzymanie i weryfikowane przez interesariuszy. Możliwe będzie również dystrybuowanie tokenów kryptowalutowych w celu wsparcia utrzymania, wsparcia, dystrybucji i weryfikacji pakietów.
Na koniec warto wspomnieć, że projekt jest obecnie rozwijany jako aplikacja wieloplatformowa (macOS i Linux są obecnie obsługiwane, a obsługa Windows jest w fazie rozwoju). Kod projektu jest napisany w języku TypeScript i rozpowszechniany na licencji Apache 2.0 (brew został napisany w języku Ruby i wydany na licencji BSD).
Jeśli chcesz dowiedzieć się więcej, zapoznaj się ze szczegółowymi informacjami i instrukcją obsługi herbaty dostępną pod poniższym linkiem.