diff options
-rw-r--r-- | exiftool.el (renamed from el-exiftool.el) | 42 | ||||
-rw-r--r-- | tests/Makefile | 2 | ||||
-rw-r--r-- | tests/exiftool-tests.el (renamed from tests/el-exiftool-tests.el) | 48 |
3 files changed, 46 insertions, 46 deletions
diff --git a/el-exiftool.el b/exiftool.el index 33a91e5..cf7a89f 100644 --- a/el-exiftool.el +++ b/exiftool.el @@ -1,4 +1,4 @@ -;;; el-exiftool.el --- Elisp wrapper around ExifTool -*- lexical-binding: t -*- +;;; exiftool.el --- Elisp wrapper around ExifTool -*- lexical-binding: t -*- ;; Elisp wrapper around ExifTool ;; Copyright (C) 2017 by Arun I @@ -6,32 +6,32 @@ ;; Author: Arun I <arunisaac@systemreboot.net> ;; Version: 0.1 ;; Keywords: data -;; Homepage: https://git.systemreboot.net/el-exiftool +;; Homepage: https://git.systemreboot.net/exiftool.el ;; Package-Requires: ((emacs "25")) -;; This file is part of el-exiftool. +;; This file is part of exiftool.el. -;; el-exiftool is free software: you can redistribute it and/or modify +;; exiftool.el 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. -;; el-exiftool is distributed in the hope that it will be useful, +;; exiftool.el 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 el-exiftool. If not, see <http://www.gnu.org/licenses/>. +;; along with exiftool.el. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: ;; -;; el-exiftool is an elisp wrapper around ExifTool. ExifTool supports +;; exiftool.el is an elisp wrapper around ExifTool. ExifTool supports ;; reading and writing metadata in various formats including EXIF, XMP ;; and IPTC. ;; ;; There is a significant overhead in loading ExifTool for every -;; command to be exected. So, el-exiftool starts an ExifTool process +;; command to be exected. So, exiftool.el starts an ExifTool process ;; in the -stay_open mode, and passes all commands to it. For more ;; about ExifTool's -stay_open mode, see ;; http://www.sno.phy.queensu.ca/~phil/exiftool/#performance @@ -42,7 +42,7 @@ (require 'subr-x) (require 'tq) -(defun el-exiftool--tq-sync-query (tq question regexp) +(defun exiftool--tq-sync-query (tq question regexp) "Add a transaction to transaction queue TQ, block and read response. See `tq-enqueue' for details of arguments QUESTION and REGEXP." @@ -53,7 +53,7 @@ See `tq-enqueue' for details of arguments QUESTION and REGEXP." (accept-process-output)) response)) -(defun el-exiftool-run () +(defun exiftool-run () "Start an exiftool process if one is not already running. If an exiftool process is already running, delete it, and create @@ -63,8 +63,8 @@ process." (delete-process exiftool)) (start-process "exiftool" "exiftool" "exiftool" "-stay_open" "True" "-@" "-")) -(let ((tq (tq-create (el-exiftool-run)))) - (defun el-exiftool-command (&rest args) +(let ((tq (tq-create (exiftool-run)))) + (defun exiftool-command (&rest args) "Execute a command in the currently running exiftool process. ARGS are arguments of the command to be run, as provided to the @@ -72,12 +72,12 @@ exiftool command line application." (string-trim (let ((suffix "{ready}\n")) (string-remove-suffix - suffix (el-exiftool--tq-sync-query + suffix (exiftool--tq-sync-query tq (concat (string-join args "\n") "\n-execute\n") suffix)))))) -(defun el-exiftool-read (file &rest tags) +(defun exiftool-read (file &rest tags) "Read TAGS from FILE, return an alist mapping TAGS to values. If a tag is not found, return an empty string \"\" as the @@ -91,18 +91,18 @@ value. If no TAGS are specified, read all tags from FILE. (let ((value (if (equal value "-") "" value))) (cons tag value)))) (split-string - (apply 'el-exiftool-command + (apply 'exiftool-command "-s" "-s" "-f" (append (mapcar (apply-partially 'format "-%s") tags) (list file))) "\n+"))) -(defun el-exiftool-copy (source destination &rest tags) +(defun exiftool-copy (source destination &rest tags) "Copy TAGS from SOURCE file to DESTINATION file. If no TAGS are specified, copy all tags from SOURCE." - (apply 'el-exiftool-command + (apply 'exiftool-command "-overwrite_original" "-tagsFromFile" source (append @@ -111,7 +111,7 @@ If no TAGS are specified, copy all tags from SOURCE." (message "Tags from %s copied to %s" source destination) destination) -(defun el-exiftool-write (file &rest tag-value-alist) +(defun exiftool-write (file &rest tag-value-alist) "Write tags to FILE. The metadata to be written is specified as (TAG . VALUE) @@ -119,7 +119,7 @@ pairs. Specifying the empty string \"\" for VALUE deletes that TAG. \(fn FILE (TAG . VALUE)...)" - (apply 'el-exiftool-command + (apply 'exiftool-command "-m" "-overwrite_original" (append (mapcar @@ -129,6 +129,6 @@ TAG. tag-value-alist) (list file)))) -(provide 'el-exiftool) +(provide 'exiftool) -;;; el-exiftool.el ends here +;;; exiftool.el ends here diff --git a/tests/Makefile b/tests/Makefile index c501287..95d8728 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,2 +1,2 @@ check: - emacs -batch -l ert -l ../el-exiftool.el -l el-exiftool-tests.el -f ert-run-tests-batch-and-exit + emacs -batch -l ert -l ../exiftool.el -l exiftool-tests.el -f ert-run-tests-batch-and-exit diff --git a/tests/el-exiftool-tests.el b/tests/exiftool-tests.el index 6d7d01a..fa13dbf 100644 --- a/tests/el-exiftool-tests.el +++ b/tests/exiftool-tests.el @@ -1,45 +1,45 @@ -;;; el-exiftool.el --- Elisp wrapper around exiftool ;; -*- lexical-binding: t -*- +;;; exiftool.el --- Elisp wrapper around exiftool ;; -*- lexical-binding: t -*- ;; Elisp wrapper around exiftool ;; Copyright (C) 2017 by Arun I ;; ;; Author: Arun I <arunisaac@systemreboot.net> ;; Keywords: data -;; Homepage: https://git.systemreboot.net/el-exiftool +;; Homepage: https://git.systemreboot.net/exiftool.el -;; This file is part of el-exiftool. +;; This file is part of exiftool.el. -;; el-exiftool is free software: you can redistribute it and/or modify +;; exiftool.el 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. -;; el-exiftool is distributed in the hope that it will be useful, +;; exiftool.el 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 el-exiftool. If not, see <http://www.gnu.org/licenses/>. +;; along with exiftool.el. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: ;; -;; Unit testing for el-exiftool +;; Unit testing for exiftool.el ;;; Code: -(defvar el-exiftool-tests--tag-value +(defvar exiftool-tests--tag-value '(("Marked" . "True") ("Creator" . "foo") ("Rights" . "bar"))) -(require 'el-exiftool) +(require 'exiftool) (require 'ert) (defmacro with-temp-test-file (test-file temp-file &rest body) "Copy TEST-FILE to temporary file, put path in TEMP-FILE, evaluate BODY." (declare (indent defun)) - `(let ((,temp-file (make-temp-file "el-exiftool-" + `(let ((,temp-file (make-temp-file "exiftool-" nil (concat "-" ,test-file)))) (copy-file ,test-file ,temp-file t) ,@body @@ -47,28 +47,28 @@ (ert-deftest read-write-test () (with-temp-test-file "test1.png" temp-file - (apply 'el-exiftool-write temp-file el-exiftool-tests--tag-value) - (should (equal (apply 'el-exiftool-read temp-file (mapcar 'car el-exiftool-tests--tag-value)) - el-exiftool-tests--tag-value)))) + (apply 'exiftool-write temp-file exiftool-tests--tag-value) + (should (equal (apply 'exiftool-read temp-file (mapcar 'car exiftool-tests--tag-value)) + exiftool-tests--tag-value)))) (ert-deftest delete-test () (with-temp-test-file "test1.png" temp-file - (el-exiftool-write temp-file (car el-exiftool-tests--tag-value)) + (exiftool-write temp-file (car exiftool-tests--tag-value)) (let ((delete-pair - (cons (caar el-exiftool-tests--tag-value) ""))) - (el-exiftool-write temp-file delete-pair) - (should (equal (car (el-exiftool-read temp-file "Marked")) + (cons (caar exiftool-tests--tag-value) ""))) + (exiftool-write temp-file delete-pair) + (should (equal (car (exiftool-read temp-file "Marked")) delete-pair))))) (ert-deftest copy-test () (with-temp-test-file "test1.png" temp-1 (with-temp-test-file "test2.jpg" temp-2 - (apply 'el-exiftool-write temp-1 el-exiftool-tests--tag-value) - (el-exiftool-copy temp-1 temp-2) - (let ((tags (mapcar 'car el-exiftool-tests--tag-value))) - (should (equal (apply 'el-exiftool-read temp-1 tags) - (apply 'el-exiftool-read temp-2 tags))))))) + (apply 'exiftool-write temp-1 exiftool-tests--tag-value) + (exiftool-copy temp-1 temp-2) + (let ((tags (mapcar 'car exiftool-tests--tag-value))) + (should (equal (apply 'exiftool-read temp-1 tags) + (apply 'exiftool-read temp-2 tags))))))) -(provide 'el-exiftool-tests) +(provide 'exiftool-tests) -;;; el-exiftool-tests.el ends here +;;; exiftool-tests.el ends here |