ソースに一行追加するだけで実行時にバイナリをバルスできるモジュールを書いた
バズーカが弾切れ、絶対絶命のピンチ、メガネの小悪党がmain関数を実行する前に実行ファイルを削除したいというのはよくあることです。
使用例
たとえばこういうコードに・・・
// get.go package main func main() { println("ハハハハハ!飛行石を手に入れたぞー!!") }
importをくわえるだけで・・・
// get.go package main import ( _ "github.com/doloopwhile/go-balse" ) func main() { println("ハハハハハ!飛行石を手に入れたぞー!!") }
たったこれだけでバルスします!
$ go build get.go $ ./get panic: _人人人人人_ > バルス!<  ̄Y^Y^ Y^Y^ ̄ goroutine 16 [running]: runtime.panic(0x44cc20, 0xc208000120) /usr/local/go/src/pkg/runtime/panic.c:279 +0xf5 github.com/doloopwhile/go-balse.init·1() /home/kenjiomoto/gocode/src/github.com/doloopwhile/go-balse/balse.go:9 +0x87 github.com/doloopwhile/go-balse.init() /home/kenjiomoto/gocode/src/github.com/doloopwhile/go-balse/balse.go:10 +0x4b main.init() /home/kenjiomoto/Downloads/get.go:10 +0x46 goroutine 17 [runnable]: runtime.MHeap_Scavenger() /usr/local/go/src/pkg/runtime/mheap.c:507 runtime.goexit() /usr/local/go/src/pkg/runtime/proc.c:1445 goroutine 18 [runnable]: bgsweep() /usr/local/go/src/pkg/runtime/mgc0.c:1976 runtime.goexit() /usr/local/go/src/pkg/runtime/proc.c:1445 goroutine 19 [runnable]: runfinq() /usr/local/go/src/pkg/runtime/mgc0.c:2606 runtime.goexit() /usr/local/go/src/pkg/runtime/proc.c:1445 $ ./get bash: ./get: そのようなファイルやディレクトリはありません
あとがき
最初は「importするだけでカレントディレクトリのファイルを全て削除」という仕様にしたところ、うっかり「README.mdがー!!README.mdがー!!」となってしまったので、実行ファイルを削除するだけのオトナシイ仕様にしました。
「ソースに一行追加するだけで・・・」は本来もっと真面目な目的で利用できるものです。