Dustpan
Dustpanは、テキストベースの軽量な課題管理システムです。
- 課題一つにつき、一つのテキストファイル(dptxt形式)で管理します。
- Dustpanのシェル(dpsh)を使って課題を一覧表にすることができます。
- 課題の形式は任意の項目を持たさせることができます。
- 項目には数値、文字列、日付及び締め切り、ログの4つの型を設定することもできます。
- dpshと設定ファイル(JSON)があればどこにでも配置することができます。
- WebサーバやDBMSは必要ありません。その他の依存するコンポーネントもありません。
仕組み
- 設定ファイル(config.json)とdptxt形式(issue-1.txt-issue-5.txt)のファイルを同じディレクトリに配置します。
config.json
issue-1.txt
issue-2.txt
issue-3.txt
issue-4.txt
issue-5.txt
config.json
の中身は以下のようにします。
// 実際にはコメントは入れられません。
{
"src":[ "*.txt" ], // 入力するdptxt形式のファイルへのパス(ワイルドカード可、config.jsonからの相対パス指定、または絶対パス指定)
"html": {
"dst":"issue-list.html", // 課題一覧をHTMLとして出力する際のファイル名
"title":"課題リスト", // 出力されるHTMLファイルのtitle要素の内容
"display": [ // HTMLに出力するクションの一覧(実際にdptxtには記述があっても、全て出力する必要はない。
"title",
"date occured",
"author",
"description",
"log"
]
},
"order": [ // 課題をソートする際に比較に使うセクション名の一覧
{ "name": "date occured" },
{ "name": "author" }
],
"columns": [ // セクションの定義(セクションの値をチェックするために指定する。また、ソートする際の比較方法を決定する。
{ "name":"title", "type":"text" },
{ "name":"date occured", "type":"date" },
{ "name":"author", "type":"text" },
{ "name":"description", "type":"test" },
{ "name":"log", "type":"log" }
// columnsに記述がないセクションがdptxtに含まれていてもエラーにならない。orderに指定する場合は必須。
]
}
issue-1.txt
の中身は以下のようなdptxt形式の文書です。issue-2.txt以降のファイルも似たような感じで課題一つにつき一ファイル作成します。
@title: マウスをクリックすると、お尻が痒くなる。
@date occured: 2017-7-9
@author: taro
@description:
マウスをクリックする度に、お尻がだんだん痒くなる。右クリックすると右のお尻が痒くなり、左クリックすると左のお尻が痒くなる。
試しに左右のボタンを同時に押してみたけど、何も起きなかった。マウスのホイールをクリックしてみたけど、やっぱり何も起きなかった。
@log:
右クリックしてみたら、お尻が痒くなることに気づいた。(2017-7-9)
左クリックしてみたら、左のお尻が痒くなることに気づいた。(2017-7-10)
繰り返しクリックし続けると、ものすごく痒くなることに気づいた。(2017-7-14)
@memo: これは夢なのかもしれない。。
config.json
と同じディレクトリでdpshを実行します。
$ dpsh
config.json
の記述に従ってissue-list.html
が出力されます。出力時にCSSを指定していないので、config.json
で指定したセクションがdiv
要素で羅列されて出力されます。これだけです。
dptxt形式
キーと値の組みを表現するための簡易的なマークアップ言語です。
- dptxt形式の文書は、一つ以上のセクションから成ります。
- 一つのセクションは、一つのセクション名と値から成ります。
- セクション名は、行頭の
@
から:
までがキーを表わします。(前後の空白は除く)
- セクション名の後ろ(
:
の後ろ)から次のキー、また文章の末尾までが値になります。
- 値は0個以上のパラグラフから成ります。
- パラグラフは、空白行を含まない連続した行の集りです。
config.json
-
src
string
の配列。入力するdptxt形式のファイルへのパスのリスト。ワイルドカード可、config.json
からの相対パス指定、または絶対パス指定
-
html
HTML出力用の設定
-
dst
string
。課題一覧をHTMLとして出力する際のファイル名
-
title
string
。出力されるHTMLファイルのtitle要素の内容
-
display
string
の配列。HTMLに出力するクションの一覧(実際にdptxtには記述があっても、全て出力する必要はない。)
-
css
string
。出力されるHTMLに埋め込むCSSファイルを指定する。(config.json
からの相対パス指定、または絶対パス指定)
-
js
string
。出力されるHTMLに埋め込むJavaScriptファイルを指定する。(config.json
からの相対パス指定、または絶対パス指定)
-
order
配列。課題をソートする際に比較に使うセクション名の一覧。最初に指定したセクションから順に比較してソートする。各要素は以下の通り。
-
columns
配列。セクションの定義。セクションの値をチェックするためにセクションの型を指定する。ソートする際の比較方法は型によって決まる。
-
name
string
。セクション名
-
type
string
。セクションの型。text,number,date,deadline,logのいずれか。
- text:プレーンテキスト。比較は辞書式
- number:数値
- date:日付。日付の形式と有効な日付であるか否かをチェックする。
- deadline:締め切り。日付の形式と有効な日付であるか否か、dpshが起動した時刻に対して有効期限切れか田舎をチェックする。
- log:セクションのすべてのパラグラフの最後の行が丸括弧で囲まれた日付の形式になっていることをチェックする。