Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

83 lines (74 sloc) 3.356 kb
;;; el-get-install.el --- installer for the lazy
;;
;; Copyright (C) 2010 Dimitri Fontaine
;;
;; Author: Dimitri Fontaine <dim@tapoueh.org>
;; URL: http://www.emacswiki.org/emacs/el-get.el
;; Created: 2010-06-17
;; Keywords: emacs package elisp install elpa git git-svn bzr cvs apt-get fink http http-tar
;; Licence: WTFPL, grab your copy here: http://sam.zoy.org/wtfpl/
;;
;; This file is NOT part of GNU Emacs.
;;
;; bootstrap your el-get installation, the goal is then to use el-get to
;; update el-get.
;;
;; So the idea is that you copy/paste this code into your *scratch* buffer,
;; hit C-j, and you have a working el-get.
(let ((el-get-root
(file-name-as-directory
(or (bound-and-true-p el-get-dir)
(concat (file-name-as-directory user-emacs-directory) "el-get")))))
(when (file-directory-p el-get-root)
(add-to-list 'load-path el-get-root))
;; try to require el-get, failure means we have to install it
(unless (require 'el-get nil t)
(unless (file-directory-p el-get-root)
(make-directory el-get-root t))
(let* ((package "el-get")
(buf (switch-to-buffer "*el-get bootstrap*"))
(pdir (file-name-as-directory (concat el-get-root package)))
(git (or (executable-find "git")
(error "Unable to find `git'")))
(url (or (bound-and-true-p el-get-git-install-url)
"http://github.com/dimitri/el-get.git"))
(default-directory el-get-root)
(process-connection-type nil) ; pipe, no pty (--no-progress)
;; First clone el-get
(status
(call-process
git nil `(,buf t) t "--no-pager" "clone" "-v" url package)))
(unless (zerop status)
(error "Couldn't clone el-get from the Git repository: %s" url))
;; switch branch if we have to
(let* ((branch (cond
;; Check if a specific branch is requested
((bound-and-true-p el-get-install-branch))
;; Check if master branch is requested
((boundp 'el-get-master-branch) "master")
;; Read the default branch from the el-get recipe
((plist-get (with-temp-buffer
(insert-file-contents-literally
(expand-file-name "recipes/el-get.rcp" pdir))
(read (current-buffer)))
:branch))
;; As a last resort, use the master branch
("master")))
(remote-branch (format "origin/%s" branch))
(default-directory pdir)
(bstatus
(if (string-equal branch "master")
0
(call-process git nil (list buf t) t "checkout" "-t" remote-branch))))
(unless (zerop bstatus)
(error "Couldn't `git checkout -t %s`" branch)))
(add-to-list 'load-path pdir)
(load package)
(let ((el-get-default-process-sync t) ; force sync operations for installer
(el-get-verbose t)) ; let's see it all
(el-get-post-install "el-get"))
(unless (boundp 'el-get-install-skip-emacswiki-recipes)
(el-get-emacswiki-build-local-recipes))
(with-current-buffer buf
(goto-char (point-max))
(insert "\nCongrats, el-get is installed and ready to serve!")))))
Jump to Line
Something went wrong with that request. Please try again.