This commit is contained in:
Max Howell 2023-04-14 05:49:34 -04:00
parent 0e172fe9ab
commit bbc69d134f
No known key found for this signature in database
GPG key ID: 741BB84EF5BB9EEC
3 changed files with 148 additions and 14 deletions

View file

@ -6,7 +6,9 @@ The easiest way to install tea is with our installer:
sh <(curl https://tea.xyz) sh <(curl https://tea.xyz)
``` ```
> Using `fish`? Then: `sh <(curl https://tea.xyz | psub)` {% hint style="question" %}
`fish` user? Then you need `sh <(curl https://tea.xyz | psub)` instead.
{% endhint %}
The script installs to `~/.tea` and sets up magic (we ask politely first). The script installs to `~/.tea` and sets up magic (we ask politely first).
@ -57,11 +59,13 @@ Both aarch64 (arm64) and x86-64 for these platforms:
* Linux glibc >=2.28 (consult [repology](https://repology.org/project/glibc/versions)) * Linux glibc >=2.28 (consult [repology](https://repology.org/project/glibc/versions))
* WSL >=2 * WSL >=2
{% hint style="info" %}
`linux-aarch64` builds are done using a dockerized Debian image on Apple arm64 `linux-aarch64` builds are done using a dockerized Debian image on Apple arm64
processors. We have tested and confirmed functionality on Raspberry Pi4 running processors. We have tested and confirmed functionality on Raspberry Pi4 running
Ubuntu 22.04.2 LTS, and it should work on similar 64-bit Pi Foundation hardware Ubuntu 22.04.2 LTS, and it should work on similar 64-bit Pi Foundation hardware
with a sufficient glibc, which should include the last several releases of with a sufficient glibc, which should include the last several releases of
Raspbian Linux. 32-bit CPU builds are not being done at this time. Raspbian Linux. 32-bit CPU builds are not being done at this time.
{% endhint %}
We want to support Windows native and after that every platform; yes even We want to support Windows native and after that every platform; yes even
your NAS and IoT devices. Were going to get the above sorted first though. your NAS and IoT devices. Were going to get the above sorted first though.

View file

@ -14,9 +14,13 @@ Magic is entirely optional, tea is still entirely usable without it.
{% hint style="warning" %} {% hint style="warning" %}
Our “command not found” magic only works at a terminal prompt. Thus eg. Our “command not found” magic only works at a terminal prompt. Thus eg.
VSCode wont magically find `deno`. Shell scripts wont automatically your editor wont automagically install `deno`. Shell scripts wont automatically
install tools they try to run. This is intentional. *Magic should not lead install tools they try to run. This is intentional. *Magic should not lead
to anarchy*. to anarchy*.
We try where possible to have tools magically *find* packages if they are
already installed. Thus eg. VSCode will find your packages in your [developer
environment]
{% endhint %} {% endhint %}
Our magic means that tea packages are not generally accessible from the rest Our magic means that tea packages are not generally accessible from the rest
@ -95,3 +99,6 @@ Thus you can make a script that can effortlessly use any tool from the open
source ecosystem. If they have tea installed it uses their installation, if source ecosystem. If they have tea installed it uses their installation, if
not it installs everything (including tea itself) to a temporary sandbox not it installs everything (including tea itself) to a temporary sandbox
thats gone when the script completes. thats gone when the script completes.
[developer environment]: /using-tea/developer-environments.md

View file

@ -1,28 +1,151 @@
# Sandbox Usage `tea`s magic means you just type the commands you want and `tea` takes care
of installing the tools and all their dependencies automagically.
Without any other setup, play with the tools you want temporarily: ```sh
$ node --eval 'console.log("node: hello world")'
tea: installing node and its dependencies…
node: hello world
```
`sh <(curl https://tea.xyz) +python.org +pip.pypa.io sh` {% hint style="info" %}
Magic is optional, if you didnt set it up, prefix with `tea`:
```sh
$ tea node --version
tea: installing node and its dependencies…
v19.8.1
```
{% endhint %}
Most package managers only offer the (almost) latest version of tools. `tea`
not only offers the latest versions immediately it knows you need to be able
to pick and choose what versions of tools you use:
```sh
$ node^16 --version
tea: installing nodejs.org^16
v16.8.1
```
# Scripts
`tea` typically knows what you need to run a script:
```sh
$ tea my-script.py
tea: installing python…
# tea executes the script
```
When the package requirements are more advanced you can inject packages into
the script using `tea`s +pkg syntax:
```sh
$ tea +python.org +gnu.org/coreutils my-script.sh
tea: installing dependencies…
# tea executes the script
```
{% hint style="info" %}
Notably you can also use our one-liner:
```sh
$ sh <(curl tea.xyz) +python.org +gnu.org/coreutils https://example.com/my-script.sh
```
If the user has `tea` installed, the one-liner uses the already installed
`tea`. If they dont it *doesnt install `tea`*; it does a temporary install
without changing anything on their system.
{% endhint %}
# ... or With tea Installed # Sandboxes
Same as above, but with 'tea' instead of the "sh <(...)", thus: An idiomatic use of `tea`s underlying functionality is the ability
to try out new projects in a temporary sandbox:
`tea +python.org +pip.pypa.io sh` ```sh
$ tea +bun.sh sh
```
{% hint style="info" %}
And of course, with our one-liner this becomes quite tweetable:
```sh
$ sh <(curl tea.xyz) tea +bun.sh sh
```
{% endhint %}
# ... or With a [Developer Environment](https://docs.tea.xyz/features/developer-environments): # Developer Environments
Add the tool dependencies to your dev docs and enter a shell where it's all available: With magic you can just step into a directory and tea ensures the correct
versions of all the tools you need are loaded:
`tea -E sh` ```sh
$ cd my-node-project
$ node --version
16.8.1
$ cat .node-version
16
```
For more details see the
[Developer Environments](/features/developer-environments)
documentation.
# VSCode
# ... and With [Magic](https://docs.tea.xyz/features/magic) If you installed teas magic then projects will magically find their tools.
`cd my-sandboxed-project` At this time you will need to run `tea --sync --env` or `tea -SE` at least
once to ensure the tools in the developer environment are installed first.
... and everything is just _there_. # Other Editors
If your editor checks the shell for its environment for project directories
youll find that everything you need is readily installed. Otherwise our
recommended solution is to create a symlink to `tea` with the name of the tool
you need exposed to GUI tools like editors.
```
$ sudo ln -s ~/.tea/tea.xyz/v0/bin/tea /usr/local/bin/node
$ /usr/local/bin/node
tea: installing node…
```
Some tools (not all!) will work when called directly. All tools are installed
into versioned, namespaced compartmentalized directories in `~/.tea`:
```
~/.tea/nodejs.org/v16.8.1/bin/node
```
We also create proxy version symlinks that can be useful for such tools:
```
$ ls ~/.tea/nodejs.org/
v* -> v16.8.1
v16 -> v16.8.1
v16.8 -> v16.8.1
v16.8.1
```
# Updating Packages
```sh
$ tea --sync
# ^^ updates the pantry
```
Synchronizing ensures the package definitions `tea` knows about are up to
date. It doesnt update any packages.
```sh
$ tea -S +nodejs.org
# ^^ updates node
```