# Packages
# README
devextool
A simple task runner and automation tool to provide a better developer experience.
Introduction and Rationale
Good UX (in my mind and a bit simplified) is defined by a few traits:
- Clear/Common sense of how to accomplish a goal/task
- Discoverable when it's a new task (or not as clear/common)
- Consistency
There are lots of existing tools that provide task running/automation (Make, Thor/Rakefiles, Mage, Taskfile.dev, a number in JS land, etc) so why a new one? I feel they are all directory focused (there are ways around that but seem like hacks). Instead, primarily I want a tool that centralises as much as possible to DRY up all those little shell scripts/functions/aliases.
Using dx
dx runs programs from a fixed directory (DXHome by default) The location of this folder would searched for in order:
- specified using an env variable (DXHOME - eg to use with direnv).
- In the current directory,
- $HOME/DXHome
There are only a few things to know about the contents of DXHome:
- The only required directory is cmd. It contains executables/scripts and subdirectories. Subdirectories create 'namespace' comamnds to group related commands together.
- The scripts/programs in cmd must be executable (eg chmod 755) but can be written in any programming lanuage (but probably shell scripts).
- Folders and files inside cmd that start with an underscore are ignored (eg cmd/_lib to house shared functions in your shell scripts)
- $DXHOME is set (eg so you can "source $DXHOME/utils.sh" or cat $DXHOME/README.me) for commands
- DXHome can contain anything else you might need (Docs, config files, etc)
Building
Prebuilt binaries are (will be) generated and availabe under Releases but a simple
git clone https://github.com/vhodges/devextool.git
cd devextool
go build ./...
should suffice.
License
MIT