32nd TwitterIrcGateway

 | 

2009-10-15

Shell Context

15:50

書いてみた。

# shell.py
import sys
sys.path.append('/usr/lib/python2.5')
import clr
import re
import thread
import time
import commands

import Misuzilla.Applications.TwitterIrcGateway
import Misuzilla.Applications.TwitterIrcGateway.AddIns
import Misuzilla.Applications.TwitterIrcGateway.AddIns.Console

from System import *
from System.Threading import Thread, ThreadStart
from System.Diagnostics import Trace
from System.Collections.Generic import *
from Misuzilla.Applications.TwitterIrcGateway import Status, Statuses, User, Users, Utility
from Misuzilla.Applications.TwitterIrcGateway.AddIns import IConfiguration
from Misuzilla.Applications.TwitterIrcGateway.AddIns.Console import ConsoleAddIn, Console, Context
from Misuzilla.Applications.TwitterIrcGateway.AddIns.DLRIntegration import DLRIntegrationAddIn, DLRBasicConfiguration, DLRContextHelper

class ShellContext(Context):
        def Initialize(self):
                self.suffix = Shell.instance()
                self.config = DLRBasicConfiguration(self.CurrentSession, "ShellContext", Dictionary[String,String]({ "Shell": "シェル"}))
                pass

        def GetCommands(self):
                dict = Context.GetCommands(self)
                dict["SH"] = "指定したシェルコマンドを実行します。"
                return dict

        def OnUninitialize(self):
                pass

        def get_Configurations(self):
                return Array[IConfiguration]([ self.config ])

        # Implementation
        def SH(self, args):
                cmd = args or ""
                self.Console.NotifyMessage("入力されたコマンドは '%s' です。" % cmd)
                out = commands.getoutput(cmd)
                self.Console.NotifyMessage(out)

class Shell(Object):
        @classmethod
        def instance(klass):
                if not hasattr(klass, 'instance_'):
                        klass.instance_ = Shell()
                return klass.instance_
        
        def __init__(self):
                # 普通の #Console にコンテキストを追加する
                CurrentSession.AddInManager.GetAddIn[ConsoleAddIn]().RegisterContext(DLRContextHelper.Wrap(CurrentSession, "ShellContext", ShellContext), "Shell", "Shell")
                self.config = DLRBasicConfiguration(CurrentSession, "ShellContext", Dictionary[String,String]({ "Shell": "シェル" }))

shell = Shell.instance()

対話的にやりとりするものや、cursesとか使ってるものは動かしたらどうなるのかわからんね。hehehe

wgetするときは悪いことは言わんから wget -nv にしておけ。

書いてから Shell Context ではなくて、 Command Context だろ、と気づいた。Shell Contextにするパッチ募集中。

LiendaLienda 2012/03/29 10:33 salam rastesh man iran zegnedi nemikonam ama az sait shoma kheyli khosham oomade omidvaram movafagh bashid. []ریحانه کُجوری پاسخ داده در مرداد ۱۶م, ۱۳۸۹ ۱۲:۳۲ ق.ظ:سلامخوب به سلامتی انگار داره این زنگ قلاب بافی ما بین المللی میشه!‌ الحمدلله سلامت باشید. ممنون[]

hlbobbrbwahlbobbrbwa 2012/03/30 15:38 4NySKD , [url=http://otpndhwzopeg.com/]otpndhwzopeg[/url], [link=http://ygbssoobvgia.com/]ygbssoobvgia[/link], http://vszwhjagewgr.com/

aecrrpuocnbaecrrpuocnb 2012/03/31 21:27 KVVkAu , [url=http://qivynbvamocs.com/]qivynbvamocs[/url], [link=http://wekvqupvxjpj.com/]wekvqupvxjpj[/link], http://rgdmqgcrylgc.com/

ゲスト



トラックバック - http://twitterircgateway.g.hatena.ne.jp/takano32/20091015
 |