Subversion対応マクロ(update)

Subversionのファイル管理のために、わざわざEclipseを立ち上げるってのも何か間違ってる気がする。
ファイル管理はファイラーの役目、ってことでSubversion対応のマクロを少しずつ作ってみる。
まずはupdateから。
外部コマンドのsvnを呼んでるので、Windowsならsvn.exeにパスが通っている必要がある。

ダイアログを作るのにgroovyのSwingBuilderを使ったけど、これはいい!!
コンポーネントの関係が見やすいしレイアウトしやすい。
Swingを使うのは初めて(awtもほとんど忘れた)なので、希望のレイアウト(BoxLayout)を探すのにちょっと手間取ったけど。

import javax.swing.BoxLayout
import com.nullfish.app.jfd2.ext_command.CommandExecuter
dlg=new groovy.swing.SwingBuilder().dialog(title:"svn update ...doing"){
  box(axis:BoxLayout.Y_AXIS){
    scrollPane(){
      ta=textArea(rows:15,columns:60)
    }
    btn=button(text:"OK",visible:false,actionPerformed:{dlg.dispose()})
  }
}
dlg.pack()
dlg.locationRelativeTo=null
dlg.visible=true
model=jfd.model
files = model.markedFiles
if(files == null || files.length == 0){
  files = [model.selectedFile]
}
cmd=files.inject("svn update "){s,f->s+='"'+f.name+'" '}
ta.append(cmd+"\n")
CommandExecuter.instance
  .exec(cmd,CommandExecuter.USE_APP_SHELL,new File(model.currentDirectory.absolutePath))
  .in.eachLine{ta.append(it+"\n")}
dlg.title="svn update ...done"
btn.visible=true
btn.requestFocusInWindow()