衝撃のわからなさ

わかってません

2024/01/08日報

Denoのstd/logのフォーマット指定方法

LogRecord が渡されるのでそれを使うformetterを定義する。
datetimeのformat変更は datatime.format 見た。

const formatter = (record: log.LogRecord) =>
  `${
    format(record.datetime, "yyyy-MM-dd HH:mm:ss")
  } [${record.levelName}] ${record.msg}`;

mimic-cross実装

loggerの実装

configにlog関係のformatを追加した。

logFile: "/var/log/mimic-cross.log",
logType: "default", // default | verbose | debug
  • default: fileがINFO、consoleがWARNING
  • verbose: fileがINFO、consoleがINFO
  • verbose: fileがDEBUG、consoleがDEBUG

commit: Add log feature commit: Allow change logmode after create instance

deploy自動化判定でelfかどうかをみるように

実行可能なscriptなどにもELFの書き換え処理を適用しようとして エラーになってしまっていたのを修正。

commit: Implement getElfArch commit: Check file is ELF in deployAllCommands

mimicxコマンドの実装

CLIFFY 使って実装した。
tutorialではすべてsubcommandに適用するactionの記述方法が分からなかったけれど、 雰囲気でglobalActionを書いたら使えた。ありがたい。

verbose option

globalなオプションとして-vをつけるとlogレベルがverboseになるようにした。 loggerを実行時に切り替える方法が分からなくて、とりあえず適当なclassでwrapした。
commit: Allow change logmode after create instance

mimicx deploy-package

mimicx deploy-package coreutilscoreutilsがbuildplatformのアーキテクチャになる。
commit: Add CLI mimicx

hostにだけパッケージを入れる

forceオプションをつけることでapt/packages下に moduleがないパッケージのdeployを試すことができるようになった。 commit: Add force option to mimicx deploy-packges

host下でapt-getも自動で実行されるため 例えばcurlの入ってないmimic-cross環境で下記コマンドを実行すると、 hostのcurlだけがapt-getされ/usr/bin/curlにdeployされる。

mimic deploy-package -f curl

試して問題なければhostに絞ることでimageサイズの削減などが期待できる。