bluewindからCraftLaunchへの移行

コマンドライン・ランチャーとしてbluewindを愛用していましたが、CraftLaunchに移行することにしました。

bluewindに登録されたコマンドの数が多いので、bluewindの設定ファイルをCraftLaunch用に変換するツールをPythonで書いてみました。実はPythonを使うのはほぼ初めてなので、おまえのコードは汚いという突っ込みがありましたら教えて下さい。

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# 
# usage: bluewind2CraftLaunch.py < %.wind

# 参考 :
#
# ShellExecute 関数
# http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
#
# ShowWindow Function (Windows)
# http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx

import re
import sys

def getValue(list, name):
    for item in list:
        m = re.search("^" + name + "=(.*)", item)
        if m:
            return m.group(1)
    return None

print '    window.launcher.command_list += ['

for line in sys.stdin:
    list = unicode(line, "cp932").rstrip().split("\t")
    bw_keyword = list[0]
    bw_type = getValue(list[1:], "Type")
    bw_comment = getValue(list[1:], "Comment")
    bw_command = getValue(list[1:], "Command")
    bw_param = getValue(list[1:], "Param")
    bw_dir = getValue(list[1:], "Dir")
    bw_showstate = getValue(list[1:], "ShowState")
    if bw_type == "0":
        cl_command = bw_keyword.encode('cp932')
        cl_file = bw_command.replace("\\\\", "/").replace("\\s", " ").encode('cp932')
        if bw_param:
            cl_param = bw_param.replace("\\\\", "/").replace("\\s", " ").encode('cp932')
        else:
            cl_param = ""
        if bw_dir:
            cl_directory = bw_dir.replace("\\\\", "/").replace("\\s", " ").encode('cp932')
        else:
            cl_directory = ""
        if bw_showstate == "1":
            cl_swmode = 3 # SW_SHOWMAXIMIZED
        elif bw_showstate == "2":
            cl_swmode = 2 # SW_SHOWMAXIMIZED
        else:
            cl_swmode = 1 # SW_SHOWNORMAL
        if bw_comment:
            cl_comment = bw_comment.replace("\\\\", "/").replace("\\s", " ").encode('cp932')
        else:
            cl_comment = ""

        print '        ( u"{0}",    window.command_ShellExecute( None, u"{1}", u"{2}", u"{3}", {4} ) ), # {5}'.format(cl_command, cl_file, cl_param, cl_directory, cl_swmode, cl_comment)

print '    ]'