blob: 56ff666bf590860c5de80a226b9db306ea6652f6 [file] [log] [blame]
#
# Copyright 2015-2016 IBM Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import os
import subprocess
import httplib
from wskutil import request
#
# 'wsk sdk' CLI
#
class Sdk:
def __init__(self):
0 # empty body not allowed
def getCommands(self, parser, props):
sdkParser = parser.add_parser('sdk', help='work with the SDK')
subcmds = sdkParser.add_subparsers(title='available commands', dest='subcmd')
installParser = subcmds.add_parser('install', help='install artifacts')
installParser.add_argument('component', help='component to be installed: {docker,swift,iOS}')
def cmd(self, args, props):
if args.subcmd == 'install':
return self.installCmd(args, props)
else:
print 'Unknown SDK command:', args.subcmd
def installCmd(self, args, props):
if args.component == 'docker':
return self.dockerDownload(args, props)
if args.component == 'iOS':
return self.iosStarterAppDownload(args, props)
elif args.component == 'swift':
return self.swiftDownload(args, props)
else:
print 'Unknown SDK component:', args.component
def swiftDownload(self, args, props):
print 'Swift SDK coming soon.'
def dockerDownload(self, args, props):
tarFile = 'blackbox-0.1.0.tar.gz'
blackboxDir = 'dockerSkeleton'
if os.path.exists(tarFile):
print('The path ' + tarFile + ' already exists. Please delete it and retry.')
return -1
if os.path.exists(blackboxDir):
print('The path ' + blackboxDir + ' already exists. Please delete it and retry.')
return -1
url = 'https://%s/%s' % (props['apihost'], tarFile)
try:
res = request('GET', url)
if res.status == httplib.OK:
with open(tarFile, 'wb') as f:
f.write(res.read())
except:
print('Download of docker skeleton failed.')
return -1
rc = subprocess.call(['tar', 'pxf', tarFile])
if (rc != 0):
print('Could not install docker skeleton.')
return -1
rc = subprocess.call(['rm', tarFile])
print('\nThe docker skeleton is now installed at the current directory.')
return 0
def iosStarterAppDownload(self, args, props):
zipFile = 'OpenWhiskIOSStarterApp.zip'
if os.path.exists(zipFile):
print('The path ' + zipFile + ' already exists. Please delete it and retry.')
return -1
url = 'https://%s/%s' % (props['apihost'], zipFile)
try:
res = request('GET', url)
if res.status == httplib.OK:
with open(zipFile, 'wb') as f:
f.write(res.read())
except IOError as e:
print('Download of OpenWhisk iOS starter app failed.')
return -1
print('\nDownloaded OpenWhisk iOS starter app. Unzip ' + zipFile + ' and open the project in Xcode.')
return 0