UNPKG

3.08 kBJavaScriptView Raw
1var Generator = require('generate-js'),
2 merge = require('deepmerge'),
3 CommandLineParser = require('../../utils/command-line-parser');
4
5var Plugin = Generator.generate(function Plugin(options) {
6 var _ = this,
7 sdkFound = false,
8 sdkTemplateFound = false,
9 prettifyFound = false;
10
11 options.cli = options.cli || [];
12
13 _.defaults = _.defaults || {};
14
15 for (var i = 0; i < options.cli.length; i++) {
16 if (options.cli[i][1] === 'sdk') {
17 sdkFound = true;
18 } else if (options.cli[i][1] === 'sdkTemplate') {
19 sdkTemplateFound = true;
20 } else if (options.cli[i][1] === 'prettify') {
21 prettifyFound = true;
22 }
23 }
24
25 if (!sdkFound) options.cli.push(['', 'sdk', 'Also generates an SDK for the given plugin.']);
26 if (!prettifyFound) options.cli.push(['', 'prettify', 'Prettifies the generated SDK.']);
27 if (!prettifyFound) options.cli.push(['', 'sdkTemplate[=ARG]', 'Set the template for the generated SDK.']);
28
29 _.cliParser = CommandLineParser.create(options.cli);
30 _.defineProperties(options);
31 _.configure({});
32});
33
34Plugin.definePrototype({
35 deployAPI: function deployAPI(args, options, done) {
36 done();
37 },
38
39 configure: function configure(options) {
40 var _ = this;
41
42 _.defineProperties({
43 writable: true,
44 enumerable: true,
45 configurable: true
46 }, merge(_.defaults, options));
47
48 _.APIDeploy && _.defineProperties({
49 writable: true,
50 enumerable: true,
51 configurable: true
52 }, {
53 sdk: merge(_.APIDeploy.sdk, _.sdk)
54 });
55
56 _.afterConfigure();
57
58 return _;
59 },
60
61 afterConfigure: function afterConfigure() { },
62
63 _deployAPI: function _deployAPI(args, options, done) {
64 var _ = this;
65
66 _.APIDeploy.logger.log('Deploying API: ', _.name);
67
68 _.deployAPI(args, options, function() {
69 _.APIDeploy.logger.log('Deployed API: ', _.name);
70
71 if (options.sdk) {
72 _._generateSDK(args, options, done);
73 } else {
74 done && done();
75 }
76 });
77 },
78
79 _generateSDK: function _generateSDK(args, options, done) {
80 var _ = this;
81
82 _.APIDeploy.logger.log('Generating SDK: ', _.name);
83
84 _.generateSDK(args, options, function() {
85 _.APIDeploy.logger.log('Generated SDK: ', _.name);
86 done && done();
87 });
88 },
89
90 templateData: function templateData() {
91 var _ = this,
92 data = merge(_, {
93 methods: _.APIDeploy.methods
94 });
95
96 return data;
97 }
98});
99
100Plugin.definePrototype(require('./sdk/generate'));
101
102module.exports = Plugin;
103
104// var Plugin = require('api-deploy/plugin');
105//
106// Plugin.create({
107// defaults: {
108// memorySize: 128,
109// role: null,
110// timeout: 60,
111// runtime: 'nodejs',
112// },
113// sdkTemplate:
114// deployAPI: function deployAPI() {
115// var _ = this;
116//
117//
118// }
119// });