mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-02-14 17:49:53 +00:00
update docs
This commit is contained in:
78
serviceman/README.md
Normal file
78
serviceman/README.md
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: Serviceman
|
||||
homepage: https://git.rootprojects.org/root/serviceman
|
||||
tagline: |
|
||||
Serviceman: cross-platform service management for Linux, Mac, and Windows.
|
||||
description: |
|
||||
Serviceman is a hassle-free wrapper around your system launcher. It works with the default system launcher to make it easy to start _user_- and _system_-level services, such as webservers, backup scripts, network and system tools, etc.
|
||||
|
||||
Supports
|
||||
- `launchctl` (macOS)
|
||||
- `systemctl` (Linux)
|
||||
- The Registry (Windows)
|
||||
---
|
||||
|
||||
Serviceman can run an app in just about any programming language very simply.
|
||||
|
||||
If you'd like to learn what `serviceman` does without actually making changes,
|
||||
add the `--dry-run` option.
|
||||
|
||||
### Node.js
|
||||
|
||||
**Development Server**
|
||||
|
||||
```bash
|
||||
pushd ./my-node-app/
|
||||
sudo env PATH="$PATH" \
|
||||
serviceman add --cap-net-bind --system npx nodemon
|
||||
```
|
||||
|
||||
**Production Server**
|
||||
|
||||
```bash
|
||||
pushd ./my-node-app/
|
||||
sudo env PATH="$PATH" \
|
||||
serviceman add --cap-net-bind --system npm start
|
||||
```
|
||||
|
||||
### Golang
|
||||
|
||||
```bash
|
||||
pushd ./my-go-package/
|
||||
sudo env PATH="$PATH" \
|
||||
serviceman add --system go run -mod=vendor cmd/my-service/*.go --port 3000
|
||||
```
|
||||
|
||||
```bash
|
||||
pushd ./my-go-package/
|
||||
go build -mod=vendor cmd/my-service
|
||||
sudo env PATH="$PATH" \
|
||||
serviceman add --cap-net-bind --system ./my-service --port 80
|
||||
```
|
||||
|
||||
### And even bash!
|
||||
|
||||
```bash
|
||||
sudo env PATH="$PATH" serviceman add bash ./backup.sh /mnt/data
|
||||
```
|
||||
|
||||
### Use `--dry-run` to see the generated launcher config:
|
||||
|
||||
```bash
|
||||
sudo env PATH="$PATH" \
|
||||
serviceman add --dryrun bash ./backup.sh /mnt/data
|
||||
```
|
||||
|
||||
### See the (sub)command help
|
||||
|
||||
The main help, showing all subcommands:
|
||||
|
||||
```bash
|
||||
serviceman --help
|
||||
```
|
||||
|
||||
Sub-command specific help:
|
||||
|
||||
```bash
|
||||
serviceman add --help
|
||||
```
|
||||
@@ -1,54 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
# title: Serviceman
|
||||
# homepage: https://git.rootprojects.org/root/serviceman
|
||||
# tagline: |
|
||||
# Serviceman: cross-platform service management for Linux, Mac, and Windows.
|
||||
# description: |
|
||||
# Serviceman is a hassle-free wrapper around your system launcher. It works with `launchctl` (macOS), `systemctl` (Linux), and the Windows Registry to make it easy to start _user_ and _system_ level services, such as webservers, backup scripts, network and system tools, etc.
|
||||
# examples: |
|
||||
#
|
||||
# Works with anything, including
|
||||
#
|
||||
# ### Node.js
|
||||
#
|
||||
# ```bash
|
||||
# serviceman add --name my-service node ./serve.js --port 3000
|
||||
# ```
|
||||
#
|
||||
# ### Golang
|
||||
#
|
||||
# ```bash
|
||||
# go build -mod vendor cmd/my-service
|
||||
# serviceman add ./my-service --port 3000
|
||||
# ```
|
||||
#
|
||||
# ### And even bash!
|
||||
#
|
||||
# ```bash
|
||||
# serviceman add --name backuper bash ./backup.sh /mnt/data
|
||||
# ```
|
||||
{
|
||||
|
||||
set -e
|
||||
set -u
|
||||
set -e
|
||||
set -u
|
||||
|
||||
# Test if in PATH
|
||||
set +e
|
||||
my_serviceman=$(command -v serviceman)
|
||||
set -e
|
||||
if [ -n "$my_serviceman" ]; then
|
||||
if [ "$my_serviceman" != "$HOME/.local/bin/serviceman" ]; then
|
||||
echo "a serviceman installation (which make take precedence) exists at:"
|
||||
echo " $my_serviceman"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
# Test if in PATH
|
||||
set +e
|
||||
my_serviceman=$(command -v serviceman)
|
||||
set -e
|
||||
if [ -n "$my_serviceman" ]; then
|
||||
if [ "$my_serviceman" != "$HOME/.local/bin/serviceman" ]; then
|
||||
echo "a serviceman installation (which make take precedence) exists at:"
|
||||
echo " $my_serviceman"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get arch envs, etc
|
||||
webi_download "https://rootprojects.org/serviceman/dist/$(uname -s)/$(uname -m)/serviceman" "$HOME/Downloads/serviceman"
|
||||
chmod +x "$HOME/Downloads/serviceman"
|
||||
mv "$HOME/Downloads/serviceman" "$HOME/.local/bin/"
|
||||
# Get arch envs, etc
|
||||
webi_download "https://rootprojects.org/serviceman/dist/$(uname -s)/$(uname -m)/serviceman" "$HOME/Downloads/serviceman"
|
||||
chmod +x "$HOME/Downloads/serviceman"
|
||||
mv "$HOME/Downloads/serviceman" "$HOME/.local/bin/"
|
||||
|
||||
# add to ~/.local/bin to PATH, just in case
|
||||
webi_path_add $HOME/.local/bin # > /dev/null 2> /dev/null
|
||||
# TODO inform user to add to path, apart from pathman?
|
||||
# add to ~/.local/bin to PATH, just in case
|
||||
webi_path_add $HOME/.local/bin # > /dev/null 2> /dev/null
|
||||
# TODO inform user to add to path, apart from pathman?
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user