emacs-guix/elisp/guix-ui-system-generation.el
Alex Kost 42716d2ce7 Revival commit
Emacs interface for Guix is about to be separated from the Guix code, so
this commit removes the old code and adds the according code and
data (elisp, scheme and texi documentation) to this repository.

The code itself wasn't touched (only header commentaries were changed),
so all this stuff is not in a working state yet.
2016-11-02 11:55:30 +03:00

105 lines
3.5 KiB
EmacsLisp
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; guix-ui-system-generation.el --- Interface for displaying system generations -*- lexical-binding: t -*-
;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;; This file is part of Emacs-Guix.
;; Emacs-Guix 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.
;;
;; Emacs-Guix 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 Emacs-Guix. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides an interface for displaying system generations
;; in 'list' and 'info' buffers, and commands for working with them.
;;; Code:
(require 'cl-lib)
(require 'guix-list)
(require 'guix-ui)
(require 'guix-ui-generation)
(require 'guix-profiles)
(guix-ui-define-entry-type system-generation)
(defun guix-system-generation-get-display (search-type &rest search-values)
"Search for system generations and show results.
See `guix-ui-get-entries' for the meaning of SEARCH-TYPE and
SEARCH-VALUES."
(apply #'guix-list-get-display-entries
'system-generation
guix-system-profile
search-type search-values))
;;; System generation 'info'
(guix-ui-info-define-interface system-generation
:buffer-name "*Guix Generation Info*"
:format '((number format guix-generation-info-insert-number)
(label format (format))
(prev-number format (format))
(current format guix-generation-info-insert-current)
(path format (format guix-file))
(time format (time))
(root-device format (format))
(kernel format (format guix-file)))
:titles guix-generation-info-titles)
;;; System generation 'list'
;; FIXME It is better to make `guix-generation-list-shared-map' with
;; common keys for both usual and system generations.
(defvar guix-system-generation-list-mode-map
(copy-keymap guix-generation-list-mode-map)
"Keymap for `guix-system-generation-list-mode' buffers.")
(guix-ui-list-define-interface system-generation
:buffer-name "*Guix Generation List*"
:format '((number nil 5 guix-list-sort-numerically-0 :right-align t)
(current guix-generation-list-get-current 10 t)
(label nil 40 t)
(time guix-list-get-time 20 t)
(path guix-list-get-file-name 30 t))
:titles guix-generation-list-titles
:sort-key '(number . t)
:marks '((delete . ?D)))
;;; Interactive commands
;;;###autoload
(defun guix-system-generations ()
"Display information about system generations."
(interactive)
(guix-system-generation-get-display 'all))
;;;###autoload
(defun guix-last-system-generations (number)
"Display information about last NUMBER of system generations."
(interactive "nThe number of last generations: ")
(guix-system-generation-get-display 'last number))
;;;###autoload
(defun guix-system-generations-by-time (from to)
"Display information about system generations created between FROM and TO."
(interactive
(list (guix-read-date "Find generations (from): ")
(guix-read-date "Find generations (to): ")))
(guix-system-generation-get-display
'time (float-time from) (float-time to)))
(provide 'guix-ui-system-generation)
;;; guix-ui-system-generation.el ends here