mbed-scli test program
mlib.py
- Committer:
- mimi3
- Date:
- 2017-03-05
- Revision:
- 10:72b75743f231
- Parent:
- 8:f1c7a11d0670
File content as of revision 10:72b75743f231:
#### mlib.py for mbed ####
# v0.9 # 2017/03 made by dinau
#
# Notice: Unsupported libraries.
# These libraries must be specified in Makefile.
# mbed-os
# mbed-dev
# Usage:
# Download the dependency libraries from web.
# $ make lib
# or
# $ python mlib.py
# Specify URL of a particular library to get it.
# $ python mlib.py http://...
# Checkout mbed library with specified revision number.
# $ python mlib.py 136
#
import os,sys
import commands
from urlparse import urlparse
HG = 1
GIT = 2
MBEDOS = 3
CMD_HG_CLONE = 'hg clone -q '
CMD_GIT_CLONE = 'git clone -q '
CMD_GIT_CHECKOUT= 'git checkout '
def hgClone(param):
cmd = CMD_HG_CLONE + param
return os.system( cmd )
def gitClone(param):
cmd = CMD_GIT_CLONE + param
return os.system( cmd )
def gitCheckout(param,disp=False):
cmd = CMD_GIT_CHECKOUT + param
if disp:
print cmd
sys.stdout.flush()
return os.system( cmd )
def getDvcs(url):
p = urlparse( url )
#print p
if ('developer.mbed.org' in url) or ('mbed.org' in url) or ('bitbucke.org' in url):
return HG;
elif 'mbed-os' in url:
return MBEDOS
elif 'github.com' in url:
return GIT
else:
return 0
def getLibs(target_dir):
savedir = os.getcwd()
os.chdir(target_dir)
liblist=[]
for fname in os.listdir('.'):
if os.path.isfile(fname):
name, ext = os.path.splitext(fname)
if ext == '.lib':
if name != 'mbed-os':
liblist.append(fname)
if len( liblist ) > 0:
#print liblist
for libfile in liblist:
subdir, ext = os.path.splitext(libfile)
if os.path.isdir( subdir ):
print "%s :: already exists !" % (subdir)
continue
print subdir
url = open(libfile).read()
print url
sys.stdout.flush()
dvcs = getDvcs(url)
if dvcs == HG:
hgClone( url )
getLibs(subdir)
elif dvcs == MBEDOS:
# Nothing is downloaded if mbed-os lib be.
print 'mbed-os'
sys.stdout.flush()
elif dvcs == GIT:
params = url.split('#')
if len(params) == 1:
gitClone( params[0] )
getLibs(subdir)
elif len(params) == 2:
gitClone( params[0] )
os.chdir(subdir)
print 'cd %s' % (subdir)
sys.stdout.flush()
gitCheckout( params[1] )
getLibs(subdir)
os.chdir(savedir)
###################
# main program
###################
if len(sys.argv) == 1:
print '--- Getting libraries ----'
getLibs('.')
print '--- end ---'
else:
url = param1 = sys.argv[1]
try:
# Number or URL
revNum = int(param1)
except:
# if URL of string
# Down load mbed library from URL
p = urlparse( url )
if not("http" in p.scheme ) and not("https" in p.scheme ):
print "URL error !"
else:
path = p.path
if path[-1:] == '/':
path = path[:-1]
libdir = os.path.basename(path)
libname = libdir + '.lib'
if not os.path.isdir( libdir ):
with open( libname,'w') as fp:
fp.write( url )
print '--- Getting libraries ----'
getLibs('.')
print '--- end ---'
else:
# if Number of string
# get mbed library of specified revsion
mbed_root_file ='mbed-root.txt'
try:
mbedRoot = open(mbed_root_file).read()
os.chdir( mbedRoot.strip() )
gitCheckout( 'mbed_lib_rev' + str( revNum ), True )
except:
print "First, at least execute 'make' command !"