1
+ 'use strict' ;
2
+
3
+ Object . defineProperty ( exports , "__esModule" , {
4
+ value : true
5
+ } ) ;
6
+
7
+ exports . default = function ( config ) {
8
+ return ( 0 , _prompt2 . default ) ( [ {
9
+ name : 'name' ,
10
+ message : 'Function name?' ,
11
+ validate : function validate ( input ) {
12
+ return ( / ^ [ a - z A - Z 0 - 9 - _ ] + $ / . test ( input ) ? true : 'Function name must contain only letters, numbers, hyphens, or underscores'
13
+ ) ;
14
+ }
15
+ } , {
16
+ name : 'role' ,
17
+ message : 'Lambda execution role. This must already exist. See your IAM console for details'
18
+ } ] ) . then ( createDir ) . then ( createFiles ) . then ( createOnAWS ) ;
19
+
20
+ function createOnAWS ( params ) {
21
+ return ( 0 , _upload2 . default ) ( 'functions/' + params . name , config . functionNamespace ) ;
22
+ }
23
+
24
+ function createDir ( params ) {
25
+ return _fsExtraPromise2 . default . mkdirAsync ( 'functions/' + params . name ) . return ( params ) ;
26
+ }
27
+
28
+ function createFiles ( params ) {
29
+ return _bluebird2 . default . all ( [ createIndexJS ( params ) , createPackageJSON ( params ) , createGitIgnore ( params ) , createLambdaConfig ( params ) , createEventJSON ( params ) , createConfig ( params ) ] ) . return ( params ) ;
30
+ }
31
+
32
+ function createIndexJS ( params ) {
33
+ var content = '\nimport env from \'./env\'\n\nexport function handler({ headers, pathParameters, queryParameters, body }, context) {\n // Replace below with your own code!\n context.succeed({ headers, pathParameters, queryParameters, body })\n}' ;
34
+ return _fsExtraPromise2 . default . writeFileAsync ( 'functions/' + params . name + '/index.js' , content ) ;
35
+ }
36
+
37
+ function createPackageJSON ( params ) {
38
+ var content = {
39
+ name : params . name ,
40
+ version : '0.0.1' ,
41
+ description : '' ,
42
+ main : 'index.js' ,
43
+ scripts : {
44
+ 'test' : 'echo \"Error: no test specified\" && exit 1'
45
+ } ,
46
+ author : '' ,
47
+ dependencies : { }
48
+ } ;
49
+ return _fsExtraPromise2 . default . writeJSONAsync ( 'functions/' + params . name + '/package.json' , content ) ;
50
+ }
51
+
52
+ function createGitIgnore ( params ) {
53
+ var content = 'node_modules/*' ;
54
+ return _fsExtraPromise2 . default . writeFileAsync ( 'functions/' + params . name + '/.gitignore' , content ) ;
55
+ }
56
+
57
+ function createEventJSON ( params ) {
58
+ var content = { key : 'value' } ;
59
+ return _fsExtraPromise2 . default . writeJSONAsync ( 'functions/' + params . name + '/event.json' , content ) ;
60
+ }
61
+
62
+ function createConfig ( params ) {
63
+ var content = '\nimport { development } from \'../../env\'\nexport default development' ;
64
+ return _fsExtraPromise2 . default . writeFileAsync ( 'functions/' + params . name + '/env.js' , content ) ;
65
+ }
66
+
67
+ function createLambdaConfig ( params ) {
68
+ var content = {
69
+ Handler : 'index.handler' ,
70
+ MemorySize : 128 ,
71
+ Role : params . role ,
72
+ Timeout : 3
73
+ } ;
74
+ return _fsExtraPromise2 . default . writeJSONAsync ( 'functions/' + params . name + '/lambda.json' , content ) ;
75
+ }
76
+ } ;
77
+
78
+ var _bluebird = require ( 'bluebird' ) ;
79
+
80
+ var _bluebird2 = _interopRequireDefault ( _bluebird ) ;
81
+
82
+ var _prompt = require ( '../util/prompt' ) ;
83
+
84
+ var _prompt2 = _interopRequireDefault ( _prompt ) ;
85
+
86
+ var _fsExtraPromise = require ( 'fs-extra-promise' ) ;
87
+
88
+ var _fsExtraPromise2 = _interopRequireDefault ( _fsExtraPromise ) ;
89
+
90
+ var _upload = require ( '../deploy/upload' ) ;
91
+
92
+ var _upload2 = _interopRequireDefault ( _upload ) ;
93
+
94
+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
0 commit comments