Skip to content

Commit

Permalink
add evilupdate.el script
Browse files Browse the repository at this point in the history
  • Loading branch information
f-fr committed Apr 8, 2015
1 parent 92292bc commit 7ef1a2e
Show file tree
Hide file tree
Showing 19 changed files with 181 additions and 37 deletions.
20 changes: 1 addition & 19 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -112,24 +112,6 @@ elpa:

# Change the version using make VERSION=x.y.z
version:
$(EMACS) --batch --eval '(setq vc-handled-backends nil)' ${FILES} evil-tests.el -Q \
--eval "\
(progn \
(find-file \"evil-vars.el\") \
(when (re-search-forward \"^(defconst evil-version \\\"\\\\([-_.[:word:]]*\\\\)\\\"\" nil t) \
(replace-match \"${VERSION}\" t t nil 1)) \
(find-file \"evil-pkg.el\") \
(goto-line 3) \
(when (and (string-match-p \"[[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+\" \"${VERSION}\") \
(re-search-forward \"\\\"\\\\([-_.[:word:]]*\\\\)\\\"\" nil t)) \
(replace-match \"${VERSION}\" t t nil 1)) \
(dolist (buffer (reverse (buffer-list))) \
(when (buffer-file-name buffer) \
(set-buffer buffer) \
(goto-char (point-min)) \
(when (re-search-forward \"^;;[[:space:]]*Version:[[:space:]]*\\\\([-_.[:word:]]*\\\\)\" nil t) \
(replace-match \"${VERSION}\" t t nil 1)) \
(when (buffer-modified-p) (save-buffer 0))))) \
"
@$(EMACS) --script scripts/evilupdate "${VERSION}"


2 changes: 1 addition & 1 deletion evil-command-window.el
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
;; Author: Emanuel Evans <emanuel.evans at gmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-commands.el
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-common.el
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-core.el
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-digraphs.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-ex.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Frank Fischer <frank fischer at mathematik.tu-chemnitz.de>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-integration.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-macros.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-maps.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-pkg.el
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(define-package
"evil"
"1.0.9"
"1.1.1"
"Extensible Vi layer for Emacs."
'((undo-tree "0.6.3")
(goto-chg "1.6")))
2 changes: 1 addition & 1 deletion evil-repeat.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Frank Fischer <frank.fischer at mathematik.tu-chemnitz.de>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-search.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-states.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-tests.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
2 changes: 1 addition & 1 deletion evil-types.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down
4 changes: 2 additions & 2 deletions evil-vars.el
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
;; Author: Vegard Øye <vegard_oye at hotmail.com>
;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>

;; Version: 1.0.9
;; Version: 1.1.1

;;
;; This file is NOT part of GNU Emacs.
Expand Down Expand Up @@ -1689,7 +1689,7 @@ Otherwise the previous command is assumed as substitute.")
(goto-char (point-min))
(buffer-substring (point-min) (line-end-position)))
;; no repo, use plain version
(t "1.0-dev")))))
(t "1.1.1")))))
"The current version of Evil")

(defun evil-version ()
Expand Down
2 changes: 1 addition & 1 deletion evil.el
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
;; To get in touch, please use the bug tracker or the
;; mailing list (see below).
;; Created: 2011-03-01
;; Version: 1.0.9
;; Version: 1.1.1
;; Keywords: emulation, vim
;; URL: http://gitorious.org/evil
;; Repository: git://gitorious.org/evil/evil.git
Expand Down
162 changes: 162 additions & 0 deletions scripts/evilupdate
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
#!/usr/bin/emacs --script
;;; evilupate.el -- Publishing script for Evil

;;; Header:

;; This file is not part of Emacs

;; Author: Frank Fischer <frank-fischer@shadow-soft.de>
;; Maintainer: Frank Fischer <frank-fischer@shadow-soft.de>
;; Version: 1.0
;; Package-Requires: ((emacs "24.3") (s "1.9.0") (f "0.17.2") yaoddmuse)

;; The contents of this file are subject to the GPL License, Version 3.0.

;; Copyright (C) 2015, Frank Fischer

;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; This is a small script to update Evil's version at certain places:
;;
;; - topic of the IRC channel #evil-mode in irc.freenode.net
;; - EmacsWiki page
;; - header of all source files
;; - the ELPA package file
;;
;; The script should be invoked with the new version string
;;
;; evil-update.el 1.2.3
;;

;;; Code:

(package-initialize)

(require 'f)
(require 'erc)
(require 'yaoddmuse)
(eval-when-compile (require 'cl))

(defconst evilupdate-irc-nick "#lyrobot")
(defconst evilupdate-irc-channel "#evil-mode")
(defconst evilupdate-irc-topic
"Evil = Extensible vi layer for Emacs | Current version: VERSION | http://gitorious.org/evil | If you don't get an answer here, please use the mailing-list implementations-list@lists.ourproject.org")
(defconst evilupdate-wiki-page "Evil")
(defvar evilupdate-version "1.0.0")
(defvar evilupdate-done nil)

(defun evilupdate-wait ()
"Wait until `evilupdate-done' is set to t."
(while (not evilupdate-done)
(sleep-for 1))
(setq evilupdate-done nil))

(defun evilupdate-done ()
"Set `evilupdate-done' to t to stop the corresponding `evilupdate-wait'."
(setq evilupdate-done t))

(defun evilupdate-update-irc ()
"Update the topic of the IRC channel."
(erc-tls :server "irc.freenode.net" :port "6697" :nick "lyrobot")
(add-hook 'erc-join-hook
(lambda ()
(let (case-fold-search)
(erc-set-topic (replace-regexp-in-string "VERSION"
evilupdate-version
evilupdate-irc-topic
nil t)))
(erc-quit-server "")
(evilupdate-done)))
(erc-join-channel evilupdate-irc-channel)
(evilupdate-wait))

(defun evilupdate-wiki-trace (page-buffer-name)
"Callback for updating the EmacsWiki page in buffer PAGE-BUFFER-NAME."
(with-current-buffer page-buffer-name
(goto-char (point-min))
(when (re-search-forward "Current stable version: \\*\\*\\([^*]*\\)\\*\\*")
(goto-char (match-beginning 1))
(delete-region (match-beginning 1) (match-end 1))
(insert evilupdate-version)
(yaoddmuse-post-current-buffer nil)
(evilupdate-done))))

(defun evilupdate-update-emacswiki ()
"Update the version information on the EmacsWiki page."
(setq yaoddmuse-wikis
'(("EmacsWiki" "http://www.emacswiki.org/emacs" utf-8 "uihnscuskc=1;")))
(advice-add 'yaoddmuse-display-page :after 'evilupdate-wiki-trace)
(yaoddmuse-edit "EmacsWiki" evilupdate-wiki-page t)
(evilupdate-wait))

(defun evilupdate-update-regexp (file regexp)
"Update version tag in FILE.
The version tag is defined by the REGEXP, in particular by the first
match group."
(find-file file)
(goto-char (point-min))
(when (re-search-forward regexp nil t)
(goto-char (match-beginning 1))
(delete-region (match-beginning 1) (match-end 1))
(insert evilupdate-version)
(save-buffer)))

(defun evilupdate-update-files ()
"Replace version comments in all source files."
(dolist (file (f-glob "*.el"))
(evilupdate-update-regexp file ";;\\s-*Version:\\s-*\\([^\n]+\\)")))

(defun evilupdate-update-pkg ()
"Replace version in package file."
(evilupdate-update-regexp "evil-pkg.el" "\"evil\"[ \t\n\r]*\"\\([^\"]+\\)\""))

(defun evilupdate-update-var ()
"Replace version in `evil-version' variable."
(evilupdate-update-regexp
"evil-vars.el"
"t \"\\([^\"]*\\)\"[) \n\r\t]*\"The current version of Evil"))

(defun evilupdate-update-news ()
"Send an posting to the mailing list."
(shell-command (concat "thunderbird -compose \"newsgroups=gmane.emacs.vim-emulation,preselectid=id2,subject='[ANN] Evil version " evilupdate-version " released',body='"
"Evil version " evilupdate-version " has been released.

The stable version can be installed from MELPA stable [1].
The latest development version is available from MELPA [2].

The Evil developers.

[1] http://stable.melpa.org
[2] http://melpa.org
'\"")))

(defun evilupdate-update (version)
"Update Evil to VERSION."
(setq evilupdate-cnt 0)
(setq evilupdate-version version)
(evilupdate-update-emacswiki)
(evilupdate-update-irc)
(evilupdate-update-files)
(evilupdate-update-pkg)
(evilupdate-update-var)
(evilupdate-update-news))

(when (/= (length argv) 1)
(user-error "Usage: evilupdate.el VERSION"))

(evilupdate-update (car argv))

;;; evilupdate.el ends here

0 comments on commit 7ef1a2e

Please sign in to comment.