Compare commits

...

7 Commits

Author SHA1 Message Date
ge
98c2658e3c build: add -skip-unused, descrease compile time and executable size 2024-11-28 21:20:43 +03:00
ge
c32d2ef655 add example 2024-10-20 22:17:43 +03:00
ge
bcf3570f66 automatic version 2024-10-20 22:14:22 +03:00
ge
25b0d0d25e add install target 2024-10-20 22:09:07 +03:00
ge
50fd9c7a9d fix duplicates in labels list 2024-10-20 09:00:19 +03:00
ge
c62213c8ff add strip cflag 2024-10-20 08:26:57 +03:00
ge
434c8f43dc fix executable path 2024-10-20 07:26:24 +03:00
4 changed files with 56 additions and 11 deletions

View File

@ -1,13 +1,15 @@
PT_VERSION ?= 0.0.1
all: prod
dev:
v -o pt src/
prod:
v -prod -cc gcc -cflags -static -o pt src/ \
-d pt_version=$(PT_VERSION) \
v -prod -skip-unused -cc gcc -cflags '-static -s' -o pt src/ \
-d pt_version=$$(git describe --tags) \
-d pt_piddir=pt \
-d pt_max_recursion_depth=10 \
-d pt_default_config_file=~/.ptrc
install:
install -Dm0755 pt $$HOME/.local/bin/pt
install -Dm0644 completion.bash $${XDG_DATA_HOME:-$$HOME/.local/share}/bash-completion/completions/pt

View File

@ -17,15 +17,21 @@ Run and manage background processes without daemon or root privileges. `pt` is a
## Install
### Prebuilt binary
Look for statically linked binaries on the [releases page](https://github.com/gechandesu/pt/releases).
### Build from source
First install [V compiler](https://github.com/vlang/v).
Clone this repo and do:
Then do:
```
git clone https://github.com/gechandesu/pt.git
cd pt
make
install -Dm0755 pt $HOME/.local/bin/pt
install -Dm0644 completion.bash ${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion/completions/pt
make install
```
Next step is configuration.
@ -35,3 +41,40 @@ Next step is configuration.
Default configuration file is `~/.ptrc`. This is [TOML](https://toml.io) format file.
See full configuration example with comments in [ptrc.toml](ptrc.toml).
## Usage
For example run SOCKS5 proxy over SSH. For this example to work, your computer must have ~/.ssh/config configured and the remote server must also have your SSH key. The ~/.ptrc content:
```toml
# vim: ft=toml
[entry.ssh-tunnel]
description = 'SSH tunnel to %server%'
labels = ['ssh', 'pl']
exec = [
'/usr/bin/ssh',
'-NT',
'-oServerAliveInterval=60',
'-oExitOnForwardFailure=yes',
'-D',
'127.0.0.1:1080',
'192.168.0.1', # server address or hostname here
]
```
Start process:
```
$ pt start ssh-tunnel
```
Show running processes:
```
$ pt ps
```
Stop `ssh-tunnel`:
```
$ pt stop ssh-tunnel
# OR send signal explicitly
$ pt signal TERM ssh-tunnel
```

View File

@ -11,13 +11,13 @@ _pt_completions()
;;
-l|-label)
if [[ ${COMP_WORDS[*]} =~ start ]]; then
COMPREPLY+=($(compgen -W "$(./pt labels)" -- "$cur"))
COMPREPLY+=($(compgen -W "$(pt labels)" -- "$cur"))
fi
;;
*)
local words=($(./pt ls -o brief) start stop signal)
local words=($(pt ls -o brief) start stop signal)
if [[ ${words[*]} =~ $prev ]]; then
COMPREPLY+=($(compgen -W "$(./pt ls -o brief)" -- "$cur"))
COMPREPLY+=($(compgen -W "$(pt ls -o brief)" -- "$cur"))
fi
local commands='start stop ls ps help version signal labels'
local invoked=()

View File

@ -19,7 +19,7 @@ fn (em EntryManager) labels() []string {
for _, val in em.config.entries {
labels << val.labels
}
return arrays.uniq(labels)
return arrays.uniq(labels.sorted())
}
fn (em EntryManager) by_labels(labels []string) []Entry {