funktor 0.2.1 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +35 -0
- data/.gitignore +2 -2
- data/Gemfile.lock +6 -6
- data/funktor.gemspec +1 -1
- data/lib/funktor.rb +0 -1
- data/lib/funktor/cli/bootstrap.rb +7 -7
- data/lib/funktor/cli/init.rb +135 -30
- data/lib/funktor/cli/templates/Gemfile +1 -3
- data/lib/funktor/cli/templates/{workers → app/workers}/hello_worker.rb +0 -0
- data/lib/funktor/cli/templates/config/boot.rb +16 -0
- data/lib/funktor/cli/templates/config/environment.yml +4 -2
- data/lib/funktor/cli/templates/{function_definitions → config/function_definitions}/incoming_job_handler.yml +1 -1
- data/lib/funktor/cli/templates/config/function_definitions/work_queue_handler.yml +11 -0
- data/lib/funktor/cli/templates/config/funktor.yml +27 -14
- data/lib/funktor/cli/templates/{iam_permissions → config/iam_permissions}/incoming_job_queue.yml +0 -0
- data/lib/funktor/cli/templates/{iam_permissions → config/iam_permissions}/ssm.yml +0 -0
- data/lib/funktor/cli/templates/{iam_permissions/active_job_queue.yml → config/iam_permissions/work_queue.yml} +1 -1
- data/lib/funktor/cli/templates/config/package.yml +4 -2
- data/lib/funktor/cli/templates/{resources → config/resources}/cloudwatch_dashboard.yml +268 -231
- data/lib/funktor/cli/templates/{resources → config/resources}/incoming_job_queue.yml +0 -0
- data/lib/funktor/cli/templates/{resources → config/resources}/incoming_job_queue_user.yml +0 -0
- data/lib/funktor/cli/templates/config/resources/work_queue.yml +22 -0
- data/lib/funktor/cli/templates/funktor_init.yml.tt +69 -0
- data/lib/funktor/cli/templates/{handlers → lambda_event_handlers}/incoming_job_handler.rb +1 -1
- data/lib/funktor/cli/templates/lambda_event_handlers/work_queue_handler.rb +8 -0
- data/lib/funktor/cli/templates/package.json +8 -1
- data/lib/funktor/cli/templates/serverless.yml +13 -12
- data/lib/funktor/incoming_job_handler.rb +11 -1
- data/lib/funktor/job.rb +4 -0
- data/lib/funktor/version.rb +1 -1
- data/lib/funktor/worker.rb +9 -0
- metadata +17 -18
- data/lib/funktor/cli/templates/function_definitions/active_job_handler.yml +0 -11
- data/lib/funktor/cli/templates/funktor.yml.tt +0 -51
- data/lib/funktor/cli/templates/handlers/active_job_handler.rb +0 -17
- data/lib/funktor/cli/templates/resources/active_job_queue.yml +0 -22
- data/lib/funktor/deploy/cli.rb +0 -42
- data/lib/funktor/deploy/serverless.rb +0 -60
- data/lib/funktor/deploy/serverless_templates/serverless.yml +0 -156
File without changes
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Resources:
|
2
|
+
<%= work_queue_name.camelize %>Queue:
|
3
|
+
Type: AWS::SQS::Queue
|
4
|
+
Properties:
|
5
|
+
QueueName: ${self:custom.funktor.<%= work_queue_name.camelize %>QueueName}
|
6
|
+
VisibilityTimeout: 300
|
7
|
+
RedrivePolicy:
|
8
|
+
deadLetterTargetArn:
|
9
|
+
"Fn::GetAtt": [ <%= work_queue_name.camelize %>DeadLetterQueue, Arn ]
|
10
|
+
maxReceiveCount: 5
|
11
|
+
<%= work_queue_name.camelize %>DeadLetterQueue:
|
12
|
+
Type: AWS::SQS::Queue
|
13
|
+
Properties:
|
14
|
+
QueueName: ${self:custom.funktor.<%= work_queue_name.camelize %>DeadJobQueueName}
|
15
|
+
|
16
|
+
Outputs:
|
17
|
+
<%= work_queue_name.camelize %>QueueUrl:
|
18
|
+
Value:
|
19
|
+
Ref: <%= work_queue_name.camelize %>Queue
|
20
|
+
<%= work_queue_name.camelize %>DeadLetterQueueUrl:
|
21
|
+
Value:
|
22
|
+
Ref: <%= work_queue_name.camelize %>DeadLetterQueue
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# ℹ️ WARNING: This file doesn't control anything directly. It's used to allow you to set/maintain config options in a central place.
|
2
|
+
# When you make changes to this file you should run `funktor init` again to propagate the changes to the 'active' configuration files.
|
3
|
+
appName: <%= name %>
|
4
|
+
runtime: ruby2.7
|
5
|
+
|
6
|
+
# These values will be applied to any funktor handlers that don't specify custom values.
|
7
|
+
# TODO - These still need to be wired up to do anything.
|
8
|
+
handlerDefaults:
|
9
|
+
# timeout is how long the handler can possibly run. Up to 10 messages may be delivered
|
10
|
+
# to a handler at one time, so you'll want this to be at least 10x the maximum time you
|
11
|
+
# expect to spend for one message. We default to a high number here to allow for the
|
12
|
+
# times when things go weird.
|
13
|
+
timeout: 300
|
14
|
+
|
15
|
+
# reservedConcurrency represents the maximum number of concurrent executions.
|
16
|
+
# Usually you'll want to leave this as null so that handlers can scale infinitely
|
17
|
+
# (within your account limits). If you need to restrict concurrency to prevent
|
18
|
+
# resource exhaustion you should do it at the queue level.
|
19
|
+
reservedConcurrency: null
|
20
|
+
|
21
|
+
# provisionedConcurrency represents the number of lambda functions that will always
|
22
|
+
# be available. You probably want to set this on individual queues if you're going
|
23
|
+
# to use it.
|
24
|
+
provisionedConcurrency: null
|
25
|
+
|
26
|
+
# Use memory_size to adjust the reousrces (both memory and CPU) available.
|
27
|
+
# We default to 256 as a reasonable trade off on saving money but getting
|
28
|
+
# reasonable performance.
|
29
|
+
memorySize: 256
|
30
|
+
|
31
|
+
# You can set the batch size. Max of 10_000 for normal queues, 10 for FIFO.
|
32
|
+
batchSize: 10
|
33
|
+
|
34
|
+
# How many seconds should AWS wait for a batch to fill up before executing lambda?
|
35
|
+
# For immediate execution set the batch size to 1.
|
36
|
+
maximumBatchingWindow : 1
|
37
|
+
|
38
|
+
# Visibility timeout should only come into play in the case of Funktor errors.
|
39
|
+
# Application level errors should be handled by Funktor retry mechanisms.
|
40
|
+
# The visibility timeout should be at least as long as the function timeout, and up to 6 times larger.
|
41
|
+
visibilityTimeout: 900
|
42
|
+
|
43
|
+
# Set log rentention to save money
|
44
|
+
logRetentionInDays: 30
|
45
|
+
|
46
|
+
# Incoming Job Handler
|
47
|
+
incomingJobHandler:
|
48
|
+
# If your jobs are bursty AND time-sensitive you might want to have some lambdas pre-provisioned
|
49
|
+
# to quickly handle jobs at the beginning of a burst. Uncomment the line below if so.
|
50
|
+
# provisionedConcurrency: 4
|
51
|
+
|
52
|
+
|
53
|
+
queues:
|
54
|
+
- default:
|
55
|
+
# Set queue specific config options here
|
56
|
+
# memorySize: 512
|
57
|
+
# TODO - Is it advisable to use FIFO queuues with Funktor? Maybe this isn't really even supported by CloudFormation?
|
58
|
+
# fifo: false
|
59
|
+
- singleThread:
|
60
|
+
reservedConcurrency: 1
|
61
|
+
|
62
|
+
# TODO - Maybe this shouldn't be surfaced this early?
|
63
|
+
# TODO - This still needs to be wired up to do anything.
|
64
|
+
package:
|
65
|
+
patterns:
|
66
|
+
- Gemfile
|
67
|
+
- Gemfile.lock
|
68
|
+
- app/**
|
69
|
+
- config/**
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# Happy Coding!
|
13
13
|
|
14
14
|
# The name of your service. All your AWS resources will contain this name.
|
15
|
-
service:
|
15
|
+
service: <%= name %>
|
16
16
|
|
17
17
|
# This causes serverless to throw an error early if the config is bad, instead of waiting for CloudFormation to try and fail to deploy it.
|
18
18
|
configValidationMode: error
|
@@ -22,13 +22,14 @@ frameworkVersion: '2'
|
|
22
22
|
|
23
23
|
provider:
|
24
24
|
name: aws
|
25
|
-
runtime:
|
25
|
+
runtime: <%= runtime %>
|
26
26
|
lambdaHashingVersion: 20201221
|
27
27
|
environment: ${file(config/environment.yml)}
|
28
|
+
versionFunctions: false # Reduces the amount of storage used since all Lambdas together are limited to 75GB
|
28
29
|
iamRoleStatements:
|
29
|
-
|
30
|
-
- ${file(
|
31
|
-
|
30
|
+
<%- all_iam_permissions.each do |iam_permission| -%>
|
31
|
+
- ${file(<%= iam_permission %>)}
|
32
|
+
<%- end -%>
|
32
33
|
|
33
34
|
|
34
35
|
custom:
|
@@ -41,14 +42,14 @@ custom:
|
|
41
42
|
package: ${file(config/package.yml)}
|
42
43
|
|
43
44
|
functions:
|
44
|
-
|
45
|
-
|
45
|
+
<%- all_function_definitions.each do |function_definition| -%>
|
46
|
+
<%= File.basename(function_definition, ".yml").camelize %>: ${file(<%= function_definition %>)}
|
47
|
+
<%- end -%>
|
46
48
|
|
47
49
|
resources:
|
48
|
-
|
49
|
-
- ${file(
|
50
|
-
|
51
|
-
- ${file(resources/cloudwatch_dashboard.yml)}
|
50
|
+
<%- all_resources.each do |resource| -%>
|
51
|
+
- ${file(<%= resource %>)}
|
52
|
+
<%- end -%>
|
52
53
|
|
53
54
|
plugins:
|
54
|
-
-
|
55
|
+
- serverless-ruby-layer
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'aws-sdk-sqs'
|
2
|
+
require 'active_support/core_ext/string/inflections'
|
2
3
|
|
3
4
|
module Funktor
|
4
5
|
class IncomingJobHandler
|
@@ -26,10 +27,19 @@ module Funktor
|
|
26
27
|
ENV['FUNKTOR_ACTIVE_JOB_QUEUE']
|
27
28
|
end
|
28
29
|
|
30
|
+
def queue_for_job(job)
|
31
|
+
queue_name = job.queue || 'default'
|
32
|
+
queue_constant = "FUNKTOR_#{queue_name.underscore.upcase}_QUEUE"
|
33
|
+
puts "queue_constant = #{queue_constant}"
|
34
|
+
puts "ENV value = #{ENV[queue_constant]}"
|
35
|
+
ENV[queue_constant] || ENV['FUNKTOR_DEFAULT_QUEUE']
|
36
|
+
end
|
37
|
+
|
29
38
|
def push_to_active_job_queue(job)
|
39
|
+
puts "job = #{job.to_json}"
|
30
40
|
sqs_client.send_message({
|
31
41
|
# TODO : How to get this URL...
|
32
|
-
queue_url:
|
42
|
+
queue_url: queue_for_job(job),
|
33
43
|
message_body: job.to_json,
|
34
44
|
delay_seconds: job.delay
|
35
45
|
})
|
data/lib/funktor/job.rb
CHANGED
data/lib/funktor/version.rb
CHANGED
data/lib/funktor/worker.rb
CHANGED
@@ -28,6 +28,10 @@ module Funktor::Worker
|
|
28
28
|
get_funktor_options[:queue_url]
|
29
29
|
end
|
30
30
|
|
31
|
+
def custom_queue
|
32
|
+
get_funktor_options[:queue]
|
33
|
+
end
|
34
|
+
|
31
35
|
def queue_url
|
32
36
|
# TODO : Should this default to FUNKTOR_ACTIVE_JOB_QUEUE?
|
33
37
|
# Depends how e handle this in pro...?
|
@@ -73,10 +77,15 @@ module Funktor::Worker
|
|
73
77
|
@client ||= Aws::SQS::Client.new
|
74
78
|
end
|
75
79
|
|
80
|
+
def work_queue
|
81
|
+
(self.custom_queue || 'default').to_s
|
82
|
+
end
|
83
|
+
|
76
84
|
def build_job_payload(job_id, delay, *worker_params)
|
77
85
|
{
|
78
86
|
worker: self.name,
|
79
87
|
worker_params: worker_params,
|
88
|
+
queue: self.work_queue,
|
80
89
|
job_id: job_id,
|
81
90
|
delay: delay,
|
82
91
|
funktor_options: get_funktor_options
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: funktor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Green
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-sqs
|
@@ -89,6 +89,7 @@ executables:
|
|
89
89
|
extensions: []
|
90
90
|
extra_rdoc_files: []
|
91
91
|
files:
|
92
|
+
- ".github/workflows/ruby.yml"
|
92
93
|
- ".gitignore"
|
93
94
|
- ".rspec"
|
94
95
|
- ".travis.yml"
|
@@ -114,29 +115,27 @@ files:
|
|
114
115
|
- lib/funktor/cli/generate/work_queue.rb
|
115
116
|
- lib/funktor/cli/init.rb
|
116
117
|
- lib/funktor/cli/templates/Gemfile
|
118
|
+
- lib/funktor/cli/templates/app/workers/hello_worker.rb
|
119
|
+
- lib/funktor/cli/templates/config/boot.rb
|
117
120
|
- lib/funktor/cli/templates/config/environment.yml
|
121
|
+
- lib/funktor/cli/templates/config/function_definitions/incoming_job_handler.yml
|
122
|
+
- lib/funktor/cli/templates/config/function_definitions/work_queue_handler.yml
|
118
123
|
- lib/funktor/cli/templates/config/funktor.yml
|
124
|
+
- lib/funktor/cli/templates/config/iam_permissions/incoming_job_queue.yml
|
125
|
+
- lib/funktor/cli/templates/config/iam_permissions/ssm.yml
|
126
|
+
- lib/funktor/cli/templates/config/iam_permissions/work_queue.yml
|
119
127
|
- lib/funktor/cli/templates/config/package.yml
|
128
|
+
- lib/funktor/cli/templates/config/resources/cloudwatch_dashboard.yml
|
129
|
+
- lib/funktor/cli/templates/config/resources/incoming_job_queue.yml
|
130
|
+
- lib/funktor/cli/templates/config/resources/incoming_job_queue_user.yml
|
131
|
+
- lib/funktor/cli/templates/config/resources/work_queue.yml
|
120
132
|
- lib/funktor/cli/templates/config/ruby_layer.yml
|
121
|
-
- lib/funktor/cli/templates/
|
122
|
-
- lib/funktor/cli/templates/function_definitions/incoming_job_handler.yml
|
123
|
-
- lib/funktor/cli/templates/funktor.yml.tt
|
133
|
+
- lib/funktor/cli/templates/funktor_init.yml.tt
|
124
134
|
- lib/funktor/cli/templates/gitignore
|
125
|
-
- lib/funktor/cli/templates/
|
126
|
-
- lib/funktor/cli/templates/
|
127
|
-
- lib/funktor/cli/templates/iam_permissions/active_job_queue.yml
|
128
|
-
- lib/funktor/cli/templates/iam_permissions/incoming_job_queue.yml
|
129
|
-
- lib/funktor/cli/templates/iam_permissions/ssm.yml
|
135
|
+
- lib/funktor/cli/templates/lambda_event_handlers/incoming_job_handler.rb
|
136
|
+
- lib/funktor/cli/templates/lambda_event_handlers/work_queue_handler.rb
|
130
137
|
- lib/funktor/cli/templates/package.json
|
131
|
-
- lib/funktor/cli/templates/resources/active_job_queue.yml
|
132
|
-
- lib/funktor/cli/templates/resources/cloudwatch_dashboard.yml
|
133
|
-
- lib/funktor/cli/templates/resources/incoming_job_queue.yml
|
134
|
-
- lib/funktor/cli/templates/resources/incoming_job_queue_user.yml
|
135
138
|
- lib/funktor/cli/templates/serverless.yml
|
136
|
-
- lib/funktor/cli/templates/workers/hello_worker.rb
|
137
|
-
- lib/funktor/deploy/cli.rb
|
138
|
-
- lib/funktor/deploy/serverless.rb
|
139
|
-
- lib/funktor/deploy/serverless_templates/serverless.yml
|
140
139
|
- lib/funktor/fake_job_queue.rb
|
141
140
|
- lib/funktor/incoming_job_handler.rb
|
142
141
|
- lib/funktor/job.rb
|
@@ -1,11 +0,0 @@
|
|
1
|
-
handler: handlers/active_job_handler.call
|
2
|
-
timeout: ${self:custom.funktor.activeJobHandler.timeout, 900}
|
3
|
-
reservedConcurrency: ${self:custom.funktor.activeJobHandler.reservedConcurrency, null}
|
4
|
-
provisionedConcurrency: ${self:custom.funktor.activeJobHandler.provisionedConcurrency, null}
|
5
|
-
memorySize: ${self:custom.funktor.activeJobHandler.memorySize, 256}
|
6
|
-
events:
|
7
|
-
- sqs:
|
8
|
-
arn:
|
9
|
-
Fn::GetAtt:
|
10
|
-
- ActiveJobQueue
|
11
|
-
- Arn
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# ℹ️ WARNING: This file doesn't control anything directly. It's used to allow you to set/maintain config options in a central place.
|
2
|
-
# When you make changes to this file you should run `funktor init` again to propagate the changes to the 'active' configuration files.
|
3
|
-
runtime: ruby2.7
|
4
|
-
|
5
|
-
# Incoming Job Handler
|
6
|
-
incoming_job_handler:
|
7
|
-
# Use memory_size to adjust the reousrces (both memory and CPU) available
|
8
|
-
# memory_size: 512
|
9
|
-
timeout_in_seconds: 20 # This handler might have to handle several incoming jobs at once
|
10
|
-
# WARNING : You probably don't want to limit concurrency on incoming jobs.
|
11
|
-
# concurrency: 100
|
12
|
-
|
13
|
-
# Delayed Job Activator
|
14
|
-
delayed_job_activator:
|
15
|
-
# Use memory_size to adjust the reousrces (both memory and CPU) available
|
16
|
-
# memory_size: 512
|
17
|
-
execution_schedule: rate(1 minute)
|
18
|
-
activation_window_in_seconds: 120 # Activate any jobs scheduled for the next two minutes
|
19
|
-
timeout_in_seconds: 300 # Allow an activation job to run for up to 5 minutes
|
20
|
-
concurrency: 1
|
21
|
-
|
22
|
-
|
23
|
-
queues:
|
24
|
-
default:
|
25
|
-
# Use memory_size to adjust the reousrces (both memory and CPU) available
|
26
|
-
# memory_size: 512
|
27
|
-
# You can set the batch size. Max of 10_000 for normal queues, 10 for FIFO.
|
28
|
-
# batch_size: 10
|
29
|
-
# How many seconds should AWS wait for a batch to fill up before executing lambda?
|
30
|
-
# For immediate execution set the batch size to 1.
|
31
|
-
# maximumBatchingWindow : 1
|
32
|
-
# A single handler can receive up to batch_size jobs at a time. Make sure timeout is long enough.
|
33
|
-
timeout_in_seconds: 300
|
34
|
-
# You might want to limit concurrency of executing jobs to stay within resource limits (like DB connections).
|
35
|
-
# concurrency: 10
|
36
|
-
# Visibility timeout should only come into play in the case of Funktor errors.
|
37
|
-
# Application level errors should be handled by Funktor retry mechanisms.
|
38
|
-
# The visibility timeout should be at least as long as the function timeout, and up to 6 times larger.
|
39
|
-
# visibility_timeout: 300
|
40
|
-
# TODO - Is it advisable to use FIFO queuues with Funktor?
|
41
|
-
# TODO - Maybe this isn't really even supported by CloudFormation?
|
42
|
-
# fifo: false
|
43
|
-
|
44
|
-
# TODO - Maybe this is handled in the Dockerfile?
|
45
|
-
package:
|
46
|
-
patterns:
|
47
|
-
- Gemfile
|
48
|
-
- Gemfile.lock
|
49
|
-
- ../app/**
|
50
|
-
- ../config/**
|
51
|
-
- ../lambda_handlers/**
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'funktor'
|
2
|
-
|
3
|
-
# Bundler is hard to make work because AWS includes some gems in the basic ruby runtime.
|
4
|
-
# We're probably going to need to use containers...
|
5
|
-
#require "rubygems"
|
6
|
-
#require "bundler/setup"
|
7
|
-
#Bundler.require(:default)
|
8
|
-
|
9
|
-
# TODO : Ideally this wouldn't be needed
|
10
|
-
require_relative '../workers/hello_worker'
|
11
|
-
|
12
|
-
$handler = Funktor::ActiveJobHandler.new
|
13
|
-
|
14
|
-
def call(event:, context:)
|
15
|
-
$handler.call(event: event, context: context)
|
16
|
-
end
|
17
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
Resources:
|
2
|
-
ActiveJobQueue:
|
3
|
-
Type: AWS::SQS::Queue
|
4
|
-
Properties:
|
5
|
-
QueueName: ${self:custom.funktor.activeJobQueueName}
|
6
|
-
VisibilityTimeout: 300
|
7
|
-
RedrivePolicy:
|
8
|
-
deadLetterTargetArn:
|
9
|
-
"Fn::GetAtt": [ ActiveJobDeadLetterQueue, Arn ]
|
10
|
-
maxReceiveCount: 5
|
11
|
-
ActiveJobDeadLetterQueue:
|
12
|
-
Type: AWS::SQS::Queue
|
13
|
-
Properties:
|
14
|
-
QueueName: ${self:custom.funktor.deadJobQueueName}
|
15
|
-
|
16
|
-
Outputs:
|
17
|
-
ActiveJobQueueUrl:
|
18
|
-
Value:
|
19
|
-
Ref: ActiveJobQueue
|
20
|
-
ActiveJobDeadLetterQueueUrl:
|
21
|
-
Value:
|
22
|
-
Ref: ActiveJobDeadLetterQueue
|
data/lib/funktor/deploy/cli.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require 'funktor/deploy/serverless'
|
3
|
-
|
4
|
-
module Funktor
|
5
|
-
module Deploy
|
6
|
-
class CLI
|
7
|
-
attr_reader :options
|
8
|
-
def initialize
|
9
|
-
@options = {
|
10
|
-
verbose: false,
|
11
|
-
file: 'funktor.yml',
|
12
|
-
tmp_dir_prefix: '.funktor',
|
13
|
-
stage: 'dev'
|
14
|
-
}
|
15
|
-
end
|
16
|
-
|
17
|
-
def parse(argv = ARGV)
|
18
|
-
OptionParser.new do |opts|
|
19
|
-
opts.on('-v', '--verbose', 'Display verbose output') do |verbose|
|
20
|
-
options[:verbose] = verbose
|
21
|
-
end
|
22
|
-
opts.on('-f', '--file=FILE', 'The path to the funktor.yml file to deploy') do |file|
|
23
|
-
options[:file] = file
|
24
|
-
end
|
25
|
-
opts.on('-t', '--tmp_dir_prefix=TMP_DIR_PREFIX', 'The prefix for the tmp dir. The stage will be appended.') do |tmp_dir_prefix|
|
26
|
-
options[:tmp_dir_prefix] = tmp_dir_prefix
|
27
|
-
end
|
28
|
-
opts.on('-s', '--stage=STAGE', 'The stage to deploy to. Defaults to "dev"') do |stage|
|
29
|
-
options[:stage] = stage
|
30
|
-
end
|
31
|
-
opts.on('-h') { puts opts; exit }
|
32
|
-
opts.parse!(argv)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def run
|
37
|
-
Funktor::Deploy::Serverless.new(**options).call
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|