Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Команда methods

Эта команда выводит список доступных методов, учитывая ссылки.

irnix e methods
self.logm.log
self.__logger__.logm.log
self.waybar.reload
self.headphones.disconnect
self.headphones.connect
self.build
logm.log
__logger__.log
waybar.reload
headphones.disconnect
headphones.connect

В этом случае self это ссылка на текущий namespace.


Эта команда позволяет создавать очень мощные вещи. Например, давайте добавим метод build прямо в namespace, а также ссылку self на этот же namespace:

cd ~/.local/share/irnix
ln -s . self
~/.local/share/irnix
├── build
└── self -> .

Также создадим директорию .build в namespace:

mkdir ~/.local/share/irnix/.build

Содержимое build:

#!/bin/bash

DIR=$HOME/.local/share/irnix/.build/

for method in `irnix methods`; do
  printf "#!/bin/bash\nirnix e $method -- \$*" > "$DIR$method"
  chmod +x "$DIR$method"
done

Как видите, наш метод build создает скрипты вида:

#!/bin/bash

irnix e object.method -- $*

..с названиями, что соответствуют методам, а также выдает права на исполнение. Каждый скрипт вызывает внутри себя Irnix, передавая аргументы. Если добавить этот путь в PATH (например в файле .bashrc или .zshenv):

export PATH="$HOME/.local/share/irnix/.build:$PATH"

...и запустить метод build:

irnix e self.build

...то мы сможем вызывать методы прямо в терминале, без того чтобы писать каждый раз irnix e!

Мы также можем добавить контракт для метода build, для безопасности:

~/.local/share/irnix
├── .self
├── build
└── self -> .

.self:

build:

В итоге мы получаем возможность легко вызывать наши методы, что расположены в .build:

~/.local/share/irnix
├── .build
│   ├── __logger__.log
│   ├── headphones.connect
│   ├── headphones.disconnect
│   ├── logm.log
│   ├── self.__logger__.logm.log
│   ├── self.build
│   ├── self.headphones.connect
│   ├── self.headphones.disconnect
│   ├── self.logm.log
│   ├── self.waybar.reload
│   └── waybar.reload
├── .self
├── __logger__
│   ├── .self
│   └── logm -> ../logm
├── build
├── headphones
│   ├── .self
│   ├── connect
│   └── disconnect
├── logm
│   ├── .self
│   └── log -> /bin/logm
├── self -> .
└── waybar
    ├── .self
    └── reload

Мы также можем доработать наш скрипт, и очищать папку перед созданием скриптов:

#!/bin/bash

DIR=$HOME/.local/share/irnix/.build/

rm $DIR*

for method in `irnix methods`; do
  printf "#!/bin/bash\nirnix e $method -- \$*" > "$DIR$method"
  chmod +x "$DIR$method"
done

После этого всего методы можно будет использовать, например так:

echo message | __logger__.log warn

Такой способ делает вызов короче, при этом неявно используя Irnix под капотом.