;;; jao-shell.el --- shell utils -*- lexical-binding: t; -*- ;; Copyright (C) 2022 jao ;; Author: jao ;; Keywords: shell ;; 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 . ;;; Commentary: ;; shell helpers ;;; Code: (defun jao-shell--quote (x) (shell-quote-argument (format "%s" x))) ;;;###autoload (defun jao-shell-cmd-lines (cmd &rest args) (let ((cmd (concat cmd " " (mapconcat #'jao-shell--quote args " ")))) (split-string (shell-command-to-string cmd) "\n" t))) ;;;###autoload (defun jao-shell-string (cmd &rest args) (string-trim (or (car (apply #'jao-shell-cmd-lines cmd args)) ""))) ;;;###autoload (defun jao-shell-exec (command) (interactive (list (read-shell-command "$ " (if current-prefix-arg (cons (concat " " (buffer-file-name)) 0) "")))) (start-process-shell-command command nil command)) (defmacro jao-shell-def-exec (name &rest args) `(defun ,name (&rest other-args) (interactive) (start-process-shell-command ,(car args) "*jao-exec - console*" (string-join (append (list ,@args) other-args) " ")))) ;;;###autoload (defun jao-shell-running-p (pr) (not (string-blank-p (shell-command-to-string (concat "pidof " pr))))) (provide 'jao-shell) ;;; jao-shell.el ends here