Snippets

増田彬 gen_hugo_template.py

Created by Akira Masuda
# !/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os, argparse, random
from datetime import datetime as dt

def create_file(args, dst_dir):
    dt_time = args.d.split('T')
    fn = dt_time[0] + '-' + args.f + '.md'
    fp = os.path.join(dst_dir, fn)

    if os.path.exists(dst_dir) == False:
        os.makedirs(dst_dir)

    # select random img if specified none
    img_path=args.i
    if img_path == None:
        img_path = "img/post-bg-{:03d}.jpg".format(random.randint(1,16))

    with open(fp, 'w+') as pf:
        pf.write('---\n')
        pf.write('author:     "{0}"\n'.format(args.a))
        pf.write('date:       {0}\n'.format(args.d))
        pf.write('title:      "{0}"\n'.format(args.t))
        if args.s != "":
            pf.write('subtitle:   "{0}"\n'.format(args.s))
        pf.write('header_img: "{0}"\n'.format(img_path))
        if args.draft:
            pf.write('draft:     true\n')
        if args.tags != None:
            pf.write('tags:     [{0}]\n'.format(','.join(args.tags)))
        pf.write('---\n')
        pf.write('\n#') # for the first h1


def create_asst_dir():
    n = dt.now()
    y = n.year
    m = n.month
    os.makedirs("assets/{0}/{1:02d}".format(y,m))

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='tool for writing hugo blog')
    subparsers = parser.add_subparsers(dest='subparser_name', help='sub-commands')
    now_str = dt.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ') # get date in UTC
    # post
    post_parser = subparsers.add_parser('post', help='create post')
    post_parser.add_argument('-f', type=str, required=True, help='file name')
    post_parser.add_argument('-t', type=str, required=True, help='title')
    post_parser.add_argument('-s', type=str, default='', help='subtitle')
    post_parser.add_argument('-d', type=str, default=now_str, help='date')
    post_parser.add_argument('-a', type=str, default='amasuda', help='author')
    post_parser.add_argument('-i', type=str, default=None, help='header image')
    post_parser.add_argument('--draft', action='store_true', help='Is draft or not')
    post_parser.add_argument('--tags', type=str, nargs='+', default=None, help='header image')

    args = parser.parse_args()
    print(args)

    if args.subparser_name == 'post':
        if args.draft:
            create_file(args, 'content/draft')
        else:
            create_file(args, 'content/post')
    else:
        print("Unsupported subparser")

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.