fixes for encode for the action form of pycompose
diff --git a/action/__main__.py b/action/__main__.py
index f1d9a9b..a75de50 100755
--- a/action/__main__.py
+++ b/action/__main__.py
@@ -17,19 +17,42 @@
import composer
import json
+from composer import deserialize
+
#
# this is the main method for running the pycomposer as an OpenWhisk action
#
def compose(args):
- if args['source'] is None:
- raise Exception('Please provide a source parameter')
+ if 'source' not in args and 'composition' not in args:
+ raise Exception('Please provide a source or composition parameter')
- composition = eval(args['source'])
- print(args['source'])
+ if 'composition' in args:
+ print('accepting composition as input')
+ print(args['composition'])
+ composition = deserialize(args['composition'])
+ else:
+ print(args['source'])
+ composition = eval(args['source'])
- if args['lower'] is not None:
+ if 'lower' in args:
res = composer.lower(composition, args['lower'])
print(str(res))
return json.loads(str(res))
else:
- return { "code": composer.encode(composer.composition('anonymous', composition), lower)['actions'][-1]['action']['exec']['code'] }
+ if 'name' in args:
+ name = 'anonymous'
+ else:
+ name = args['name']
+
+ compat = args['encode']
+
+ comp = composer.encode(composer.composition(name, composition), compat)
+ comp['composition'] = json.loads(str(composer.lower(comp['composition'], compat)))
+
+ print('success in encode')
+ print(comp)
+ print(str(comp))
+
+ return comp
+# return { "code": composer.encode(composer.composition(name, composition), args['encode'])['actions'][-1]['action']['exec']['code'] }
+