contents/pls.md
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
----- id: pls github: pls home: /pls/ title: "pls" subtitle: "A polite but determined task runner" summary: "A simple but powerful task runner that lets you define your own commands by editing a YAML configuration file." content-type: project active: true ci: true download: "https://github.com/h3rald/pls/releases/download/" version: 1.0.0 docs: /pls/Pls_UserGuide.htm ----- _pls_ is a simple, general-purpose task runner that aims at making common tasks easier to manage and execute. It was inspired by some of the functionalities provided by the [nifty](/nifty) package manager, only without the package manager part. ### Main Features _pls_ can be used to: - Define a catalog of _actions_ to perform on _things_, which will result in _commands_ to be executed, each with the same simple syntax. - Define a catalog of _things_, representing virtually anything that can be the object of a _shell command_ or referred within other _things_. - Define a set of _dependencies_ among _commands_, in the form of _commands_. - Manage aliases to commonly-used strings (_properties_) to use within other sections of the configuration. ### Hello, World! Here's minimal but quite comprehensive example of how everything works with _pls_. Given the following <var>pls.yml</var> file (placed in <var>$HOME</var> or in <var>%USERPROFILE%</var> on Windows): ``` things: home: value: /home/h3rald bin: value: {{home.value}}/bin self: value: {{home.value}}/dev/pls exe: pls config: {{home.value}}/pls.yml nimble: true actions: config: config: vim {\{config}} build: nimble+value: cd {\{value}} && nimble build -d:release publish: exe+value: cd {\{value}} && $(cp "{\{exe}}" "{{bin.value}}") & deps: publish self: - build self ``` It will be possible to run the following _command_ to build the _pls_ program itself and copy it to the [/home/h3rald/bin](class:dir): ``` pls publish self ``` Similarly, to edit the <var>pls.yml</var> file using Vim, it will be sufficient to run: ``` pls config self ``` ### Downloads * [macOS (x64)]({{$download}}v{{$version}}/{{$github}}_v{{$version}}_macosx_x64.zip) * [Linux (x64)]({{$download}}v{{$version}}/{{$github}}_v{{$version}}_linux_x64.zip) * [Windows (x64)]({{$download}}v{{$version}}/{{$github}}_v{{$version}}_windows_x64.zip) |