close

tea 是統一包裝的基礎設施。來自 brew 的創建者,tea 是一個獨立的、適用於所有平台的二進制文件,使整個開源生態系統觸手可及。打破編程社區之間的孤島,把使用完全不同的工具和語言的腳本放在一期,通過簡單的一行代碼與世界分享。

不過需要注意的是現在 tea 還沒到 v1 版本,所以可能在日常使用中仍有一些小問題,當然這也意味着你更應該參與進來,這是關鍵和黃金時期,參與其中既容易又非常有趣。

tea/cli 0.13.8

開源是一個寶庫 - 但這些寶箱都用粗糙的鎖鎖住了。tea 就是關鍵:

$tea+rust-lang.orgtea:installingrust-lang.organd13otherpackagesintoatemporarysandboxwhendonetype:exittea$cat<<EOF>hello.rsfnmain(){println!("HelloWorld!");}EOF$rustchello.rs-ohello$./helloHelloWorld!tea$exit$rustccommandnotfound:rustc

tea 不安裝軟件包,至少不是傳統意義上的,我們將它們存放在 ~/.tea 中,你的系統保持原始狀態,並與 tea 的操作隔離開來,但當你需要使用的時候,一切都準備好了。

† 後面是一個包管理器,其中所有的軟件包都是可重定位的。

tea 的 +pkg 語法讓整個開源生態系統觸手可及,如果你在 +pkg 處,則會發生上述情況,我們在環境中打開一個包含這些包的新 shell,但如果你繼續輸入,你就可以構建直接使用。

#^^一行程序啟動本地web服務器並進行實時加載$tea+nodejs.orgnpx--yesbrowser-syncstart--server$sh<(curltea.xyz)+nodejs.orgnpx--yesbrowser-syncstart--server#^^同樣一行,適用於有網絡的任何用戶#(如果tea已經安裝了,則直接使用,如果沒有安裝,將創建一個臨時的沙盒環境)

組合一切,結合一切——就像 UNIX 哲學一樣,這樣就可以把我們帶入 tea 的管道 pipelines 中:

$tea+gnu.org/wgetwget-qO-tea.xyz/white-paper|tea+charm.sh/glowglow-

上面的示例命令會下載 tea 的白皮書文件,並使用 charm 非常優秀的 glow 終端 markdown 渲染器進行渲染。這是一個基本的示例,但 UNIX 受包管理器的限制實在太久了,這也是 tea 旨在克服的一個基本限制。

另外值得注意的是,使用 -X 語法可以更簡潔地表達:

$tea-Xwget-qO-tea.xyz/white-paper|tea-Xglow-

如果你想試用最新版本的 node,但不確定它是否適用於你的項目?tea 也可以非常容器實現。

$tea+nodejs.org^19npmstart

同樣可以使用一行命令來創建一個 react 應用:

$sh<(curltea.xyz)-Xnpxcreate-react-appmy-apptea:通用解釋器$teahttps://gist.githubusercontent.com/i0bj/2b3afbe07a44179250474b5f36e7bd9b/raw/colors.go--yellowtea:installinggo1.18.3go:installingdepsgo:runningcolors.go…

在這個基本的例子中,我們知道要根據文件擴展名先安裝 go,很明顯,對吧?

$teafavicon-generator.shinput.pngtea:installingimage-magick,optipng,guetzliand3otherpackages……output:favicon-128.png…$catfavicon-generator.sh#!/usr/bin/envtea#---#args:[/bin/sh,-e]#dependencies:#imagemagick.org:4#optipng.sourceforge.net:1#[snip]…#---

tea 讀取 YAML 文件的前端信息,允許你在整個開源生態系統中為腳本、gists 和一行程序進行操作。在運行時,腳本在其環境中具有這些依賴項,但系統的其餘部分永遠不會知道它們。

我們還知道更多的魔法:

$tea-Xnodetea:installingnode@18.9.1WelcometoNode.jsv18.9.1.Type".help"formoreinformation.>

通常 tea 使用包的完全限定名稱,但我們知道它們提供什麼工具,所以只要你知道正在查找的是什麼工具,我們就可以弄清楚其餘的相關依賴。將來版本中會提供如下的方式來支持依賴聲明:

---dependencies:nodejs.org:19npmjs.com:package.json:dependencies:react:^18---tea:通用虛擬環境管理器$denozsh:commandnotfound:deno$echo$PATH/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin$cdmy-project$denotea:installingdeno.land^1.22deno1.27.0>^D$envPATH=~/.tea/deno.land/v1.27.0/bin:/usr/bin:/binSRCROOT=/src/my-projectVERSION=……

同樣比如需要 34 個依賴項來編譯我們的白皮書,但有了 tea 就非常簡單的了:

$gitclonehttps://github.com/teaxyz/white-paper$cdwhite-paper$make#†tea:installingpandoc.organd33otherdependencies……$opentea.white-paper.pdf

我們的白皮書依賴項在我們的 README 中以簡單的 markdown 格式編寫。tea 只需進入目錄即可為他們設置一個虛擬環境。

† 在 macOS 上,你可能需要先執行 tea -S,因為我們重新使用系統 make(我們嘗試檢測系統安裝的 deps),因此我們無法攔截調用。

基本原理

tea 使用 shell hook 將你項目所需的工具插入到 shell 環境中。開發現在在包管理器級別進行了容器化,你不再需要擔心你的團隊使用不同版本的基礎工具,也不必擔心系統級更新會破壞你正在處理的不同項目。

有數以千計的版本管理器來支持成千上萬的工具,也許現在是時候停止這種重複工作的時候了。項目可以準確地指定他們需要什麼,你可以在今天、明天或十年後準確地滿足這些需求。

在上面的示例中,如果 deno 尚未安裝,我們將插入一個 hook,以便嘗試執行它時將首先安裝它。

停止使用 Docker

Docker 非常適合部署和交叉編譯,但是......讓我們面對現實吧:它對開發人員來說很糟糕。

Docker 扼殺了 builders,它限制了你;技術不斷進步,但你的 Docker 容器仍然不能動,沒有人知道如何使用 docker,一旦配置了 Dockerfile,就沒有人敢碰它了。

讓我們面對現實吧,讓你的個人開發和調試工具在這個鏡像中工作是非常令人沮喪的,為什麼要限制你的潛力呢?

繼續使用用 Docker 部署,但是用 tea 來開發。

然後當你部署時,你也可以用 tea 來安裝這些依賴組件。

tea 與系統打包程序不同,它有適當的版本控制,所以使用 tea,你的部署實際上會更穩定。

可執行的 Markdown

Markdown 已經成為了開發的標準文檔格式,與其編寫帶有注釋的腳本,不如編寫可以運行的文檔。

$tea.#interprets`#GettingStarted`,couldalsobe`tea./README.md`tea:npminstalltea:npmstart$sh<(curltea.xyz)https://github.com/my/projecttea:cloning…tea:npmstart$gitclonehttps://github.com/my/project$cdproject$teabuildtea:executing`#Build`

在 CI 中使用這些腳本很簡單:

steps:-uses:teaxyz/setup@v0with:target:build

可以查看 teaxyz/setup 了解們的 GitHub Action 執行的所有操作。

安裝使用

tea 是一個獨立的二進制文件,因此,如果你願意,可以自己下載安裝,我們推薦使用我們的安裝程序:

$sh<(curlhttps://tea.xyz)%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed1009259100925900795600:00:010:00:01--:--:--8030hi👋let’ssetuptea•we』llputithere:/Users/cnych/.tea•everythingteainstallsgoesthere•(wewon’ttouchanythingelse)│docshttps://github.com/teaxyz/cli#getting-startedk,weinstalled/Users/cnych/.tea/tea.xyz/v0.13.8/bin/teaonesecond!tea’snotinyourpath!│wemayneedtoaskforyourrootpassword(viasudoobv.)Password:wantmagic?tea’sshellmagicworksviaaone-lineadditiontoyour~/.zshrcit’snotrequired,butwedorecommendit.│docshttps://github.com/teaxyz/cli#usage-as-an-environment-manageryou’reallset!tryitout:┌───────────────────────────────────────────────────────────────────────────┐│tea+gnu.org/wgetwget-qO-tea.xyz/white-paper|tea+charm.sh/glowglow-│└───────────────────────────────────────────────────────────────────────────┘

† 如果你想要 tea 的虛擬環境管理器功能,上面的安裝方式是最簡單的。

協議

Tea.xyz 是以去中心化協議的模式激勵開源社區。通過 tea 協議,開源軟件包維護者,可以把自己負責的版本發布到由區塊鏈驅動的去中心化註冊倉庫,從而消除單一故障源,發布無法篡改的版本,允許社區管理整個開源生態系統區域,避免外部影響。

tea 可以激勵開源生態系統,主要方式是是通過讓參與 tea 協議的開發者,將能夠獲取的價值與所依賴並希望保護的軟件包進行質押。tea 協議的圖表可以提供不可篡改的的軟件包註冊、對於依賴性要求、驗證軟件包的真實性,以及通過預言機告知 tea 報酬激勵算法。系統性的通貨膨脹,基於算法會被分攤到所有軟件包上,如果發現安全或開發問題,開發者可以通過上傳證據,可以針對軟件包的索賠,系統會對有錯誤和安全上傳方進行索賠。開源社區的成員可以審查軟件包的質量問題,而 tea 協議可以通過制定比例的削獎勵減,來應對這些審查。

Git 倉庫:https://github.com/teaxyz/cli


▲點擊上方卡片關注Github愛好者,獲取前沿開源作品
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()