• Stars
    star
    780
  • Rank 58,299 (Top 2 %)
  • Language
    Shell
  • License
    MIT License
  • Created almost 11 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Elixir version manager

kiex - Elixir version manager

Kiex allows you to easily build and switch between different Elixir versions.

It supports setting the default (global) Elixir version as well as per shell/project versions.

Everything is self-contained under ~/.kiex.

Usage is based lightly on RVM, kerl, and rbenv.

NOTE: Some Erlang source builds are broken. See below.

Install

Prerequisites: bash, curl, erlang, git, make, openssl

Run the following to get up and running:

\curl -sSL https://raw.githubusercontent.com/taylor/kiex/master/install | bash -s

which will install in $HOME/.kiex.

Usage

List installed versions

  • kiex list

List known releases

  • kiex list known (or kiex list releases)

List current branches

  • kiex list branches

Install a known release or branch.

  • kiex install 0.12.5

Use specific elixir version

  • kiex use 0.12.5 -- Sets the elixir version for current shell.

Create an alias for the specified elixir version

  • kiex alias 0.12.5 0.12

Use sub-shell with specific elixir version

  • kiex shell 0.12.5 -- Starts sub-shell with given elixir version. Exiting shell goes to default.

Set default elixir version

  • kiex default 0.12.5

Uninstall kiex and elixirs

  • kiex implode -- This removes all versions of elixir installed by kiex as well as all kiex components

Upgrade kiex

  • kiex selfupdate -- pull down latest updates for kiex
    • Can also re-curl

Sourcing elixir into your path

After installing your preferred version of elixir and setting it as your default you can use kiex scripts to put your default elixir bin into your path. One way to do this is to add the following line into your rc file:

[[ -s "$HOME/.kiex/scripts/kiex" ]] && source "$HOME/.kiex/scripts/kiex"

Design philosophy

  • KISS
  • Sane defaults
  • Self-contained
  • Single-purpose

Comparison Q&A

How is it like exenv (rbenv)?

  • Super light and simple
  • Focus on installing & managing one piece of software: Elixir

How is it not like exenv?

  • Does not use shims
  • Includes elixir build component

How is it like Kerl?

  • Minimal command set
  • Retrieves, builds, installs and manages different releases

How is it not like Kerl?

  • Not as flexible on install path
  • Dynamically gets release list instead of caching
  • Build and install actions are not separated

How is it like RVM?

  • Sane defaults
  • Uses Unix PATH to manage binary to use

How is it not like RVM?

  • No function over-loading
  • Does not manage/install extra software and prereqs

Platforms/Shells tested

Operating Systems:

  • Arch
  • CentOS
  • Debian
  • FreeBSD
  • OS X/Darwin
  • Ubuntu

Shells:

  • bash
  • csh
  • tcsh
  • zsh

Erlang installs:

  • erlang-solutions
  • erlang.org
  • kerl
  • Debian apt, FreeBSD pkg, OS X brew

Alternatives and References

Alternatives:

Related tools:

Limitations

  • Does not build erlang
  • Does not build Dynamo or any other elixir app
  • Same build directory used for every build (saving space vs keeping build env around)
  • No uninstall option for installed elixir versions
  • No per-directory/project config file.
    • You can hack it in by adding kiex use to .rvmrc or friends ;P

Notes

Some erlang builds (including default kerl) are unusuable on current CentOS and Fedora distros as a result of an OpenSSL update. -- 2014/03/31

Various bugs reported:

A update to OTP crypto https://github.com/RoadRunnr/otp/commit/8837c1be2ba8a3c123df3f5a87003daa9aac6539

TODO

  • Merge install script into kiex script as an install function
  • Cleanup build output (extra git info etc)
  • Maybe print source line with use command
  • Add active command (or similar) to show current elixir
    • Already in list command - this would be the single version
    • Maybe show source line?
  • Add sourceline or similar command to show source line to use?
  • Maybe add dynamo install and setup for MIX_PATH
    • how to tie to elixir used? gemset like?
    • use dynamo tags?
  • Look at elixir-build for ideas, collaboration

License

See LICENSE file

More Repositories

1

ypscaper

Yellow Page Scraper - search the yellow pages via various online sites
Ruby
8
star
2

learningtoprogram

Introduction to programming
Ruby
7
star
3

TunesControl

clone of google code svn for the Android DACP Remote Control by Jeffrey Sharkey
Java
6
star
4

dotfiles

All my public dotfiles
Lua
5
star
5

TunesRemote-Plus

clone of TunesRemote-Plus google code repo
Java
5
star
6

acdcontrol

Apple Cinema Display Control Utility for Linux -- clone of upstream with some minor updates
C++
5
star
7

awesome_gnome_xsession

Awesome with just the right about of gnome
Shell
5
star
8

html5uploader

clone of http://code.google.com/p/html5uploader/
JavaScript
5
star
9

snippets

Random code snippets, testing, playing, etc
Ruby
4
star
10

vimconfig

Vim configuration
Python
4
star
11

example_rack_foreman_sinatra_worker

super simple sinatra foreman unicorn thin rack example
Ruby
3
star
12

pair-cobbler

This will be the pairing setup for allowing people to easily share their screens. Right now is just a quick dump for a few people that wanted it *now* :)
Ruby
3
star
13

muttconfig

My mutt configuration files
3
star
14

A2

2
star
15

lih

figure it out
Ruby
2
star
16

howto

now how did i do that?
2
star
17

fonts

I like fonts
2
star
18

j2_numberpool

j2 fax free number pool... so you can pick your area code (hopefully)
2
star
19

vim-mswebdev

Making editing microsoft web dev files ever so slightly nicer
Vim Script
2
star
20

syncer

simple backups and file syncing with rsync
Shell
2
star
21

iOS-Hello-World

simple hello world example
Objective-C
2
star
22

acts_as_state_machine

Fork of http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk
2
star
23

taylor

1
star
24

adhearsion-test

Adhearsion test area
1
star
25

myrackspacedns

myrackspace dns library
Ruby
1
star
26

test

scratchy
1
star
27

A

A test -- See the wiki for current test
1
star
28

utils

Random utiliy programs, scripts, etc
Shell
1
star
29

domu_create

domu creation scripts for quick xen images (lvm and file)
1
star
30

basesyssetup

system installation & configuration helpers scripts
Shell
1
star
31

taylor.github.com

1
star
32

light-kiss

A brightness cli app that works (for me)
Shell
1
star
33

pkgs

testing package repo on github :)
1
star
34

mysyssetup

setting up my system the way i like it
Lua
1
star
35

preview

a place to preview stuff
1
star
36

n2n-mirror

mirror of n2n
C
1
star
37

slk-and-sqgl

HTML
1
star
38

vim-zoomwin

Repo of http://vim.sourceforge.net/scripts/script.php?script_id=508 for use with Vundle or Pathogen
Vim Script
1
star
39

elixir-semver

semver library in Elixir http://semver.org
1
star
40

vim-ixxspec

quick and dirty rspec integration in vim
Vim Script
1
star