Welcome to Aisu, a package manager for Howl! (こんにちは、アイス)¶

Aisu (アイス) is a package manager for the Howl text editor, built on top of Git and Mercurial.

If you like Aisu, you can star it on GitHub! Stars make me happy. :D

Installing Aisu¶ Ironically enough, you can’t use Aisu to install itself (yet!) like most package managers. Instead, you have to do things the old-fashioned way: $ mkdir ~/.howl/bundles $ cd ~/.howl/bundles $ git clone https://github.com/kirbyfan64/aisu.git

The console¶ Aisu is used within Howl. Whenever a command is referenced in these docs, you can run it by using Alt+X (to open up the Howl command line) and then entering the command name (e.g. aisu-query ). Upon running a command, a new buffer will be opened up containing various prompts pertaining to the command. This is called the Aisu console. It behaves a lot like a terminal would...except it’s inside of Howl! While packages are being installed, for instance, you can go and continue working inside of Howl, doing other things in other buffers. Whenever Aisu asks for package paths or names, you can specify multiple ones by separating them by spaces. For instance, when aisu-uninstall asks for a package name, you can specify multiple ones like my-first-package my-second-package .

Installing and querying for packages¶ Aisu was designed to be really easy to use. To query information about and install different packages, you can use the aisu-query and aisu-install commands. They will both ask for the path/repo of the package to install. This can be a path to a local Git/Mercurial repository ( /home/my_user/my_repo ) or a URL ( https://github.com/my_user/my_repo.git ). In addition, for packages on GitHub, you can just use username/repo ; my_user/my_repo is shorthand for https://github.com/my_user/my_repo.git . If you’re using aisu-query , Aisu will download the package to a temporary folder and print information about it (like author and description). aisu-install will do the same thing, followed by a confirmation message verifying that you want to install the package. Just like mentioned above, you can install multiple packages by separating their paths with spaces.

Updating packages¶ To update packages, you can just run aisu-update . This will ask for the packages to update. If you want to update all your packages, you can just enter an asterisk ( * ). In addition, you can use Ctrl+Space to auto-complete with a list of installed packages.

Uninstalling packages¶ aisu-uninstall will uninstall any given packages. Just like aisu-update , you can press Ctrl+Space in order to auto-complete with a list of packages.

Creating packages¶ By default, Aisu looks for a file called aisu.moon . It looks kind of like this: { meta: author: ' Author name here ' description: ' Description here ' license: ' License here ' version: ' Version here ' build: ( buffer ) -> -- This function will be run whenever the package is installed/updated. } Any of the fields can be ommited. You can also use Lua with aisu.lua , like this: return { meta = { author = 'Author name here' , description = 'Description here' , license = 'License here' , version = 'Version here' }, build = function ( buffer ) -- This function will be run whenever the package is installed/updated. end } If neither aisu.moon nor aisu.lua is present, Aisu will attempt to parse init.moon to find the metadata. If that also fails, then Aisu will ask you if it can run init.moon or init.lua to get the metadata. Failing that, it bails and assumes all the metadata is unknown. The most interesting part here is the build function. It is passed the Aisu ControlBuffer and is supposed to setup anything required for the package to function correctly. An example is: build: ( buffer , dir ) -> -- Run make. dir is the directory holding the package. aisu . spawn_in_buffer buffer , cmd: { ' make ' } working_directory: dir A full example of an aisu.moon can be seen in the howl-autoclang bundle: { -- Metadata meta: author: ' Ryan Gonzalez ' description: ' Clang-based autocompletion for C/C++ ' license: ' MIT ' version: ' 0.1 ' -- The build function: runs each command. build: ( buf , dir ) -> cmds = { { ' git ' , ' submodule ' , ' init ' } { ' git ' , ' submodule ' , ' update ' } { ' make ' , ' -C ' , ' ljclang ' , ' libljclang.so ' } } for cmd in * cmds aisu . spawn_in_buffer buf , :cmd working_directory: dir } Reducing duplication¶ If you haven’t noticed, aisu.moon ‘s meta field is largely the same as init.moon ‘s info . Since that’s a bit of a chore to maintain, you can just do this in init.moon : -- ... normal code here ... { -- The magic is here: info: bundle_load ( ' aisu ' ) . meta -- ... } This just loads up aisu.moon and grabs the meta field.

FAQ¶ Since Aisu is new, there haven’t really been any questions asked yet, so this mostly came off the top of my head. Which explains why it makes almost no sense... Does Aisu have dependency management?¶ Not yet. This isn’t that high of a priority at the moment, since packages designed for text editors (like Howl!) usually aren’t as dependency-happy as NodeJS packages (a.k.a. left-pad ). Is Aisu self-updating?¶ Again, not yet. Eventually, Aisu will be a valid package of its own, and you’ll just run a quick bootstrap script to install it. Why the hell did you name this Aisu?¶ Aisu (アイス) is Japanese for ice. Wolves can live in cold weather. Howling is what wolves do. Get it? Get it? (To top it off, I didn’t realize it at first, but the Sphinx theme I used for these docs was made by Japanese people. Kind of a weird coincidence...)