【Python】【fishingz】fishingz の Python3 版を作成する (3)

概要

fishingz の Python3 版を作成する プロジェクトというか、Python の勉強。

本ページでの処理内容は、【fish】fishingz の詳細設計編【fishingz】 の「1.3」「1.3.1」 のシーケンス部の実装である。
(DBから path を取り出すために、 fishingz::DB -g $argv を行う部分である)

新たに FishingzDB クラスを作り、fishingzDB.py として切り出した。
 

 

コード - fishingz_py.py

fishingz_py.py

#!/usr/bin/env python3
# 次のコマンドを実行して ConfigParser.py をインストールすること
# pip3 install ConfigParser

import  getopt
import  sys
import  os
import  uuid
import  configparser    # Python 3.6 ではファイル名は configparser.py である
from    collections import OrderedDict
from    fishingzDB  import *

class   Fishingz(object):

    def __init__(self):
        self.home     = os.environ.get("HOME")
        self.user     = os.environ.get("USER")
        self.evtmap   = configparser.ConfigParser()
        self.settings = OrderedDict()
        self.fgzDB    = FishingzDB()
        pass


    def _load_userfile(self):
        home    = os.environ.get("HOME")
        iniFile = os.path.join(home, '.fishingz/init.conf')
        try:
            self.evtmap.read(iniFile)    # $HOME/.fishingz/init.conf の内容が self.evtmap に格納される
        except:
            e = traceback.print_exc()
            sys.stderr.write('Cause: {0}'.format(e))
        else:
#           for k, v in self.evtmap.items():
#               #print("{0}=>{1}".format(k,v))
#               for i, d in self.evtmap.items(k):
#                   print("{0}=>{1}".format(i,d))
            pass


    def _load_settings(self):
        user    = os.environ.get("USER")
    
        self.settings['FISHINGZ_UUID']      = uuid.uuid4().hex
        self.settings['FISHINGZ_USER_AREA'] = os.path.join('/tmp',user+'.fishingz')
        self.settings['FISHINGZ_WORKDIR']   = os.path.join(self.settings['FISHINGZ_USER_AREA'],
                                                           self.settings['FISHINGZ_UUID'])
        self.settings['FISHINGZ_AVATAR']    = ""
        self.settings['FISHINGZ_D_CMD']     = "cd"


    def _verify_settings(self):
        if   'FISHINGZ_D_CMD'     not in self.settings:
            return False
        elif 'FISHINGZ_WORKDIR'   not in self.settings:
            return False
        elif 'FISHINGZ_USER_AREA' not in self.settings:
            return False
        else:
            return True

    def _make_avatar(self):
        pass

    def stream(self, *args):
        # fishingz::stream::init 相当の処理開始
        self._load_userfile()  # ファイル種別ごとの処理を定義したテーブル
        self._load_settings()  # fishingz クラスの初期値
    
        retval   = self._verify_settings()    # 設定値が妥当かチェックする。
        if retval != True:
            sys.exit(2)
        else:   # verify ok
            for k, v in self.settings.items():
                print("{0}=>{1}".format(k,v))
    
        # fishingz::stream::setup 相当の処理開始
        self._make_avatar()

        # fishingz::stream::start 相当の処理開始
        self.fgzDB.main('-g')
        

if __name__ == '__main__':

    OPT_S_FMT = "iR"
    OPT_L_FMT = ['find-dir', 'find-file', 'find-link', 'find-mru']

    try:
        opts, args = getopt.getopt(sys.argv[1:], OPT_S_FMT, OPT_L_FMT)

    except getopt.GetoptError as err:
        sys.stderr.write(err)
        sys.exit(2)

    for o, a in opts:
        if ( o == "-i" or o == "-R" ):
            print("Option is {0}".format(o))
            pass
        elif o in ('--find-dir', '--find-file', '--find-link', '--find-mru'):
            isOptFindMode  = True
            print("Option is {0}".format(o))
            fgz = Fishingz()
            fgz.stream(o)
        else:
            assert False, "unhandled option"

 

コード - fishingzDB.py

fishingzDB.py

#!/usr/bin/env python3
# 次のコマンドを実行して ConfigParser.py をインストールすること
# pip3 install ConfigParser

import  getopt
import  sys
import  os
import  uuid
import  configparser    # Python 3.6 ではファイル名は configparser.py である
from    collections import OrderedDict

class   FishingzDB(object):

    def __init__(self):
        self.settings = OrderedDict()
        self.target   = OrderedDict()

    def load_settings(self):
        pass

    def _init(self, *args):
        pass

    def _setup(self, *args):
        pass

    def _setup(self, *args):
        pass

    def _start(self, *args):
        pass

    def _stop(self, *args):
        pass

    def _pipeline(self, *args):
        pass

    def main(self, *args):

        OPT_S_FMT = "gm"
        OPT_L_FMT = ['--get']
        try:
            opts, args = getopt.getopt(args[0:], OPT_S_FMT, OPT_L_FMT)
            
        except getopt.GetoptError as err:
            sys.stderr.write(err)
            sys.exit(2)
 
        for o, a in opts:
            if ( o == "-g" ):
                print("_pipeline --get-path $argv[1:]".format(o))
                pass
            elif ( o == "-m" ):
                print("_pipeline --save-mru $argv[1:]".format(o))
                pass
            else:
                assert False, "unhandled option"


if __name__ == '__main__':

    pass