-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnew.sh
executable file
·140 lines (114 loc) · 3.06 KB
/
new.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/bash
BOUNDARY=$(printf "=%0.s" {0..79})
SLUG=$1
if [ $# -ne 1 ]; then
echo "記事のスラグを入力してください"
echo " スラグにはアルファベット・数字・ハイフンのみ使用できます (0-9, a-z, -)"
echo " 例: my-first-post"
read -e -p "> " SLUG
fi
if [ -z $SLUG ]; then
echo "ERROR: 記事のスラグを指定してください" 1>&2
exit 1
fi
SLUG="${SLUG,,}" # make slug lower-case
if [ "`echo $SLUG | grep '[^0-9a-zA-Z-]'`" ]; then
echo "ERROR: スラグにはアルファベット・数字・ハイフンのみ使用できます (0-9, a-z, -)" 1>&2
exit 1
fi
# check if slug is already used
FIND_RESULT=$(find ./ -maxdepth 3 -mindepth 3 -type d -name $SLUG)
if [[ -n $FIND_RESULT ]]; then
echo "ERROR: スラグがすでに存在します" 1>&2
echo $FIND_RESULT 1>&2
exit 1
fi
# select author
authors=($(awk -F': ' '/github:/ {github=$2} /active: true/ {print github}' author.yaml))
echo $BOUNDARY
echo "著者番号を指定してください"
PS3="> "
select AUTHOR in ${authors[@]}
do
if [ -z "$AUTHOR" ]; then
echo 'CANCELED'
exit 0
else
break
fi
done
YEAR=`date '+%Y'`
DIR="${AUTHOR}/${YEAR}/${SLUG}"
IMAGES="${DIR}/images"
MD="${DIR}/index.md"
BRANCH_NAME="post/${SLUG}"
# confirmation
echo $BOUNDARY
echo スラグ: \"${SLUG}\"
echo ブランチ: \"${BRANCH_NAME}\"
echo 著者: \"${AUTHOR}\"
echo 作成されるファイル:
echo " \"${IMAGES}\" (ディレクトリ)"
echo " \"${MD}\""
echo -n "よろしいですか? [y/N] > "
read CONFIRM
case $CONFIRM in
[Yy]* )
echo $BOUNDARY
;;
* )
echo 'キャンセルされました'
exit 0
;;
esac
# fecth git commits from origin
echo "フェッチしています..."
git fetch origin
if [ $? -gt 0 ]; then
echo "ERROR: フェッチできませんでした" 1>&2
exit 1
fi
# checkout release branch
echo $BOUNDARY
echo "release ブランチをチェックアウトしています..."
git checkout origin/release
if [ $? -gt 0 ]; then
echo "ERROR: release ブランチをチェックアウトできませんでした" 1>&2
exit 1
fi
## create branch
echo "新しいブランチを作成しています..."
git switch -c ${BRANCH_NAME}
if [ $? -gt 0 ]; then
echo "ERROR: ブランチの作成に失敗しました" 1>&2
exit 1
fi
# create images directory
echo "images ディレクトリを作成しています..."
mkdir -p ${IMAGES}
# create md file with initial content
echo "index.md を作成しています..."
cat <<EOF > "${MD}"
---
title: ""
date:
author: ${AUTHOR}
tags: []
description: ""
---
EOF
echo -n "VS code で md ファイルを開きますか? [y/N] > "
read EDITOR
case $EDITOR in
[Yy]* )
code ${MD}
;;
esac
echo $BOUNDARY
echo "さぁ、執筆をはじめましょう!"
echo
echo "ヒント"
echo " 文章校正 (textlint) と構文チェック : F5 キー (2回目からは Ctrl+Shift+F5 キー) ※VS Code のみ"
echo " md ファイルを開く : code ${MD}"
echo " タグ一覧を見る : make taglist"
echo " アイキャッチ画像 : images/HERO.png または images/HERO.jpg に配置"