From: AJ ONeal Date: Thu, 9 Jul 2020 11:46:17 +0000 (+0000) Subject: add webi dat dat dat X-Git-Url: https://git.josue.xyz/?p=webi-installers%2F.git;a=commitdiff_plain;h=c77b2afba8be0e2aca21ad2647e7e847e4a8aa14 add webi dat dat dat --- diff --git a/bat/README.md b/bat/README.md index 878fda4..6b83011 100644 --- a/bat/README.md +++ b/bat/README.md @@ -3,10 +3,21 @@ title: bat homepage: https://github.com/sharkdp/bat tagline: | bat: A cat(1) clone with syntax highlighting and Git integration. -description: | - `bat` is pretty much what `cat` would be if it were developed today's in the world of Markdown, git, etc. --- +## Updating `bat` + +```bash +webi bat@stable +``` + +Use the `@beta` tag for pre-releases. + +## Cheat Sheet + +> `bat` is pretty much what `cat` would be if it were developed today's in the +> world of Markdown, git, etc. + ### How to run on Windows 10 On Windows 10 you'll get an error like this: diff --git a/brew/README.md b/brew/README.md new file mode 100644 index 0000000..075d6b2 --- /dev/null +++ b/brew/README.md @@ -0,0 +1,40 @@ +--- +title: Homebrew +homepage: https://brew.sh +tagline: | + Brew: The Missing Package Manager for macOS (and Linux). +--- + +## Updating `brew` + +`brew` has its own built-in upgrade management. + +```bash +brew update +brew upgrade +``` + +## Cheat Sheet + +> Homebrew installs the stuff you need that Apple (or your Linux system) didn’t. + +### How to install CLI packages + +```bash +brew update +brew install node +``` + +### How to install GUI packages + +```bash +brew update +brew cask install docker +``` + +### Where are things installed? + +```bash +/usr/local/Cellar/ +/opt/homebrew-cask/Caskroom/ +``` diff --git a/brew/install.sh b/brew/install.sh index 5826161..34b5a0d 100644 --- a/brew/install.sh +++ b/brew/install.sh @@ -1,15 +1,4 @@ #!/bin/bash -# title: Homebrew -# homepage: https://brew.sh -# tagline: | -# Brew: The Missing Package Manager for macOS (and Linux). -# description: | -# Homebrew installs the stuff you need that Apple (or your Linux system) didn’t. -# examples: | -# ```bash -# brew install node -# ``` - # Straight from https://brew.sh /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" diff --git a/caddy/README.md b/caddy/README.md index f7f4ae5..db52f69 100644 --- a/caddy/README.md +++ b/caddy/README.md @@ -3,10 +3,62 @@ title: Caddy homepage: https://github.com/caddyserver/caddy tagline: | Caddy is a fast, multi-platform web server with automatic HTTPS. -description: | - Caddy makes it easy to use Let's Encrypt to handle HTTPS (TLS/SSL) and to reverse proxy APIs and WebSockets to other apps - such as those written node, Go, python, ruby, and PHP. --- +## Updating `caddy` + +```bash +webi caddy@stable +``` + +Use the `@beta` tag for pre-releases, or `@x.y.z` for a specific version. + +## Cheat Sheet + +> Caddy makes it easy to use Let's Encrypt to handle HTTPS (TLS/SSL) and to +> reverse proxy APIs and WebSockets to other apps - such as those written node, +> Go, python, ruby, and PHP. + +### How to serve a directory + +```bash +caddy file-server --browse --listen :4040 +``` + +### How to redirect and reverse proxy + +Here's what a fairly basic `Caddyfile` looks like: + +```txt +# redirect www to bare domain +www.example.com { + redir https://example.com{uri} permanent +} + +example.com { + # turn on standard streaming compression + encode gzip zstd + + # reverse proxy /api to :3000 + reverse_proxy /api/* localhost:3000 + + # serve static files from public folder, but not /api + @notApi { + file { + try_files {path} {path}/ /index.html + } + not path /api/* + } + route { + rewrite @notApi {http.matchers.file.relative} + } + root * /srv/example.com/public/ + file_server +} +``` + +And here's how you run caddy with it: + ```bash -caddy start +caddy run --config ./Caddyfile ``` diff --git a/deno/README.md b/deno/README.md index 84f304e..38dc4f7 100644 --- a/deno/README.md +++ b/deno/README.md @@ -3,10 +3,23 @@ title: Deno homepage: https://github.com/denoland/deno tagline: | Deno: A secure runtime for JavaScript and TypeScript. -description: | - Deno proves that lightning does strike twice. It's the ease of use of node, the intentional tooling of Go, and built in Rust. --- +## Updating `deno` + +```bash +webi deno@stable +``` + +Use the `@beta` tag for pre-releases, or `@x.y.z` for a specific version. + +## Cheat Sheet + +> Deno proves that lightning does strike twice. It's the ease of use of node, +> the intentional tooling of Go, and built in Rust. + +### Hello World + The obligatory Hello World ```bash diff --git a/flutter/README.md b/flutter/README.md new file mode 100644 index 0000000..d440f85 --- /dev/null +++ b/flutter/README.md @@ -0,0 +1,26 @@ +--- +title: Flutter +homepage: https://flutter.dev +tagline: | + Flutter is a UI Toolkit for mobile, web, and desktop. +--- + +## Updating `flutter` + +```bash +webi flutter@stable +``` + +Use `@lts` for long-term support and the `@beta` and `@alpha` tags for +pre-releases and dev releases, or `@x.y.z` for a specific version. + +## Cheat Sheet + +> Flutter is Google’s UI toolkit for building beautiful, natively compiled +> applications for mobile, web, and desktop from a single codebase. + +### How to create a new app + +```bash +flutter create my_app +``` diff --git a/flutter/package.yash b/flutter/package.yash deleted file mode 100644 index a4f672d..0000000 --- a/flutter/package.yash +++ /dev/null @@ -1,13 +0,0 @@ -# title: Flutter -# homepage: https://flutter.dev -# tagline: | -# Flutter is a UI Toolkit for mobile, web, and desktop. -# description: | -# Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. -# examples: | -# -# ```bash -# flutter create my_app -# ``` - -END diff --git a/git/README.md b/git/README.md index f635c5c..443a220 100644 --- a/git/README.md +++ b/git/README.md @@ -3,12 +3,20 @@ title: Git homepage: https://git-scm.com tagline: | git: --fast-version-control -description: | - > Git is a fast, scalable, distributed revision control system with an - > unusually rich command set that provides both high-level operations and full - > access to internals. --- +## Updating `git` + +```bash +webi git@stable +``` + +## Cheat Sheet + +> Git is a fast, scalable, distributed revision control system with an unusually +> rich command set that provides both high-level operations and full access to +> internals. + Github's [Git 'Hello World'](https://guides.github.com/activities/hello-world/) is a good place to get started if you're new to git. diff --git a/gitea/README.md b/gitea/README.md new file mode 100644 index 0000000..38b36e1 --- /dev/null +++ b/gitea/README.md @@ -0,0 +1,31 @@ +--- +title: Gitea +homepage: https://github.com/go-gitea/gitea +tagline: | + Gitea: Git with a cup of tea, painless self-hosted git service. +--- + +## Updating `gitea` + +```bash +webi gitea@stable +``` + +Use the `@beta` tag for pre-releases, or `@x.y.z` for a specific version. + +## Cheat Sheet + +> Gitea is a clean, lightweight self-hosted Github clone. It only uses a few +> megabytes of RAM so it's perfect for hosting git on small VPSes and Raspberry +> Pis. It's forked from Gogs, and very familiar user-friendly for Github users +> in comparison to Gitlab or Bitbucket. + +### How to run `gitea` + +```bash +gitea web --config ~/.local/opt/gitea/custom/conf/app.ini +``` + +Note: `gitea` does NOT respect the _current working directory_ - the `./custom/` +folder must always exist in the location of the binary, which will be +`~/.local/opt/gitea/`. diff --git a/gitea/package.yash b/gitea/package.yash deleted file mode 100644 index 040674f..0000000 --- a/gitea/package.yash +++ /dev/null @@ -1,12 +0,0 @@ -# title: Gitea -# homepage: https://github.com/go-gitea/gitea -# tagline: | -# Gitea: Git with a cup of tea, painless self-hosted git service. -# description: | -# Gitea is a clean, lightweight self-hosted Github clone. It only uses a few megabytes of RAM so it's perfect for hosting git on small VPSes and Raspberry Pis. It's forked from Gogs, and very familiar user-friendly for Github users in comparison to Gitlab or Bitbucket. -# examples: | -# ```bash -# gitea web --config $HOME/srv/git.example.com/custom/conf/app.ini -# ``` - -END diff --git a/golang/README.md b/golang/README.md new file mode 100644 index 0000000..b5e92f2 --- /dev/null +++ b/golang/README.md @@ -0,0 +1,50 @@ +--- +title: Go +homepage: https://golang.org +tagline: | + Go makes it easy to build simple, reliable, and efficient software. +--- + +## Updating `go` + +```bash +webi golang@stable +``` + +Use the `@beta` tag for pre-releases, or `@x.y.z` for a specific version. + +## Cheat Sheet + +> Go is designed, through and through, to make Software Engineering easy. It's +> fast, efficient, reliably, and something you can learn in a weekend. If you +> subscribe to [_The Zen of Python_](https://www.python.org/dev/peps/pep-0020/), +> you'll [love](https://go-proverbs.github.io/) > +> [Go](https://www.youtube.com/watch?v=PAAkCSZUG1c). + +### Hello World + +```bash +mkdir -p hello/ +pushd hello/ +``` + +```bash +cat << EOF >> main.go +package main + +import ( + "fmt" +) + +func main () { + fmt.Println("Hello, World!") +} +EOF +``` + +```bash +go fmt ./... +go build . +./hello +> Hello, World! +``` diff --git a/golang/package.yash b/golang/package.yash deleted file mode 100644 index 01e34bb..0000000 --- a/golang/package.yash +++ /dev/null @@ -1,34 +0,0 @@ -# title: Go -# homepage: https://golang.org -# tagline: | -# Go makes it easy to build simple, reliable, and efficient software. -# description: | -# Go is designed, through and through, to make Software Engineering easy. It's fast, efficient, reliably, and something you can learn in a weekend. If you subscribe to [_The Zen of Python_](https://www.python.org/dev/peps/pep-0020/), you'll [love](https://go-proverbs.github.io/) [Go](https://www.youtube.com/watch?v=PAAkCSZUG1c). -# examples: | -# ```bash -# mkdir -p hello/ -# pushd hello/ -# ``` -# -# ```bash -# cat << EOF >> main.go -# package main -# -# import ( -# "fmt" -# ) -# -# func main () { -# fmt.Println("Hello, World!") -# } -# EOF -# ``` -# -# ```bash -# go fmt ./... -# go build . -# ./hello -# > Hello, World! -# ``` - -END diff --git a/hugo/README.md b/hugo/README.md new file mode 100644 index 0000000..6e45650 --- /dev/null +++ b/hugo/README.md @@ -0,0 +1,36 @@ +--- +title: Hugo +homepage: https://github.com/gohugoio/hugo +tagline: | + Hugo: The world’s fastest framework for building websites. +--- + +## Updating `hugo` + +```bash +webi hugo@stable +``` + +Use the `@beta` tag for pre-releases. + +## Cheat Sheet + +> Hugo is one of the most popular open-source static site generators. It makes +> building websites fun again. + +### Create a new site + +```bash +# create a new site +hugo new site ./blog.example.com +``` + +```bash +# compile a site +hugo +``` + +```bash +# serve a site in dev mode +hugo server -D +``` diff --git a/hugo/package.yash b/hugo/package.yash deleted file mode 100644 index ece6af3..0000000 --- a/hugo/package.yash +++ /dev/null @@ -1,23 +0,0 @@ -# title: Hugo -# homepage: https://github.com/gohugoio/hugo -# tagline: | -# Hugo: The world’s fastest framework for building websites. -# description: | -# Hugo is one of the most popular open-source static site generators. It makes building websites fun again. -# examples: | -# ```bash -# # create a new site -# hugo new site ./blog.example.com -# ``` -# -# ```bash -# # compile a site -# hugo -# ``` -# -# ```bash -# # serve a site in dev mode -# hugo server -D -# ``` - -END diff --git a/jq/README.md b/jq/README.md index 0923289..8754538 100644 --- a/jq/README.md +++ b/jq/README.md @@ -3,10 +3,22 @@ title: jq homepage: https://stedolan.github.io/jq/ tagline: | jq is a lightweight and flexible command-line JSON processor. -description: | - `jq` is like `sed` for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that `sed`, `awk`, `grep` and friends let you play with text. --- +## Updating `jq` + +```bash +webi jq@stable +``` + +Use the `@beta` tag for pre-releases. + +## Cheat Sheet + +> `jq` is like `sed` for JSON data - you can use it to slice and filter and map +> and transform structured data with the same ease that `sed`, `awk`, `grep` and +> friends let you play with text. + All jq selectors begin with `.` - don't forget that! Be sure to checkout the diff --git a/macos/README.md b/macos/README.md new file mode 100644 index 0000000..57ba10f --- /dev/null +++ b/macos/README.md @@ -0,0 +1,17 @@ +--- +title: macOS +homepage: https://bootableinstaller.com/macos/ +tagline: | + Creates a bootable macOS installer ISO in ~/Downloads. +--- + +## Cheat Sheet + +> Downloads the official OS X / macOS dmg from Apple to create bootable +> installers - works from macOS, Linux, or even Windows (through VirtualBox). + +Use with Balena Etcher to burn ISO to USB, or boot with VirtualBox. + +```txt +Created ~/Downloads/el-capitan.iso +``` diff --git a/macos/install.sh b/macos/install.sh index 7a47bdc..3848588 100644 --- a/macos/install.sh +++ b/macos/install.sh @@ -1,16 +1,4 @@ -# title: macOS -# homepage: https://bootableinstaller.com/macos/ -# tagline: | -# Creates a bootable macOS installer ISO in ~/Downloads. -# description: | -# Downloads the official OS X / macOS dmg from Apple to create bootable installers - works from macOS, Linux, or even Windows (through VirtualBox). -# examples: | -# -# Use with Balena Etcher to burn ISO to USB, or boot with VirtualBox. -# -# ```txt -# Created ~/Downloads/el-capitan.iso -# ``` +#!/bin/bash set -e set -u diff --git a/myip/README.md b/myip/README.md index c8652e1..fd7ba45 100644 --- a/myip/README.md +++ b/myip/README.md @@ -3,13 +3,21 @@ title: My IP homepage: https://webinstall.dev/myip tagline: | My IP answers the question "what's my IP address?" -description: | - `myip` will contact ipify.org to tell you your IP addresses: - - 1. `api.ipify.org` for your IPv4 or A address - 2. `api6.ipify.org` for your IPv6 or AAAA address --- +## Updating `myip` + +```bash +webi myip +``` + +## Cheat Sheet + +`myip` will contact ipify.org to tell you your IP addresses: + +1. `api.ipify.org` for your IPv4 or A address +2. `api6.ipify.org` for your IPv6 or AAAA address + Example output: ```txt diff --git a/node/README.md b/node/README.md index 4c90abd..828dfae 100644 --- a/node/README.md +++ b/node/README.md @@ -3,28 +3,41 @@ title: Node.js homepage: https://nodejs.org tagline: | Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. -description: | - Node is great for simple, snappy HTTP(S) servers, and for stitching APIs together with minimal fuss or muss. - - Installing node via webi will: - - - pick a compatible version from the [Node Releases API](https://nodejs.org/dist/index.tab) - - download and unpack to `$HOME/.local/opt/node/` - - update your `PATH` in `$HOME/.config/envman/PATH.env` - - run `npm config set scripts-prepend-node-path=true` - - (prevents conflicts with other installed node versions) - - absolutely leave system file permisions alone - - (no dreaded `sudo npm` permission errors) --- -Hello World +## Updating `node` + +```bash +webi node@stable +``` + +Use `@lts` for long-term support and the `@beta` tag for pre-releases, or +`@x.y.z` for a specific version. + +## Cheat Sheet + +Node is great for simple, snappy HTTP(S) servers, and for stitching APIs +together with minimal fuss or muss. + +Installing node via webi will: + +- pick a compatible version from the + [Node Releases API](https://nodejs.org/dist/index.tab) +- download and unpack to `$HOME/.local/opt/node/` +- update your `PATH` in `$HOME/.config/envman/PATH.env` +- run `npm config set scripts-prepend-node-path=true` + - (prevents conflicts with other installed node versions) +- absolutely leave system file permisions alone + - (no dreaded `sudo npm` permission errors) + +### Hello World ```bash node -e 'console.log("Hello, World!")' > Hello, World! ``` -A Simple Web Server +### A Simple Web Server `server.js`: @@ -42,7 +55,7 @@ http.createServer(app).listen(8080, function () { node server.js ``` -An Express App +### An Express App ```bash mkdir my-server @@ -60,7 +73,7 @@ var express = require('express'); var app = express(); app.use('/', function (req, res, next) { - res.end("Hello, World!"); + res.end('Hello, World!'); }); module.exports = app; diff --git a/pathman/README.md b/pathman/README.md index b1fb727..706b859 100644 --- a/pathman/README.md +++ b/pathman/README.md @@ -3,13 +3,28 @@ title: Pathman homepage: https://git.rootprojects.org/root/pathman tagline: | Pathman: cross-platform PATH management for bash, zsh, fish, cmd.exe, and PowerShell. -description: | - Manages PATH on various OSes and shells - - Mac, Windows, Linux - - Bash, Zsh, Fish - - Command, Powershell --- +## Updating `pathman` + +```bash +webi pathman +``` + +## Cheat Sheet + +Manages PATH on various OSes and shells + +- Mac, Windows, Linux +- Bash, Zsh, Fish +- Command, Powershell + +```bash +pathman help +``` + +### Usage + ```bash pathman add ~/.local/bin ``` @@ -18,6 +33,26 @@ pathman add ~/.local/bin pathman remove ~/.local/bin ``` +Note: Even on Windows 10 it is best to use Unix-style `/` paths and `~` for +`%USERPROFILE%`. + ```bash pathman list ``` + +```txt +pathman-managed PATH entries: + + $HOME/.local/bin + $HOME/.local/opt/go/bin + $HOME/go/bin + $HOME/.local/opt/node/bin + +other PATH entries: + + /usr/local/bin + /usr/bin + /bin + /usr/sbin + /sbin +``` diff --git a/postgres/README.md b/postgres/README.md new file mode 100644 index 0000000..69cae3b --- /dev/null +++ b/postgres/README.md @@ -0,0 +1,45 @@ +--- +title: Postgres +homepage: https://www.postgresql.org/ +tagline: | + PostgreSQL: The World's Most Advanced Open Source Relational Database. +--- + +## Updating `postgres` + +```bash +webi postgres@stable +``` + +Use `@x.y.z` for a specific version. + +## Cheat Sheet + +> Postgres is the all-in-one database for beginners and experts alike. It +> handles SQL, 'NoSQL', JSON, HSTORE, Full-Text Search, Messages Queues and +> more. Best bang for buck. + +### Initialize a database with a password + +```bash +echo "postgres" > /tmp/pwfile +mkdir -p $HOME/.local/share/postgres/var/ + +initdb -D $HOME/.local/share/postgres/var/ \ + --username postgres --pwfile "/tmp/pwfile" \ + --auth-local=password --auth-host=password + +rm /tmp/pwfile +``` + +### Start the postgres server + +```bash +postgres -D $HOME/.local/share/var/postgres -p 5432 +``` + +### Connect with the psql client + +```bash +psql 'postgres://postgres:postgres@localhost:5432/postgres' +``` diff --git a/postgres/package.yash b/postgres/package.yash deleted file mode 100644 index bf91145..0000000 --- a/postgres/package.yash +++ /dev/null @@ -1,35 +0,0 @@ -# title: Postgres -# homepage: https://www.postgresql.org/ -# tagline: | -# PostgreSQL: The World's Most Advanced Open Source Relational Database. -# description: | -# Postgres is the all-in-one database for beginners and experts alike. It handles SQL, 'NoSQL', JSON, HSTORE, Full-Text Search, Messages Queues and more. Best bang for buck. -# examples: | -# -# Initialize a database with a password -# -# ```bash -# echo "postgres" > /tmp/pwfile -# mkdir -p $HOME/.local/share/postgres/var/ -# -# initdb -D $HOME/.local/share/postgres/var/ \ -# --username postgres --pwfile "/tmp/pwfile" \ -# --auth-local=password --auth-host=password -# -# rm /tmp/pwfile -# ``` -# -# Start the postgres server -# -# ```bash -# postgres -D $HOME/.local/share/var/postgres -p 5432 -# ``` -# -# Connect with the psql client -# -# ```bash -# psql 'postgres://postgres:postgres@localhost:5432/postgres' -# ``` -# - -END diff --git a/powershell/README.md b/powershell/README.md index 631b3a6..89fabe2 100644 --- a/powershell/README.md +++ b/powershell/README.md @@ -3,12 +3,15 @@ title: Microsoft PowerShell homepage: https://docs.microsoft.com/en-us/powershell/ tagline: | PowerShell Core is a cross-platform (Windows, Linux, and macOS) automation and configuration tool/framework. -description: | - The core benefit of running `pwsh` on Mac or Linux is that you get a way to debug Windows 10 scripts without having to boot up Windows 10. - - For example, if you want to create a `curl.exe -A "windows" | powershell` script for Windows 10 (as we do), it's helpful to be able to do some level of debugging on other platforms. --- +> The core benefit of running `pwsh` on Mac or Linux is that you get a way to +> debug Windows 10 scripts without having to boot up Windows 10. + +For example, if you want to create a `curl.exe -A "windows" | powershell` script +for Windows 10 (as we do), it's helpful to be able to do some level of debugging +on other platforms. +