#!/bin/sh
<<\EOF
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
    <title>ellipsis $ curl ellipsis.sh | sh</title>
    <link rel="stylesheet" href="stylesheets/styles.css"/>
    <link rel="stylesheet" href="stylesheets/dark.css"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script src="javascripts/respond.js"></script>
    <!--if lt IE 9script(src='//html5shiv.googlecode.com/svn/trunk/html5.js')
    -->
    <!--if lt IE 8link(rel='stylesheet', href='stylesheets/ie.css')
    -->
  </head>
  <body>
    <div id="header">
      <nav>
        <li class="fork"><a href="https://github.com/ellipsis/ellipsis">View On GitHub</a></li>
        <li class="downloads"><a href="https://github.com/ellipsis/ellipsis/zipball/master">ZIP</a></li>
        <li class="downloads"><a href="https://github.com/ellipsis/ellipsis/tarball/master">TAR</a></li>
        <li class="title">DOWNLOADS</li>
      </nav>
    </div>
    <!-- end header-->
    <div class="wrapper">
      <section><h1 id="ellipsis-build-status-travis-image-travis-url-documentation-status-docs-image-docs-url-latest-tag-tag-image-tag-url-gitter-chat-gitter-image-gitter-url-">Ellipsis <a href="https://travis-ci.org/ellipsis/ellipsis"><img src="https://img.shields.io/travis/ellipsis/ellipsis.svg" alt="Build Status"></a> <a href="http://docs.ellipsis.sh"><img src="https://readthedocs.org/projects/ellipsis/badge/?version=master" alt="Documentation status"></a> <a href="https://github.com/ellipsis/ellipsis/tags"><img src="https://img.shields.io/github/tag/ellipsis/ellipsis.svg" alt="Latest tag"></a> <a href="https://gitter.im/ellipsis/ellipsis"><img src="https://badges.gitter.im/ellipsis/ellipsis.svg" alt="Gitter chat"></a></h1>
<pre><code><span class="hljs-tag"> <span class="hljs-title">_</span>    <span class="hljs-title">_</span>    <span class="hljs-title">_</span>
</span><span class="hljs-tag">/\<span class="hljs-title">_</span>\ /\<span class="hljs-title">_</span>\ /\<span class="hljs-title">_</span>\
</span><span class="hljs-tag">\/<span class="hljs-title">_</span>/ \/<span class="hljs-title">_</span>/ \/<span class="hljs-title">_</span>/   …<span class="hljs-title">because</span> $<span class="hljs-title">HOME</span> <span class="hljs-title">is</span> <span class="hljs-title">where</span> <span class="hljs-title">the</span> &lt;<span class="hljs-title">3</span> <span class="hljs-title">is</span>!</span>
</code></pre><p>Ellipsis is a package manager for dotfiles.</p>
<h3 id="features">Features</h3>
<ul>
<li>Creating new packages is trivial (any git repository is already a package).</li>
<li>Modular configuration files are easier to maintain and share with others.</li>
<li>Allows you to quickly see which dotfiles have been modified, and keep them
updated and in-sync across systems.</li>
<li>Adding new dotfiles to your collection can be automated with <code>ellipsis add</code>.</li>
<li>Cross platform, known to work on Mac OS X, Linux, FreeBSD and even Cygwin.</li>
<li>Large test suite to ensure your <code>$HOME</code> doesn&#39;t get ravaged.</li>
<li>Completely customizable.</li>
<li><a href="http://docs.ellipsis.sh/upgrading">Works with existing dotfiles!</a></li>
</ul>
<h3 id="install">Install</h3>
<p><strong>Requirements:</strong> bash, curl, git</p>
<p>Clone and symlink or use handy-dandy installer:</p>
<pre><code class="lang-bash">$ curl ellipsis.sh | sh
</code></pre>
<p><sup>...no you didn&#39;t read that wrong, <a href="https://github.com/ellipsis/ellipsis/blob/gh-pages/index.html">the ellipsis.sh website also doubles as the installer</a></sup></p>
<p>You can also specify which packages to install by setting the <code>PACKAGES</code> variable, i.e.:</p>
<pre><code class="lang-bash">$ curl ellipsis.sh | PACKAGES=<span class="hljs-string">'vim zsh'</span> sh
</code></pre>
<p>Add <code>~/.ellipsis/bin</code> to your <code>$PATH</code> (or symlink somewhere convenient) and
start managing your dotfiles in style :)</p>
<p>As of version <code>1.7.3</code> you can also use the init system to automatically setup
you environment. As a bonus it will allow you to use the powerful <code>pkg.init</code>
hook to do the same for your packages.</p>
<h3 id="usage">Usage</h3>
<p>Ellipsis comes with no dotfiles out of the box. To install packages, use
<code>ellipsis install</code>. Packages can be specified by github-user/repo or full
ssh/git/http(s) urls:</p>
<pre><code class="lang-bash">$ ellipsis install ssh://github.com/zeekay/private.git
$ ellipsis install zeekay/vim
$ ellipsis install zsh
</code></pre>
<p>...all work. By convention <code>username/package</code> and <code>package</code> are aliases for
<a href="https://github.com/username/dot-package">https://github.com/username/dot-package</a>.</p>
<p>For full usage information you can read the <a href="http://docs.ellipsis.sh/usage">docs</a> or ask help from
the command line with the <code>-h</code> option.</p>
<h3 id="configuration">Configuration</h3>
<p>You can customize ellipsis by exporting a few different variables:</p>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>GITHUB_USER</code> / <code>ELLIPSIS_USER</code></td>
<td>Customizes whose dotfiles are installed when you <code>ellipsis install</code> without specifying user or a full repo url. Defaults to <code>$(git config github.user)</code> or <code>whoami</code>.</td>
</tr>
<tr>
<td><code>ELLIPSIS_REPO</code></td>
<td>Customize location of ellipsis repo cloned during a curl-based install. Defaults to <code>https://github.com/ellipsis/ellipsis</code>.</td>
</tr>
<tr>
<td><code>ELLIPSIS_PROTO</code></td>
<td>Customizes which protocol new packages are cloned with, you can specify <code>https</code>,<code>ssh</code>, <code>git</code>. Defaults to <code>https</code>.</td>
</tr>
<tr>
<td><code>ELLIPSIS_HOME</code></td>
<td>Customize which folder files are symlinked into, defaults to <code>$HOME</code>. (Mostly useful for testing)</td>
</tr>
<tr>
<td><code>ELLIPSIS_PATH</code></td>
<td>Customize where ellipsis lives on your filesystem, defaults to <code>~/.ellipsis</code>.</td>
</tr>
<tr>
<td><code>ELLIPSIS_PACKAGES</code></td>
<td>Customize where ellipsis installs packages on your filesystem, defaults to <code>~/.ellipsis/packages</code>.</td>
</tr>
<tr>
<td><code>ELLIPSIS_LOGFILE</code></td>
<td>Customize location of the logfile, defaults to <code>/tmp/ellipsis.log</code>.</td>
</tr>
</tbody>
</table>
<pre><code class="lang-bash"><span class="hljs-built_in">export</span> ELLIPSIS_USER=<span class="hljs-string">"zeekay"</span>
<span class="hljs-built_in">export</span> ELLIPSIS_PROTO=<span class="hljs-string">"ssh"</span>
<span class="hljs-built_in">export</span> ELLIPSIS_PATH=<span class="hljs-string">"~/.el"</span>
</code></pre>
<h3 id="packages">Packages</h3>
<p>A package is any repo with files you want to symlink into <code>$ELLIPSIS_HOME</code>
(typically <code>$HOME</code>). By default all of a repository&#39;s non-hidden files (read:
not beginning with a <code>.</code>) will naively be linked into place, with the exception
of a few common text files (<code>README</code>, <code>LICENSE</code>, etc).</p>
<p>You can customize how ellipsis interacts with your package by adding an
<code>ellipsis.sh</code> file to the root of your project. Here&#39;s an example of a complete
<code>ellipsis.sh</code> file:</p>
<pre><code class="lang-bash"><span class="hljs-meta">#!/usr/bin/env bash</span>
</code></pre>
<p>Yep, that&#39;s it :) If all you want to do is symlink some files into <code>$HOME</code>,
adding an <code>ellipsis.sh</code> to your package is completely optional. But what if you
need more? <a href="http://docs.ellipsis.sh/hooks">That&#39;s where hooks come in...</a></p>
<h3 id="docs">Docs</h3>
<p>Please consult the <a href="http://docs.ellipsis.sh">docs</a> for more information.</p>
<p>Specific parts that could be off interest:</p>
<ul>
<li><a href="http://docs.ellipsis.sh/hooks">Hooks</a></li>
<li><a href="http://docs.ellipsis.sh/init">Init system</a></li>
<li><a href="http://docs.ellipsis.sh/api">API</a></li>
<li><a href="http://docs.ellipsis.sh/pkgindex">Package index</a></li>
<li><a href="http://docs.ellipsis.sh/upgrading">Upgrading to Ellipsis</a></li>
<li><a href="http://docs.ellipsis.sh/completion">Zsh completion</a></li>
</ul>
<h3 id="development">Development</h3>
<p>Pull requests welcome! New code should follow the <a href="https://google.github.io/styleguide/shell.xml">existing style</a>
(and ideally include <a href="https://github.com/sstephenson/bats">tests</a>).</p>
<p>Suggest a feature or report a bug? Create an <a href="http://github.com/ellipsis/ellipsis/issues">issue</a>!</p>
<h3 id="license">License</h3>
<p>Ellipsis is open-source software licensed under the <a href="http://opensource.org/licenses/MIT">MIT license</a>.</p>
</section>
    </div>
    <!--if !IE
    script
      fixScale(document);
    -->
  </body>
</html><!-- 
EOF

# shim for ellipsis install.bash
#
# This is used on ellipsis.sh to bootstrap the full installer, which you
# otherwise can't curl and pipe to sh (as it requires bash). Not meant to be
# run standalone.

# wait for curl output to finish
sleep 0.5

# Ensure dependencies are installed.
deps="bash curl git"

for dep in $deps; do
    hash $dep 2>/dev/null || { echo >&2 "ellipsis requires $dep to be installed."; exit 1; }
done

# Download full installer and execute with bash
curl -sL https://raw.githubusercontent.com/ellipsis/ellipsis/master/scripts/install.bash > install-$$.bash
bash install-$$.bash

# Clean up
rm install-$$.bash