Source code for bowl.cli_opts.add
"""
This module is the add command of bowl.
Created on 26 May 2014
@author: Charlie Lewis
"""
import ast
import os
from bowl.cli_opts import link
[docs]class Object(object):
pass
[docs]class add(object):
"""
This class is responsible for the add command of the cli.
"""
@classmethod
[docs] def main(self, args):
if args.repository:
# !! TODO connect to api of repository
print args.repository
print "TODO"
else:
link_args = Object()
link_args.z = True
link_args.metadata_path = args.metadata_path
link_args.SERVICE_HOST = "localhost"
if link.link.main(link_args):
directory = os.path.join(args.metadata_path, "services")
directory = os.path.expanduser(directory)
if not os.path.exists(directory):
os.makedirs(directory)
directory_os = os.path.join(directory, args.OS)
if not os.path.exists(directory_os):
os.makedirs(directory_os)
directory_version = os.path.join(directory_os, args.VERSION)
if not os.path.exists(directory_version):
os.makedirs(directory_version)
directory_type = os.path.join(directory_version, args.TYPE)
if not os.path.exists(directory_type):
os.makedirs(directory_type)
directory_docker = os.path.join(directory_type, "dockerfiles")
if not os.path.exists(directory_docker):
os.makedirs(directory_docker)
directory_name = os.path.join(directory_docker, args.NAME)
if not os.path.exists(directory_name):
os.makedirs(directory_name)
# !! TODO !!!!!
try:
with open(os.path.join(directory, "services"), 'a') as f:
f.write("{" +
"'title': 'localhost'," +
" 'type': 'choice_menu'" +
"}\n")
except:
print "unable to add service"
else:
print "unable to link localhost as a repository"
# !! TODO
# check JSON for path
# check JSON for "" of key/values
# check JSON for '' of key/values
# check JSON for no quoting of key/values
# check all necessary fields in JSON are there
# check JSON dependencies like background_cmd only if combine_cmd is true, etc.
# !! TODO
# get DOckerfile at path, but also everything in the context of that directory
# !! TODO
# add to new container directory (not .default)
# ask the user if they would like to use .default for default services
# ask the user if they would like remove .default from their services
# !! TODO
# mkdir ~/.bowl/services
# contains a file that says what all of the service directories are
# most likely .default and/or ~/.bowl/services/
# contains added services, unless specified to be somewhere else
# !! TODO
# add service to another repository ...
# !! TODO
print args