In Webi installieren Entwickler ihre Tools

sudocurl https://webi.sh/webi | shDieses Repository enthält die primären und Community-Pakete für Webinstall.dev.
$HOME/.local/opt oder $HOME/.local/bin , gegebenenfalls.PATH über $HOME/.config/envman/PATH.envTechnisch mehr:
<package>/releases.js verwandelt die Veröffentlichungs -API des Pakets in ein gemeinsames Format_common/ (dh _common/github.js )_webi/bootstrap.sh ist eine Vorlage, die Systeminformationen gegen einen korrekten Installationsprogramm auszutauschtmacos , amd64 , kann tar,zip,xz auspacken)_webi/template.sh ist die Basis -Installateur -Vorlage mit gemeinsamen Funktionen für<package>/install.sh kann Funktionen zur Übersteuerung _webi/template.sh bereitstellen.curl https://webi.sh/<pkg> => bootstrap-<pkg>.shsh bootstrap-<pkg>.sh => https://webinstall.dev/api/installers/<pkg>@<ver>.sh?formats=zip,tarsh install-<pkg>.sh => Download, Auspacken, Verschieben, Link, Aktualisierungspfad$HOME/.local/opt/<package>-<version> oder $HOME/.local/bin installiert werdensudo nicht brauchen (außer vielleicht für ein einmaliges setcap usw.)Eine Installation besteht aus 5 Teilen in 4 Dateien:
my-new-package/
- README.md (package info in frontmatter)
- releases.js
- install.sh (POSIX Shell)
- install.ps1 (PowerShell)
Siehe folgende Beispiele :
Der Server webinstall.dev verwendet die Liste der von <your-package>/releases.js zurückgegebenen Versionen, um ein Shell-Skript mit den meisten vordefinierten Variablen und Funktionen zu generieren.
Sie füllen nur die Lücken aus.
Erstellen Sie einfach ein leeres Verzeichnis und führen Sie die Tests aus, bis Sie ein gutes Ergebnis erzielen.
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/Kopieren Sie einfach das Format aus einem der vorhandenen Pakete. Es ist so:
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 !
``` Alles, was Sie in diesem Schritt tun, ist nur von einer Form von JSON oder CSV oder Registerkarte oder was auch immer zu einem Format, das von webi verstanden wird.
ripgrep/releases.js (das _common/github.js verwendet)golang/releases.js oder node/releases.js .Es sieht so aus:
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 ;
} ) ;
} ;(Optional, falls erforderlich) Bash -Variablen, die Sie möglicherweise definieren:
# 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")"(Erforderlich) Eine Versionsprüffunktion
pkg_get_current_version () {
# foobar-v1.1.7 => 1.1.7
echo " $( foobar --version | head -n 1 | sed ' s:foobar-v:: ' ) "
}Für den Rest der Funktionen können Sie die Beispiele kopieren/einfügen:
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 Siehe webi/template.sh
Diese Variablen werden vom Server festgelegt:
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 für GitHub speziell)