No Programming, No Life

プログラミング関連の話題や雑記

Re:here:「ここにあとで来る」ためのバッチファイルを作るスクリプト

結城さんの以下エントリのgroovy版を作ってみた。
2006-06-01 - 結城浩のはてな日記

here.groovy
/*
 * here.groovy
 *
 * Copyright (C) 2008 by fumokmm.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the same terms as Groovy itself.
 */

/** 定数 */
class Const {
  final static def HERE_DIR = "C:/here/"
  final static def HERE_BATCHES_DIR = "${HERE_DIR}batches/"
}

if (args.length == 0) {
  if (!listBatchFiles()) {
    usage()
  }
  System.exit(0)
}

def current = new File(".").getAbsolutePath()
def writer = new BufferedWriter(new FileWriter("${Const.HERE_BATCHES_DIR}${args[0]}.bat"))
writer.writeLine("@echo off")
writer.writeLine("pushd ${current}")
writer.flush()
writer.close()

/**
 * 既存のバッチファイルリスト表示
 */
def listBatchFiles() {
  def commands = []
  def f = new File("${Const.HERE_BATCHES_DIR}").eachFileMatch(~/^.*\.bat$/) {
    if (it.getName() != 'here.bat' ){
      commands << "${commands.size()+1}: ${it.getName().replaceAll(/\.bat/, '')}"
    }
  }
  if (!commands.isEmpty()) {
    println "Entried command is..."
    commands.each { println it }
  }
  return !commands.isEmpty()
}

/**
 * Usageを表示する
 */
def usage() {
  println """\
  Usage: here project-code
Example: here proj
"""
}
here.bat


@echo off
groovy C:\here\here.groovy %1


使用手順は次の通り(Windowsの場合)。*1

  • 準備(最初に一度だけ)
    • (1)以下ディレクトリ構成を準備する


C:
└/here
├here.groovy
└/batches
└here.bat

    • (2) batchesにPATHを通す。
  • バッチファイル作成(新しいプロジェクトの場所決め)
    • (3) コマンドプロンプトで、作業するディレクトリに行く。(たとえば cd C:\work\proj)
    • (4) そのプロジェクトのプロジェクトコードを考える(たとえば proj )
    • (5) hereコマンドを動かす(たとえば here proj)
    • (6) これで C:/here/batches/proj.bat というファイルが出来た。
  • バッチファイル実行
  • その他
  • ※注意
    • いきなりバッチファイルを作りに行きます。同名のバッチファイルがあったら上書きされます。

*1:[http://d.hatena.ne.jp/hyuki/20060601#here:title=元記事]の文体を引用してます。