update blog
[blog.git] / blog-tool.el
1 ;;; blog-tool.el --- Some utility functions of blog  -*- lexical-binding: t; -*-
2
3 ;; Copyright (C) 2017  Peng Li
4
5 ;; Author: Peng Li <seudut@gmail.com>
6 ;; Keywords: lisp
7
8 ;; This program is free software; you can redistribute it and/or modify
9 ;; it under the terms of the GNU General Public License as published by
10 ;; the Free Software Foundation, either version 3 of the License, or
11 ;; (at your option) any later version.
12
13 ;; This program is distributed in the hope that it will be useful,
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 ;; GNU General Public License for more details.
17
18 ;; You should have received a copy of the GNU General Public License
19 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21 ;;; Commentary:
22
23 ;; Some functions to create post/page
24
25 ;;; Code:
26
27 (require 'org)
28
29 (defconst blog-root-dir (file-name-directory (buffer-file-name)))
30
31
32 (defun blog-tool-create-post ()
33   "Create a post."
34   (interactive)
35   (let ((title (read-from-minibuffer "Title: "))
36         (filename ""))
37     (setq filename
38           (concat blog-root-dir "/posts/"
39                   (replace-regexp-in-string " " "-" title)
40                   ".org"))
41     (find-file filename)
42     (insert (concat
43              "#+TITLE: " title "\n"
44              "#+AUTHOR: " my-name "\n"
45              "#+EMAIL: " my-email "\n"
46              "#+DATE: "))
47     (org-insert-time-stamp (current-time) nil nil nil "\n")
48     (insert "\n")
49     (save-buffer)))
50
51 (defun blog-tool-start-server ()
52   "Start a http server on local folder for test."
53   (interactive)
54   ;; need to check if 8000 port is in use or not
55   (let ((process-name "blog-server")
56         (buffer-name "blog-srv-buf")
57         (port-number "8000")
58         (default-directory "~/project/blog/_site/"))
59     (when (get-buffer buffer-name)
60       (with-current-buffer buffer-name
61         (erase-buffer)))
62     (start-process process-name buffer-name "python" "-m" "SimpleHTTPServer" port-number)
63     (split-window-below (- (/ (window-total-height) 3)))
64     (other-window 1)
65     (switch-to-buffer buffer-name)
66     (other-window 1)))
67
68 (defun blog-tool-stop-server ()
69   "Stop the http server."
70   (interactive)
71   (kill-process (get-process "blog-server")))
72
73
74
75
76 (provide 'blog-tool)
77 ;;; blog-tool.el ends here