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 ' ]'