Skip to content

algrvvv/ali

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ali - your aliases

ali - cli utility for more convenient and quick work with routine teams

about v2

  • Improved alias settings. added more flexible settings.
  • The second version introduced plugins, templates, and a complete switch to using yaml configurations. support for toml and json configurations has been removed.

Install

install by go install:

go install github.com/algrvvv/ali@latest

setup global config

# init global config
ali setup

you can also use the --editor flag to specify the default config editor.

in the example below, all configurations will be edited using the ali edit command using the vs code code editor

ali setup --editor=code

Auto completion

ali completion your_shell > dir/for/completion

# for example
ali completion zsh > ~/tmp/ali
source ~/tmp/ali
# It's better to put this command in your shell configuration, for example ~/.zshrc

Usage

The application has a global configuration and any number of local configurations. To do this, go to the desired directory and use the command: ali init. All local overlapping aliases have an advantage over global ones.

> ali help
  ali - cli app for your aliases
  Usage:
    ali [flags]
    ali [command]

  Available Commands:
    completion  Generate completion script
    edit        Edit global or local config
    help        Help about any command
    init        Init new local config
    list        Get list aliases
    setup       Setup global config
    version     See app version and more information

  Flags:
    -D, --debug                 print debug messages
    -h, --help                  help for ali
    -L, --local-env             use only local env
        --output-color string   color of the ouput of the parallel command
    -p, --parallel              do parallel command
        --print                 print result command before start exec
        --without-output        dont show parallel commands output

  Use "ali [command] --help" for more information about a command.

App configuration

The application configuration is stored in a file with the .yaml extension. The aliases section contains a list of the type alias = command and there is also the app section, which contains so far the only setting that is responsible for the default configuration editor.

To edit the global configuration, use: ali edit To edit the local configuration, use: ali edit --local By default, vi opens to edit the configuration.

Example:

aliases:
  # test alias
  test: 'echo "hello world"'
app:
  editor: 'vim'

More flexibility for aliases

Example of a more flexible setup:

aliases:
  lara:
    parallel: true # commands in alias exec parallel
    aliases: [l, laravel] # also can use: ali laravel
    desc: start laravel server + vuejs # desc for alias
    dir: ~/path/to/project # dir for exec alias
    env: 
      SERVER_PORT: 8888 # env variable for this alias
    cmds:
      - php artisan serve --port $SERVER_PORT
      - npm run dev

More settings

Example of additional settings.

includes

Loading a different configuration. it is possible to download several by specifying several paths.

Recursive loading is currently not supported.

include:
  - ~/some/path/
  - ~/path/some/.ali

aliases:
  t: echo 'test alias'

env

You can also add both global environment variables and local ones, that is, only for a specific alias.

env:
  NAME: name

aliases:
  t: 
    env: 
      NAME: another_name
    cmds:
      - echo "hello, $NAME"

It is also possible to store environment variables in a separate file, which can be entered in .gitignore, so as not to publish in repositories.

by default, the file name should match .alienv. in order to use another file, you can use

ali --env-file=".another_env_file" yourAliasName

the syntax of such a file is the simplest. it's just a yaml key map value.

key: value

Usage examples

Pass arguments inside a command:

# in configuration
hello: echo "hello, <user>"
ali hello --user=$(whoami)
# equal: echo "hello, $(whoami)"

passing arguments after the command:

# in configuration
gl: git log -n 
ali gl 3
# equal: git log -n 3

Parallel commands

Parallel commands are commands that will be executed in parallel in a single terminal session.

Configuration example:

aliases:
  lara:
    parallel: true # use for parallel exec
    cmds:
      - php artisan serve --port $SERVER_PORT
      - npm run dev

To run parallel commands, use ali CommandName or ali commandName

There are also additional settings for parallel commands. For example, the --without-output flag to disable command output. It is also possible to change the output color by using flag --output-color.

Available colors:

  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • gray
  • orange
  • pink
  • lime
  • white

At the moment, these commands will only be displayed in the list using the-f flag.

Variables

since version v1.6.3 it is now possible to create and use variables. they are stored in the configuration under the tag vars. They can also be divided into global or local ones.

below is an example from the local yaml config:

vars:
  execute: go run main.go
  roomcode: myroomcode
  user: myuser

aliases:
  # golang
  single: "{{execute}} --user={{user}}"
  host: "{{execute}} --host --code {{roomcode}} --user={{user}}"
  guest: "{{execute}} --guest --code {{roomcode}} --user={{user}}"

It is also possible to reassign variables for the duration of execution, that is, not in the file, but only once at the time of command execution.

you can follow the example below:

ali single -V_execute=mybuild --print

using the --print flag, we will see the final command to execute. the output before execution will be as follows:

mybuild --user=myuser

how does it work? to reassign a variable, you need to use V_ at the beginning of the flag, and then use the variable name, followed by its value.

important! it is necessary to pass the value through the = sign.

To see their list, you can use the ali list -v command.

throwing flags or values

throwing flags that are not used directly or by substituting an argument into a command works as follows. We have an alias:

aliases:
  run: go run main.go

and we want to add a flag that is missing there, but we don't want to add it to the file, since we won't need it later. in this case, we will use the following command (we will also use --print to see the final command)

ali run --myarg=myvalue --print

ouput:

command:  go run main.go --myarg=myvalue

important! it is necessary to pass the value through the = sign.

Templates

Templates are prepared examples of .ali configurations that can be created or overwritten into an existing local config.

create new template:

ali templ testTempl --new

edit template:

ali templ testTempl --edit

import template and create local config:

ali templ testTempl

if you want to rewrite existed config:

ali templ testTempl --force

show templ list:

ali templ --list

Plugins

Plugins are slightly different from templates. unlike them, they are provided so that you can run a script or any other action with a single command.

create new plugin:

ali plug testPlug --new

After creation, you will be given the path where the plugin should be placed. initially, there will be only its configuration file, in which it is enough to specify the description of the plugin, as well as how to launch it. This approach will add even more flexibility and will not be tied to a specific language.

plugin configuration example:

desc: test python plugin
exec: python3 main.py

you can use anything in this directory, the main thing is to specify how your plugin will run.

launch plugin:

ali plug testPlug

show plugins list:

ali plug --list

Additionally

To get logs, use --debug or -D

To use only local aliases, use -L or --local-env. This can be useful when using ali list -L to output only a list of local aliases.

feature v2

  • добавить разные варианты алиасов;
  • добавить разделение команд на несколько, а не использование &&;
  • перейти в целом на yaml конфиг;
  • синонимы к алиасам;
  • правильный вывод всех алиасов;
  • можно добавить версию приложения в самое начало (нах);
  • переменные окружения;
  • поиск по синонимам - сначала по точным совпаденияем, а только потом по синонимам;
  • шаблоны;
  • директория выполнения команды (dir);
  • удалить возможность изменять путь к локальному конфигу;
  • include;
  • почистить не используемый код;
  • дописать документацию в ридми
  • улучшить документацию команд именно в утилите, а не в доках

About

cli util for aliases

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages