#!/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> <<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'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'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'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'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'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'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