;; license.el -- Pamhyr ;; Copyright (C) 2023-2024 INRAE ;; ;; 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 . ;; -*- coding: utf-8 -*- (defun pamhyr-current-filename () (car (last (file-name-split (buffer-file-name))))) (defun pamhyr-insert-license () (interactive) (let ((filename (pamhyr-current-filename))) (insert (format "# %s -- Pamhyr # Copyright (C) 2024 INRAE # # 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 . # -*- coding: utf-8 -*- " filename)))) (defun pamhyr-update-license () (interactive) (let ((pos (point))) (goto-char (point-min)) (while (re-search-forward "Copyright (C) 2023 INRAE" nil t) (replace-match "Copyright (C) 2023-2024 INRAE")) (goto-char pos))) (defun pamhyr-root-dir-rec-aux (dir) (if (or (equal dir "") (equal dir "/") (equal dir nil)) nil (let ((ndir (directory-file-name (file-name-directory dir)))) (if (file-directory-p (concat ndir "/.git")) ndir (pamhyr-root-dir-rec-aux ndir))))) (defun pamhyr-root-dir () (pamhyr-root-dir-rec-aux (buffer-file-name))) (defun pamhyr--update-license (file) (message (format "Update: %s" file)) (let ((buffer (find-file file))) (with-current-buffer buffer (pamhyr-update-license) (save-buffer)) ;(kill-buffer buffer) )) (defun pamhyr--insert-license (file) (message (format "License: %s" file)) (let ((buffer (find-file file))) (with-current-buffer buffer (goto-char (point-min)) (pamhyr-insert-license) (save-buffer)) ;(kill-buffer buffer) )) (defun pamhyr-update-all-license () (interactive) (let* ((root (pamhyr-root-dir)) (files-with-copyright (split-string (shell-command-to-string (format "git -C '%s' grep -e 'Copyright (C)'|cut -d ':' -f 1|uniq|grep [.]py" root)) "\n")) (files (split-string (shell-command-to-string (format "git -C '%s' ls-files | grep [.]py" root)) "\n")) (files-without-copyright (seq-filter (lambda (file) (not (member file files-with-copyright))) files))) (message (format "%s" files-with-copyright)) (mapcar 'pamhyr--update-license (mapcar (lambda (file) (concat root "/" file)) files-with-copyright)) (message (format "%s" files-without-copyright)) (mapcar 'pamhyr--insert-license (mapcar (lambda (file) (concat root "/" file)) files-without-copyright)))) (defvar pamhyr-mail-template "Dear users, ✨ The version @version of Pamhyr2 is available. ---📄--Change-logs-------------@version--- @description ------------------------------------------ ---💡--Useful-links----------------------- Download this version : https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/releases/@version The documentation : https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/wikis/home Repport an issue : https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/issues or by email at : ------------------------------------------ ---⚠️--Warning--------------------------- For Windows users: Some antivirus programs may detect Pamhyr2 as a virus 🦠, but this is a false positive. The problem is known and comes from the executable generated by PyInstaller. We don't yet have a solution to this problem. If this is your case, you'll need to add an exception to your antivirus software if you want to use Pamhyr2. Alternatively, you can use WSL (Windows Subsystem for Linux) and use the Linux version on Windows. Antivirus analysis : For Linux 🐧 users: Some systems are not compatible with the compiled version, in which case you'll have to go straight to the source code (see the documentation for more details). ------------------------------------------ Br, ") (require 'web) (require 'json) (defun pamhyr-release-mail (release) (interactive "sRelease name: ") (web-http-get (lambda (httpc header my-data) (let* ((data (json-read-from-string my-data)) (release (cdr (assoc 'tag_name data))) (description (cdr (assoc 'description data)))) (let ((buffer (generate-new-buffer (format "* mail-%s *" release)))) (with-current-buffer buffer (insert (string-replace "@description" description (string-replace "@version" release pamhyr-mail-template))) (set-buffer buffer))))) :url (concat "https://gitlab.irstea.fr/api/v4/projects/2779/releases/" release)))