Webi adalah cara pengembang menginstal alat mereka

sudocurl https://webi.sh/webi | shRepositori ini berisi paket primer dan diseret komunitas untuk WebInstall.dev.
$HOME/.local/opt atau $HOME/.local/bin , yang sesuai.PATH melalui $HOME/.config/envman/PATH.envLebih teknis:
<package>/releases.js mengubah API rilis paket menjadi format umum_common/ (yaitu _common/github.js )_webi/bootstrap.sh adalah templat yang bertukar informasi sistem dengan penginstal yang benarmacos , amd64 , dapat membongkar tar,zip,xz )_webi/template.sh adalah templat penginstal dasar dengan fungsi umum untuk<package>/install.sh dapat menyediakan fungsi untuk mengganti _webi/template.shcurl https://webi.sh/<pkg> => bootstrap-<pkg>.shsh bootstrap-<pkg>.sh => https://webinstall.dev/api/installers/<pkg>@<ver>.sh?formats=zip,tarsh install-<pkg>.sh => Unduh, Buka Paket, Pindahkan, Tautan, Perbarui Jalur$HOME/.local/opt/<package>-<version> atau $HOME/.local/binsudo (kecuali mungkin untuk setcap satu kali, dll)Instalasi terdiri dari 5 bagian dalam 4 file:
my-new-package/
- README.md (package info in frontmatter)
- releases.js
- install.sh (POSIX Shell)
- install.ps1 (PowerShell)
Lihat contoh -contoh ini:
Server webinstall.dev menggunakan daftar rilis yang dikembalikan oleh <your-package>/releases.js untuk menghasilkan skrip shell dengan variabel dan fungsi yang paling diperlukan yang telah ditentukan sebelumnya.
Anda hanya mengisi kekosongan.
Cukup buat direktori kosong dan jalankan tes sampai Anda mendapatkan hasil yang baik.
git clone [email protected]:webinstall/webi-installers.git
pushd ./webi-installers/
git submodule update --init
npm clean-installmkdir -p ./new-package/
node _webi/test.js ./new-package/Cukup salin format dari salah satu paket yang ada. Ini seperti ini:
README.md :
---
title : Node.js
homepage : https://nodejs.org
tagline : |
JavaScript V8 runtime
description : |
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine
---
``` sh
node -e ' console.log("Hello, World!") '
> Hello, World !
``` Yang Anda lakukan pada langkah ini hanyalah menerjemahkan dari satu bentuk JSON atau CSV atau TAB atau apa pun, ke format yang dipahami oleh webi .
ripgrep/releases.js (yang menggunakan _common/github.js )golang/releases.js atau node/releases.js .Sepertinya ini:
releases.js :
module . exports = function ( ) {
return github ( null , owner , repo ) . then ( function ( all ) {
// if you need to do something special, you can do it here
// ...
return all ;
} ) ;
} ;(Opsional, jika perlu) Variabel bash yang dapat Anda definisikan:
# Define this if the package name is different from the command name (i.e. golang => go)
pkg_cmd_name= " foobar "
# These are used for symlinks, PATH, and test commands
pkg_dst= " $HOME /.local/opt/foobar "
pkg_dst_cmd= " $HOME /.local/opt/foobar/bin/foobar "
# pkg_dst_bin="$(dirname "$pkg_dst_cmd")"
# These are the _real_ locations for the above
pkg_src= " $HOME /.local/opt/foobar-v $WEBI_VERSION "
pkg_src_cmd= " $HOME /.local/opt/foobar-v $WEBI_VERSION /bin/foobar "
# pkg_src_bin="$(dirname "$pkg_src_cmd")"(Diperlukan) Fungsi Periksa Versi yang melucuti semua sampah non-versi
pkg_get_current_version () {
# foobar-v1.1.7 => 1.1.7
echo " $( foobar --version | head -n 1 | sed ' s:foobar-v:: ' ) "
}Untuk sisa fungsi yang dapat Anda salin/tempel dari contoh:
pkg_format_cmd_version () {} # Override, pretty prints version
pkg_link # Override, replaces webi_link()
pkg_pre_install () { # Override, runs any webi_* commands
webi_check # for $HOME/.local/opt tools
webi_download # for things that have a releases.js
webi_extract # for .xz, .tar.*, and .zip files
}
pkg_install () {} # Override, usually just needs to rename extracted folder to
# "$HOME/.local/opt/$pkg_cmd_name-v$WEBI_VERSION"
pkg_post_install () { # Override
webi_path_add " $pkg_dst_bin " # should probably update PATH
}
pkg_done_message () {} # Override, pretty print a success message Lihat webi/template.sh
Variabel -variabel ini akan ditetapkan oleh server:
WEBI_PKG=example@v1
WEBI_TAG=v1
WEBI_HOST=https://webinstall.dev
WEBI_RELEASES=https://webinstall.dev/api/releases/example@v1 ? os=macos & arch=amd64 & pretty=true
WEBI_CSV=v1.0.2,
WEBI_VERSION=1.0.2
WEBI_MAJOR=1
WEBI_MINOR=0
WEBI_PATCH=2
WEBI_LTS=
WEBI_CHANNEL=stable
WEBI_EXT=tar
WEBI_PKG_URL=https://cdn.example.com/example-macos-amd64.tar.gz
WEBI_PKG_FILE=example-macos-amd64.tar.gzPKG_NAME=example
PKG_OSES=macos,linux,windows
PKG_ARCHES=amd64,arm64,x86
PKG_FORMATS=zip,xzWEBI_TMP= ${WEBI_TMP :- " $( mktemp -d -t webinstall-foobar.XXXXXXXX ) " }
WEBI_SINGLE= " " webi_check # Checks to see if the selected version is already installed (and re-links if so)
webi_download # Downloads the selected release to $HOME/Downloads/webi/<package-name>.tar.gz
webi_extract # Extracts the download to /tmp/<package-name>-<random>/
webi_path_add /new/path # Adds /new/path to PATH for bash, zsh, and fish
webi_pre_install # Runs webi_check, webi_download, and webi_extract
webi_install # Moves extracted files from $WEBI_TMP to $pkg_src
webi_link # replaces any existing symlink with the currently selected version
webi_post_install # Runs `webi_path_add $pkg_dst_bin`@github.com/node/node )ghi node/node untuk GitHub secara khusus)