An open API service indexing awesome lists of open source software.

https://github.com/olsonpm/lilyvm


https://github.com/olsonpm/lilyvm

Last synced: about 1 year ago
JSON representation

Awesome Lists containing this project

README

          

# Lilypond Version Manager

## Table Of Contents

- [About](#about)
- [Constraints](#constraints)
- [Install](#install)
- [Use](#use)
- [Test](#test)
- [Todo](#todo)

## About

Lilyvm is a command-line program meant to ease your use of multiple lilypond versions.
I wrote it in order to enable dynamic versions when running [lilybin](http://lilybin.com/) locally
(my fork is currently under development)

The below documentation is mostly just copy/paste from the CLI since everything
should be self explanatory. If you have any questions on how to use it, that means
I didn't do my job of making it easy enough - so please file a github issue.

## Constraints
I wrote lilyvm with portability in mind by adhering to POSIX standards, but currently lilyvm is only available on the Linux kernel with machine names of i686 and x86_64
(both found via `uname`). I chose this constraint due to my unfamiliarity
with different architectures and not wanting to test a variety unless necessary. So
if you find yourself wanting to use lilyvm on an unsupported kernel or machine
(uname nomenclature), then please file a github issue and we'll figure it out from there.

## Install
```
# into your home directory
curl -s https://raw.githubusercontent.com/olsonpm/lilyvm/latest/dist/install.sh | sh

# creates ~/.lilyvm
```

```
# into a directory of your choice
curl -s https://raw.githubusercontent.com/olsonpm/lilyvm/latest/dist/install.sh \
| sh -s -- --install-dir /path/to/dir

# creates /path/to/dir/.lilyvm
```

Upon finishing, the script will instruct you to modify your shell initialization
script by adding
```
export PATH="/.lilyvm/bin:${PATH}" # Adds lilyvm to your path
```

## Use
```
$ lilyvm --help
Description: A version manager for lilypond

Usage: lilyvm [options]
Options
-h|--help print this
-v|--version print version of lilyvm

Commands
disable-colors disable colors in terminal output - this preference is persisted
enable-colors enable colors in terminal output - this preference is persisted
install install a version of lilypond
ls list installed versions of lilypond
ls-remote list hosted versions of lilypond available for install
uninstall uninstall a version of lilypond
uninstall-lilyvm uninstall lilyvm
update update lilyvm to the latest version
use set lilypond version for shell use
using show current lilypond version

To get help for a command, type lilyvm --help
```

You will mostly be installing versions of lilypond. When you install your first
version of lilypond, its bin directory contents are symlinked to lilyvm's, making it
available on your path. Upon changing versions, the new version's bin directory
contents then become available. This makes your life easier.
```
$ lilyvm ls-remote

* = currently installed

2.8.8-1
2.10.0-2
2.10.33-1
2.12.0-1
2.12.3-1
2.14.0-1
2.14.2-1
2.16.0-1
2.16.1-1
2.16.2-1
2.18.0-1
2.18.1-1
2.18.2-1

$ lilyvm install -v 2.18.2-1

Downloading install script
######################################################################## 100.0%

Install script executed

Lilypond version 2.18.2-1 was successfully installed

Since this is your first install, the current version is now set to this one.
Should you decide to install more versions, you may change your current version
via lilyvm use
```

And you should now have access to lilypond
```
$ which lilypond
//.lilyvm/bin/lilypond

$ lilypond --version
GNU LilyPond 2.18.2

Copyright (c) 1996--2012 by
Han-Wen Nienhuys
Jan Nieuwenhuizen
and others.

This program is free software. It is covered by the GNU General Public
License and you are welcome to change it and/or distribute copies of it
under certain conditions. Invoke as `lilypond --warranty' for more
information.
```

boom

## Test

Keep in mind there are three install tests - each installing a version of lilypond.
The download and installation of a lilypond version takes time.

```
git clone git@github.com:olsonpm/lilyvm.git
cd lilyvm
chmod +x ./run-all-tests.sh
./run-all-tests.sh
```

## Todo
I only intend on working on these if people find lilyvm useful. The current
features are likely more than what I need for personal use.
- Look into command-line test libraries for more thorough and simpler testing
- Install only the files needed instead of the result of github's archive
- Add rc files for per-project lilypond version management
- Look into a build tool for release management