diff -urN v13/ftp_ut.py v14/ftp_ut.py --- v13/ftp_ut.py 2020-02-18 22:47:54.000000000 +0900 +++ v14/ftp_ut.py 2020-03-30 23:51:37.000000000 +0900 @@ -9,6 +9,7 @@ import tm_ut import arg import base +import site_ut to_str = base.to_str @@ -320,40 +321,11 @@ return empty.new( locals() ) def get_site(site=''): - d = {} - for fn in reversed( base.path_lst( 'ftp_ut.yaml', __file__ ) ): - d.update( yaml_ut.load_fn( fn, {} ) ) - - if not d: - return None - ks = list( d.keys() ) - def get_s(k): - if k not in ks: - return None - s = d.get(k) - if ' ' in s: - return s - lst = s.split('/') - return get_s( lst[0] ) + ' ' + to_str( lst[1:], delim='/' ) - - def get(k): - s = get_s(k) - lst = s.split() - return lst[:3] + [ to_str( lst[3:], delim='/' ) ] - - if site: - v = get(site) - return v if v else 'not found {}'.format(site) - - if 'default' in ks: - k = d.get('default') - v = get(k) - return v if v else 'not found default {}'.format(k) - - if len(ks) == 1: - return get( ks[0] ) - - return 'select by -s ption\n{}'.format( to_str( ks, pre=' ' ) ) + site_ = site_ut.new( 'ftp_ut.yaml', __file__ ) + e = site_.get( site ) + if not e: + return 'not found {}'.format( site ) + return [ e.host, e.user, e.passwd, e.path ] def help(): msgs = [ diff -urN v13/site_ut.py v14/site_ut.py --- v13/site_ut.py 1970-01-01 09:00:00.000000000 +0900 +++ v14/site_ut.py 2020-03-30 23:42:24.000000000 +0900 @@ -0,0 +1,62 @@ +#!/usr/bin/env python + +import empty +import base +import yaml_ut +import arg +import dbg + +to_str = base.to_str + +def new(yaml_fn, from__file__=''): + if not from__file__: + from__file__ = __file__ + + d = {} + for fn in reversed( base.path_lst( yaml_fn, from__file__ ) ): + d.update( yaml_ut.load_fn( fn, {} ) ) + + d_url = d.pop( 'url', {} ) + + def get(k=''): + if not k: + k = 'default' + if len(d) == 1: + k = list( d.keys() )[0] + if k not in d: + return None + s = d.get( k ) + if ' ' in s: + lst = s.split() + e = empty.new( host=lst[0], user=lst[1], passwd=lst[2], path='', url='' ) + if len( lst ) > 3: + e.path = lst[3] + if k in d_url: + e.url = d_url.get( k ) + return e + + lst = s.split( '/' ) + (k_, rpath) = ( lst[ 0 ], to_str( lst[1:], delim='/' ) ) + + e = get( k_ ) + if not e: + return None + if rpath: + e.path = base.add_path( e.path, rpath ) + if k in d_url: + e.url = d_url.get( k ) + elif e.url and rpath: + e.url = base.add_path( e.url, rpath ) + return e + + return empty.new( locals() ) + +if __name__ == "__main__": + a = arg.new() + k = a.pop() + site = new( 'ftp_ut.yaml' ) + e = site.get(k) + if e: + s = yaml_ut.dump_no_flow( vars( e ) ) + dbg.out( s, '' ) +# EOF