Compare commits

..

10 Commits

15 changed files with 1464 additions and 1052 deletions
+3 -5
View File
@@ -58,11 +58,9 @@ jobs:
echo "sha=dist/$name.sha256" >> $GITHUB_OUTPUT echo "sha=dist/$name.sha256" >> $GITHUB_OUTPUT
echo "bin=dist/$bin" >> $GITHUB_OUTPUT echo "bin=dist/$bin" >> $GITHUB_OUTPUT
- name: Publish Archive and SHA - name: Publish Archive, binary and SHA
if: env.ACT != 'true' if: env.ACT != 'true'
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
files: | files: |
${{ steps.package.outputs.archive }} ${{ steps.package.outputs.archive }}
@@ -71,7 +69,7 @@ jobs:
tag_name: v${{ steps.check-tag.outputs.version }} tag_name: v${{ steps.check-tag.outputs.version }}
name: "v${{ steps.check-tag.outputs.version }}" name: "v${{ steps.check-tag.outputs.version }}"
prerelease: ${{ steps.check-tag.outputs.rc == 'true' }} prerelease: ${{ steps.check-tag.outputs.rc == 'true' }}
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.DTOOLS_GITHUB_TOKEN }}
- name: Add artifacts - name: Add artifacts
shell: bash shell: bash
@@ -84,6 +82,6 @@ jobs:
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: artifacts-v${{ env.VERSION }} name: artifacts-v${{ steps.check-tag.outputs.version }}
path: artifacts path: artifacts
overwrite: true overwrite: true
+7 -5
View File
@@ -1,4 +1,8 @@
# Devtools # Devtools
![Release](https://img.shields.io/github/v/release/Dark-Alex-17/dtools?color=%23c694ff)
**Devtools (`dtools`)** is a comprehensive CLI utility that consolidates reusable development scripts, tools, and **Devtools (`dtools`)** is a comprehensive CLI utility that consolidates reusable development scripts, tools, and
references into a single, easy-to-use interface. Built with the [Bashly](https://github.com/DannyBen/bashly) framework, it serves multiple purposes: references into a single, easy-to-use interface. Built with the [Bashly](https://github.com/DannyBen/bashly) framework, it serves multiple purposes:
@@ -24,13 +28,11 @@ For any and all issues, don't hesitate to create a bug report or feature request
To install the `dtools` script, run the following command: To install the `dtools` script, run the following command:
```shell ```shell
git clone git@github.com:Dark-Alex-17/devtools.git ~/.local/share/devtools && pushd ~/.local/share/devtools && make install && popd curl -fsSL https://raw.githubusercontent.com/Dark-Alex-17/dtools/refs/heads/main/scripts/install.sh | bash
``` ```
This will install the repo to `~/.local/share/devtools` and run the `make install` command to build and install the This will install `dtools` to `~/.local/bin/dtools`, and install the tab completions to your `~./bashrc`. So be sure to
script to your local bin directory (usually `~/.local/bin`). `source ~/.bashrc` to enable the completions.
This will also install the tab completions to your `~./bashrc`, so be sure to `source ~/.bashrc` to enable the completions.
Just run `dtools --help` to get started! Just run `dtools --help` to get started!
+811 -494
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
if ! [[ -L "$HOME/.local/bin/dtools" ]]; then if ! [[ -L "$HOME/.local/bin/dtools" ]]; then
sudo ln -s "$PWD/dtools" "$HOME/.local/bin/dtools" wget -O "$HOME/.local/bin/dtools" "https://github.com/Dark-Alex-17/dtools/releases/latest/download/dtools"
fi fi
# shellcheck disable=SC2016 # shellcheck disable=SC2016
+1
View File
@@ -0,0 +1 @@
brew-explorer
+5
View File
@@ -105,3 +105,8 @@ commands:
help: A TUI and CLI for managing *arr servers (managarr) help: A TUI and CLI for managing *arr servers (managarr)
dependencies: dependencies:
managarr: See 'https://github.com/Dark-Alex-17/managarr' managarr: See 'https://github.com/Dark-Alex-17/managarr'
- name: brew-explorer
help: A beautiful terminal UI for exploring and managing your Homebrew packages with ease
dependencies:
brew-explorer: See 'https://github.com/cosmincatalin/brew-explorer'
+1 -1
View File
@@ -1 +1 @@
docker run -it browsh/browsh brow6el
@@ -44,6 +44,11 @@ commands:
gping: See 'https://github.com/orf/gping' gping: See 'https://github.com/orf/gping'
- name: full-browser - name: full-browser
help: A full-featured web browser for the terminal using Chromium (CEF) and libsixel for graphics rendering (brow6el)
dependencies:
brow6el: See 'https://codeberg.org/janantos/brow6el'
- name: text-based-browser
help: Text based browser with images (browsh) help: Text based browser with images (browsh)
dependencies: dependencies:
browsh: See 'https://www.brow.sh/' browsh: See 'https://www.brow.sh/'
@@ -0,0 +1 @@
docker run -it browsh/browsh
+15
View File
@@ -10,6 +10,17 @@ declare ram_size="${args[--ram-size]}"
declare cpu_cores="${args[--cpu-cores]}" declare cpu_cores="${args[--cpu-cores]}"
# shellcheck disable=SC2154 # shellcheck disable=SC2154
declare share_directory="${args[--share-directory]}" declare share_directory="${args[--share-directory]}"
# shellcheck disable=SC2154
declare usb="${args[--usb]}"
declare -a flags=()
if [[ -n "$usb" ]]; then
vendor_id="$(udevadm info --query=all --name="$usb" | grep ID_VENDOR_ID | awk -F= '{print $2}')"
product_id="$(udevadm info --query=all --name="$usb" | grep ID_MODEL_ID | awk -F= '{print $2}')"
flags+=("--device=/dev/bus/usb")
flags+=("-e")
flags+=(ARGUMENTS="-device usb-host,vendorid=0x${vendor_id},productid=0x${product_id}")
fi
if [[ -n $dist ]]; then if [[ -n $dist ]]; then
image=$dist image=$dist
@@ -47,6 +58,7 @@ if [[ "${args[--no-gui]}" == 1 ]]; then
-e "RAM_SIZE=${ram_size}G" \ -e "RAM_SIZE=${ram_size}G" \
-e "CPU_CORES=$cpu_cores" \ -e "CPU_CORES=$cpu_cores" \
-v "$share_directory:/shared" \ -v "$share_directory:/shared" \
"${flags[@]}" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
qemux/qemu qemux/qemu
@@ -60,6 +72,7 @@ if [[ "${args[--no-gui]}" == 1 ]]; then
-e "RAM_SIZE=${ram_size}G" \ -e "RAM_SIZE=${ram_size}G" \
-e "CPU_CORES=$cpu_cores" \ -e "CPU_CORES=$cpu_cores" \
-v "$share_directory:/shared" \ -v "$share_directory:/shared" \
"${flags[@]}" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
qemux/qemu qemux/qemu
@@ -78,6 +91,7 @@ else
-e "RAM_SIZE=${ram_size}G" \ -e "RAM_SIZE=${ram_size}G" \
-e "CPU_CORES=$cpu_cores" \ -e "CPU_CORES=$cpu_cores" \
-v "$share_directory:/shared" \ -v "$share_directory:/shared" \
"${flags[@]}" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
-d \ -d \
@@ -94,6 +108,7 @@ else
-e "RAM_SIZE=${ram_size}G" \ -e "RAM_SIZE=${ram_size}G" \
-e "CPU_CORES=$cpu_cores" \ -e "CPU_CORES=$cpu_cores" \
-v "$share_directory:/shared" \ -v "$share_directory:/shared" \
"${flags[@]}" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
-d \ -d \
+13
View File
@@ -10,6 +10,17 @@ declare cpu_cores="${args[--cpu-cores]}"
declare share_directory="${args[--share-directory]}" declare share_directory="${args[--share-directory]}"
# shellcheck disable=SC2154 # shellcheck disable=SC2154
declare persistent_dir_prefix="${args[--persistent-dir-prefix]:-$version}" declare persistent_dir_prefix="${args[--persistent-dir-prefix]:-$version}"
# shellcheck disable=SC2154
declare usb="${args[--usb]}"
declare -a flags=()
if [[ -n "$usb" ]]; then
vendor_id="$(udevadm info --query=all --name="$usb" | grep ID_VENDOR_ID | awk -F= '{print $2}')"
product_id="$(udevadm info --query=all --name="$usb" | grep ID_MODEL_ID | awk -F= '{print $2}')"
flags+=("--device=/dev/bus/usb")
flags+=("-e")
flags+=(ARGUMENTS="-device usb-host,vendorid=0x${vendor_id},productid=0x${product_id}")
fi
if [[ "${args[--wipe-persistent-data]}" == 1 ]]; then if [[ "${args[--wipe-persistent-data]}" == 1 ]]; then
declare persistent_data_dir="$HOME/.vm/mac/$persistent_dir_prefix" declare persistent_data_dir="$HOME/.vm/mac/$persistent_dir_prefix"
@@ -40,6 +51,7 @@ if [[ "${args[--persistent]}" == 1 ]]; then
-v "$share_directory:/shared" \ -v "$share_directory:/shared" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
"${flags[@]}" \
-d \ -d \
dockurr/macos) dockurr/macos)
else else
@@ -55,6 +67,7 @@ else
-v "$share_directory:/shared" \ -v "$share_directory:/shared" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
"${flags[@]}" \
-d \ -d \
dockurr/macos) dockurr/macos)
fi fi
+76 -58
View File
@@ -24,46 +24,52 @@ commands:
- long: --disk-size - long: --disk-size
help: The disk size of the VM's drive in GB help: The disk size of the VM's drive in GB
arg: disk_size arg: disk_size
default: "64" default: '64'
validate: integer validate: integer
- long: --ram-size - long: --ram-size
help: The RAM size of the VM's RAM in GB help: The RAM size of the VM's RAM in GB
arg: ram_size arg: ram_size
default: "4" default: '4'
validate: integer validate: integer
- long: --cpu-cores - long: --cpu-cores
help: The number of CPU cores the VM is allowed to use help: The number of CPU cores the VM is allowed to use
arg: cpu_cores arg: cpu_cores
default: "2" default: '2'
validate: integer validate: integer
- long: --share-directory - long: --share-directory
help: The directory to share with the VM (In Windows, this is the Network#host.lan machine) help: The directory to share with the VM (In Windows, this is the Network#host.lan machine)
arg: share_directory arg: share_directory
default: "." default: '.'
completions:
- <directory>
- long: --usb
help: The USB device to mount into the VM (e.g. '/dev/sde')
arg: usb
validate: device_exists
completions: completions:
- <directory> - <directory>
- long: --version - long: --version
help: The version of Windows to start help: The version of Windows to start
arg: version arg: version
default: "11" default: '11'
allowed: allowed:
- "11" - '11'
- "11l" - '11l'
- "11e" - '11e'
- "10" - '10'
- "10l" - '10l'
- "10e" - '10e'
- "8e" - '8e'
- "7e" - '7e'
- "ve" - 've'
- "xp" - 'xp'
- "2025" - '2025'
- "2022" - '2022'
- "2019" - '2019'
- "2016" - '2016'
- "2012" - '2012'
- "2008" - '2008'
- "2003" - '2003'
- name: linux - name: linux
help: Start a Linux VM that's available at http://localhost:8006 and via SSH on port 2222 help: Start a Linux VM that's available at http://localhost:8006 and via SSH on port 2222
@@ -104,50 +110,56 @@ commands:
- long: --disk-size - long: --disk-size
help: The disk size of the VM's drive in GB help: The disk size of the VM's drive in GB
arg: disk_size arg: disk_size
default: "128" default: '128'
validate: integer validate: integer
- long: --ram-size - long: --ram-size
help: The RAM size of the VM's RAM in GB help: The RAM size of the VM's RAM in GB
arg: ram_size arg: ram_size
default: "8" default: '8'
validate: integer validate: integer
- long: --cpu-cores - long: --cpu-cores
help: The number of CPU cores the VM is allowed to use help: The number of CPU cores the VM is allowed to use
arg: cpu_cores arg: cpu_cores
default: "4" default: '4'
validate: integer validate: integer
- long: --share-directory - long: --share-directory
help: The directory to share with the VM (Access by running 'mount -t 9p -o trans=virtio shared /mnt/shared' in the container) help: The directory to share with the VM (Access by running 'mount -t 9p -o trans=virtio shared /mnt/shared' in the container)
arg: share_directory arg: share_directory
default: "." default: '.'
completions:
- <directory>
- long: --usb
help: The USB device to mount into the VM (e.g. '/dev/sde')
arg: usb
validate: device_exists
completions: completions:
- <directory> - <directory>
- long: --dist - long: --dist
help: The Linux distribution to start help: The Linux distribution to start
arg: distribution arg: distribution
allowed: allowed:
- "alma" - 'alma'
- "alpine" - 'alpine'
- "arch" - 'arch'
- "cachy" - 'cachy'
- "centos" - 'centos'
- "debian" - 'debian'
- "fedora" - 'fedora'
- "gentoo" - 'gentoo'
- "kali" - 'kali'
- "kubuntu" - 'kubuntu'
- "mint" - 'mint'
- "manjaro" - 'manjaro'
- "mx" - 'mx'
- "nixos" - 'nixos'
- "suse" - 'suse'
- "oracle" - 'oracle'
- "rocky" - 'rocky'
- "slack" - 'slack'
- "tails" - 'tails'
- "ubuntu" - 'ubuntu'
- "ubuntus" - 'ubuntus'
- "xubuntu" - 'xubuntu'
conflicts: [--image-url] conflicts: [--image-url]
- long: --image-url - long: --image-url
help: |- help: |-
@@ -187,31 +199,37 @@ commands:
- long: --disk-size - long: --disk-size
help: The disk size of the VM's drive in GB help: The disk size of the VM's drive in GB
arg: disk_size arg: disk_size
default: "64" default: '64'
validate: integer validate: integer
- long: --ram-size - long: --ram-size
help: The RAM size of the VM's RAM in GB help: The RAM size of the VM's RAM in GB
arg: ram_size arg: ram_size
default: "4" default: '4'
validate: integer validate: integer
- long: --cpu-cores - long: --cpu-cores
help: The number of CPU cores the VM is allowed to use help: The number of CPU cores the VM is allowed to use
arg: cpu_cores arg: cpu_cores
default: "2" default: '2'
validate: integer validate: integer
- long: --share-directory - long: --share-directory
help: The directory to share with the VM (Access by running 'mount -S mount_9p shared' in the container; Then it's available under Finder -> Go -> Computer) help: The directory to share with the VM (Access by running 'mount -S mount_9p shared' in the container; Then it's available under Finder -> Go -> Computer)
arg: share_directory arg: share_directory
default: "." default: '.'
completions:
- <directory>
- long: --usb
help: The USB device to mount into the VM (e.g. '/dev/sde')
arg: usb
validate: device_exists
completions: completions:
- <directory> - <directory>
- long: --version - long: --version
help: The version of MacOS to start help: The version of MacOS to start
arg: version arg: version
default: "13" default: '15'
allowed: allowed:
- "15" - '15'
- "14" - '14'
- "13" - '13'
- "12" - '12'
- "11" - '11'
+13
View File
@@ -10,6 +10,17 @@ declare cpu_cores="${args[--cpu-cores]}"
declare share_directory="${args[--share-directory]}" declare share_directory="${args[--share-directory]}"
# shellcheck disable=SC2154 # shellcheck disable=SC2154
declare persistent_dir_prefix="${args[--persistent-dir-prefix]:-$version}" declare persistent_dir_prefix="${args[--persistent-dir-prefix]:-$version}"
# shellcheck disable=SC2154
declare usb="${args[--usb]}"
declare -a flags=()
if [[ -n "$usb" ]]; then
vendor_id="$(udevadm info --query=all --name="$usb" | grep ID_VENDOR_ID | awk -F= '{print $2}')"
product_id="$(udevadm info --query=all --name="$usb" | grep ID_MODEL_ID | awk -F= '{print $2}')"
flags+=("--device=/dev/bus/usb")
flags+=("-e")
flags+=(ARGUMENTS="-device usb-host,vendorid=0x${vendor_id},productid=0x${product_id}")
fi
if [[ "${args[--wipe-persistent-data]}" == 1 ]]; then if [[ "${args[--wipe-persistent-data]}" == 1 ]]; then
declare persistent_data_dir="$HOME/.vm/windows/$persistent_dir_prefix" declare persistent_data_dir="$HOME/.vm/windows/$persistent_dir_prefix"
@@ -40,6 +51,7 @@ if [[ "${args[--persistent]}" == 1 ]]; then
-v "$share_directory:/data" \ -v "$share_directory:/data" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
"${flags[@]}" \
-d \ -d \
dockurr/windows) dockurr/windows)
else else
@@ -55,6 +67,7 @@ else
-v "$share_directory:/data" \ -v "$share_directory:/data" \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--stop-timeout 120 \ --stop-timeout 120 \
"${flags[@]}" \
-d \ -d \
dockurr/windows) dockurr/windows)
fi fi
File diff suppressed because it is too large Load Diff
@@ -3,3 +3,7 @@ validate_port_number() {
red_bold "The port number provided is invalid: $1" red_bold "The port number provided is invalid: $1"
fi fi
} }
validate_device_exists () {
[[ -e /dev/sde ]] || red_bold "The specified device does not exist: $1"
}