Команда 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 под капотом.