月曜日20時ぐらいに急激に全身倦怠感が起こり、だんだん体が重く、21時には寝はじめたがこのときはもうほとんど動く気がしないぐらいだった。寒気というほどではないけど体が冷えている感じがしたので布団をかぶって寝た。

23時ぐらいに起きたがかなり熱があるという感じ、体温計ではからなかったが38℃ぐらいだろうというだるさ。寒気は全くなくて暑かったので水を飲んだり窓をあけたりした。

窓をあけると外からタバコ臭が入ってきたりして不愉快なので閉めて冷房にしたりまた窓をあけたりした。タバコ臭まきちらす人間は今すぐに苦しみながら死んでほしい。

朝方あたりに体温計ではかると37℃前後。火曜日はまだ頭がぼーっとする感じでだるかったが、水曜日は普通。

右の小指の中手骨を骨折してる。先週の水曜日の9時ごろ子どもを保育園に送ったあと家でやらかしたが、折れてるとまでは思わず普通に出社してしまった。しかしどうも痛みがひかない気がしたので念のためにと整形外科にいったら折れてた。

しかしこの、最初にいった整形外科がどうにもこうにもで、とにかくひどくて、まぁ治療内容自体がひどくおかしいとまでは思わなかったけど、夢にでるぐらいには不信感があったので、ちょっと継続して診療してもらうことはできないと思い、土曜日に別の整形外科にいった。

固定方法が少々変わったのでぎりぎり仕事できる感じぐらいにはなったが、まだまったく治癒してないのでどうなるかわからない。

node.js 用のコマンドラインパーサである minimist は必要最低限かつわかりやすくていいですね。

しかもサブコマンド用のオプションも用意されているので、ある程度複雑でも耐えられます。

以下がサブコマンドを実装したもののサンプルコードです。ポイントは親コマンド側では stopEarly を指定して、サブコマンド用の引数を解釈させないところです。

そのうえであらためてサブコマンド用の引数を minimist にかけることで必要な機能が実現できます。良いですね。

#!/usr/bin/env node

import * as minimist from "minimist";

const commands : { [key: string]: (argv: any[]) => void } = {
	foobar : function (_argv: any[]) {
		const argv = minimist(_argv, {
			boolean: true,
			alias: {
				"o": "output",
				"h": "help",
			}
		});
		console.log(argv);
	}
};

const argv = minimist(process.argv.slice(2), {
	stopEarly: true, // do not parse subcommand args
	boolean: true,
	alias: {
		"h": "help",
	}
});

const subcommand = argv._.shift() as string;
if (!subcommand || argv.help) {
	console.log('Options:');
	console.log('  -h --help: show help');
	console.log('Sub commands:');
	process.exit(argv.help ? 0 : 1);
}

const func = commands[subcommand];
if (!func) {
	console.warn(`Unknown subcommand ${subcommand}`);
	process.exit(1);
}

func(argv._);
  1. トップ
  2. tech
  3. minimist でサブコマンド付きコマンドを実装する