faastruby 0.5.15 → 0.5.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90642de9a37ebb95e7a59cc0d1814166c183ae077a84fc0eb89d413b91afde50
4
- data.tar.gz: 1a8fc95eef7bb5faac20e14381d70c4201960aa2680d5cdefb2e1042a52af8f3
3
+ metadata.gz: 4c2140df8e1c0f5ab07372b83c80d26e7395b64a02d8e722b50e7acdfaa4a8a8
4
+ data.tar.gz: 73e3b0a89b4dea4393a09fc33ffec3fcadbdbfce2069ccc3cdb60d7e96ab064e
5
5
  SHA512:
6
- metadata.gz: 782132facb71a4184825634a89eb14a11064cad0b189157fc61e2c88134d51a34927804657975e52716e1ad92d7bf85603be45057cb6ca9ec0ba288d5d4066a1
7
- data.tar.gz: fb063c0d5f9944ad8ba14611b0c4d38e84152fb25532a2059e18cdcb5958e3741f2018865827e5fe34f1bb181424a8626716d3e0bbc68df53ee0a8214ae6ad96
6
+ metadata.gz: b5d46a540b29c8d43f15e939a455a7046caf501756eb3187e85116296b7dcc8ca96c3d8a6acb7f12fad506ad120d530845b5090651fa1896d822bc58fa2543c8
7
+ data.tar.gz: aca215d48d18df5ba9609205a90a849ce0dd6ebb247f4210f6885831691b3271dca813baa9e2a67be0e4cef18b5ede29909c5361ba97de3b904313985e9b4f17
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.16 - unreleased
4
+ - Remove unused arguments from update workspace `run` method.
5
+ - Update Help
6
+ - Change the argument that measures the execution time on `run` to `--measure`
7
+ - Add argument to read context from STDIN when running `deploy-to`
8
+ - Switch default config files method from array to multiline string
9
+ - Allow passwords with up to 50 characters.
10
+ - Fix bug preventing `faastruby deploy` to deploy the secrets.
11
+
3
12
  ## 0.5.15 - Mar 18 2019
4
13
  - Remove `nil` entries from error array before trying to print error messages
5
14
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- faastruby (0.5.15)
4
+ faastruby (0.5.16)
5
5
  colorize (~> 0.8)
6
6
  faastruby-rpc (~> 0.2.5)
7
7
  listen (~> 3.1)
@@ -1,7 +1,7 @@
1
1
  module FaaStRuby
2
2
  module Command
3
3
  module Account
4
- PASSWORD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$/
4
+ PASSWORD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,50}$/
5
5
  EMAIL_REGEX = /\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
6
6
  require 'faastruby/cli/commands/account/base_command'
7
7
  require 'io/console'
@@ -21,11 +21,11 @@ module FaaStRuby
21
21
  print "Email: "
22
22
  email = STDIN.gets.chomp
23
23
  end
24
- puts "\nNow type in a password. It must contain 8 to 20 characters and have at least one uppercase letter, one lowercase letter, one number and one special character @ $ ! % * ? &"
24
+ puts "\nNow type in a password. It must contain 8 to 50 characters and have at least one uppercase letter, one lowercase letter, one number and one special character @ $ ! % * ? &"
25
25
  print "Password: "
26
26
  password = STDIN.noecho(&:gets).chomp
27
27
  until password_is_valid?(password) do
28
- puts "\nYour password must contain 8 to 20 characters and have at least one uppercase letter, one lowercase letter, one number and one special character @ $ ! % * ? &\nPlease try again:".red
28
+ puts "\nYour password must contain 8 to 50 characters and have at least one uppercase letter, one lowercase letter, one number and one special character @ $ ! % * ? &\nPlease try again:".red
29
29
  print "Password: "
30
30
  password = STDIN.noecho(&:gets).chomp
31
31
  end
@@ -90,10 +90,14 @@ module FaaStRuby
90
90
  puts "\nUsage: faastruby #{self.class.help}"
91
91
  puts %(
92
92
  -f,--function PATH/TO/FUNCTION # Specify the directory where the function is.
93
- --context DATA # The data to be stored as context in the cloud,
94
- # accessible via 'event.context' from within your function.
95
- --set-root # Set the function as the root route of the workspace/
96
- --set-catch-all # Set the function as the catch-all route of the workspace.
93
+ --context 'JSON_STRING' # The data to be stored as execution context
94
+ # in the cloud, accessible via 'event.context'
95
+ # from within your function.
96
+ # The context data must be a JSON String, and
97
+ # have maximum size of 4KB.
98
+ --context-from-stdin # Read context data from STDIN.
99
+ --set-root # Set the function as the root route for the workspace.
100
+ --set-catch-all # Set the function as the catch-all route for the workspace.
97
101
  --dont-create-workspace # Don't try to create the workspace if it doesn't exist.
98
102
  )
99
103
  end
@@ -171,6 +175,8 @@ module FaaStRuby
171
175
  Dir.chdir @args.shift
172
176
  when '--context'
173
177
  @options['context'] = @args.shift
178
+ when '--context-from-stdin'
179
+ @options['context'] = STDIN.gets.chomp
174
180
  when '--quiet', '-q'
175
181
  @options['quiet'] = true
176
182
  when '--set-root'
@@ -39,15 +39,15 @@ module FaaStRuby
39
39
  def usage
40
40
  puts "\nUsage: faastruby #{self.class.help}"
41
41
  puts %(
42
- -b,--body 'DATA' # The request body
43
- --stdin # Read the request body from STDIN
44
- -m,--method METHOD # The request method
42
+ -b,--body 'DATA' # The request body.
43
+ --stdin # Read the request body from STDIN.
44
+ -m,--method METHOD # The request method.
45
45
  -h,--header 'Header: Value' # Set a header. Can be used multiple times.
46
- -f,--form 'a=1&b=2' # Send form data and set header 'Content-Type: application/x-www-form-urlencoded'
47
- -j,--json '{"a":"1"}' # Send JSON data and set header 'Content-Type: application/json'
48
- -t,--time # Return function run time in the response
46
+ -f,--form 'a=1&b=2' # Send form data and set header 'Content-Type: application/x-www-form-urlencoded'.
47
+ -j,--json '{"a":"1"}' # Send JSON data and set header 'Content-Type: application/json'.
48
+ --measure # Return function execution time in the response headers.
49
49
  -q,--query 'foo=bar' # Set a query parameter for the request. Can be used multiple times.
50
- --curl # Return the CURL command equivalent for the request
50
+ --curl # Print the equivalent CURL command for the request and exit.
51
51
  )
52
52
  end
53
53
 
@@ -69,8 +69,9 @@ module FaaStRuby
69
69
  @options['method'] = @args.shift.downcase
70
70
  when '-h', '--header'
71
71
  set_header
72
- when '-t', '--time'
73
- @options['time'] = true
72
+ when '--measure'
73
+ @options['headers'] ||= {}
74
+ @options['headers']['Benchmark'] = true
74
75
  when '--curl'
75
76
  @options['curl'] = true
76
77
  when '-q', '--query'
@@ -35,8 +35,12 @@ module FaaStRuby
35
35
  def usage
36
36
  puts "\nUsage: faastruby #{self.class.help}"
37
37
  puts %(
38
- -d, --data 'STRING' # The context data. Must be quoted.
39
- --stdin # Read context data from STDIN
38
+ -d, --data JSON_STRING' # The data to be stored as execution context
39
+ # in the cloud, accessible via 'event.context'
40
+ # from within your function.
41
+ # The context data must be a JSON String, and
42
+ # have maximum size of 4KB.
43
+ --stdin # Read context data from STDIN
40
44
  )
41
45
  end
42
46
 
@@ -7,19 +7,22 @@ module FaaStRuby
7
7
  end
8
8
 
9
9
  def run
10
- puts "faastRuby CLI - Manage workspaces and functions hosted at faastruby.io"
11
- puts "Version: #{FaaStRuby::VERSION}"
12
- puts
13
- puts "Usage: faastruby [update] [OPTIONS] COMMAND [--help | -h] [ARGS]"
14
- puts
15
- puts "To update to the latest version, run: faastruby update"
16
- puts
17
- puts "OPTIONS:"
18
- puts 'help, -h, --help # Displays this help'
19
- puts '-v # Print version and exit'
20
- puts '--region tor1 # Specify a region. "tor1" (default) is the only region available'
21
- puts "\nCOMMANDS:"
22
10
  puts %(
11
+ faastRuby CLI - Manage workspaces and functions hosted at faastruby.io
12
+ Version: #{FaaStRuby::VERSION}
13
+
14
+ Usage: faastruby [update] [OPTIONS] COMMAND [--help | -h] [ARGS]
15
+
16
+ To update to the latest version, run: faastruby update
17
+
18
+ OPTIONS:
19
+ help, -h, --help # Displays this help
20
+ -v # Print version and exit
21
+ --region tor1 # Specify a region. "tor1" (default) is the only
22
+ # region available at this time
23
+
24
+ COMMANDS:
25
+
23
26
  Accounts:
24
27
  signup
25
28
  confirm-account # Send a token over email for account confirmation
@@ -27,7 +30,7 @@ Accounts:
27
30
  logout
28
31
 
29
32
  Functions:
30
- new # Initialize a function in your local machine
33
+ new # Initialize a directory with a function template
31
34
  deploy-to # Deploy a function to a cloud workspace
32
35
  remove-from # Remove a function from a cloud workspace
33
36
  run # Trigger the function via HTTP endpoint
@@ -36,17 +39,22 @@ Functions:
36
39
  Projects:
37
40
  new-project # Initialize a project in your local machine
38
41
  deploy # Deploy all functions and static files of a project
42
+ down # Remove a workspace from the cloud. Must be executed
43
+ # from within a project directory.
39
44
 
40
45
  Workspaces:
41
46
  create-workspace # Create a cloud workspace
42
- destroy-workspace # Erase a workspace from the cloud
47
+ destroy-workspace # Remove a workspace and all its functions
48
+ # from the cloud. Can't be undone.
43
49
  list-workspace # List what's in a cloud workspace
44
- cp # Copy a static file from your local machine to a cloud workspace
50
+ cp # Copy a static file from your local machine to
51
+ # a cloud workspace
45
52
  rm # Remove a static file from a cloud workspace
46
53
  update-workspace # Update workspace settings
47
54
 
55
+ Run faastruby COMMAND --help for more details.
56
+
48
57
  )
49
- puts "Run faastruby COMMAND --help for more details."
50
58
  end
51
59
  end
52
60
  end
@@ -18,7 +18,7 @@ module FaaStRuby
18
18
  @options['functions'] += find_functions unless @options['functions'].any?
19
19
  @options['environment'] ||= 'stage'
20
20
  @project_yaml = YAML.load(File.read(PROJECT_YAML_FILE))['project'] rescue FaaStRuby::CLI.error("Could not find file 'project.yml'. Are you running this command from the project's folder?")
21
- @project_secrets = YAML.load(File.read(PROJECT_SECRETS_FILE)) rescue {secrets: {}}
21
+ @project_secrets = YAML.load(File.read(PROJECT_SECRETS_FILE))['secrets'] rescue {secrets: {}}
22
22
  @project_name = @project_yaml['name']
23
23
  @root_to = @project_yaml['root_to'] || 'root'
24
24
  @catch_all = @project_yaml['catch_all'] || 'catch-all'
@@ -124,7 +124,7 @@ module FaaStRuby
124
124
  -f,--function FUNCTION_PATH # Specify the path to the function directory in your local machine.
125
125
  # This argument can be repeated many times for multiple functions. Example:
126
126
  # -f path/to/function1 -f path/to/function2
127
- -e,--env ENVIRONMENT # ENVIRONMENT is added to the project name to compose the workspace name.
127
+ -e,--env ENVIRONMENT # ENVIRONMENT is added to the project's name to compose the workspace name.
128
128
  )
129
129
  end
130
130
 
@@ -31,10 +31,17 @@ module FaaStRuby
31
31
  end
32
32
 
33
33
  def usage
34
- puts "Usage: faastruby #{self.class.help}"
35
34
  puts %(
36
- -e,--env ENVIRONMENT # ENVIRONMENT is added to the project name to compose the workspace name.
37
- )
35
+
36
+ Remove a workspace from the cloud.
37
+ Must be executed from within a project's directory.
38
+
39
+ Usage: faastruby #{self.class.help}
40
+
41
+ -e,--env ENVIRONMENT # ENVIRONMENT is added to the project's name to compose the workspace name.
42
+ # Defaults to 'stage'
43
+
44
+ )
38
45
  end
39
46
 
40
47
  def parse_options
@@ -121,54 +121,54 @@ module FaaStRuby
121
121
  end
122
122
 
123
123
  def default_secrets_file
124
- [
125
- 'secrets:',
126
- " # Add secrets here and they will be available inside the function as \"event.context\"",
127
- " # Example:",
128
- " # prod:",
129
- " # root:",
130
- " # a_secret: bfe76f4557ffc2de901cb24e0f87436f",
131
- " # another/function:",
132
- " # another_secret: 4d1c281e.619a2489c.8b5d.dd945616d324",
133
- "",
134
- " # 'stage' is the default environment when you start Local",
135
- " # stage:",
136
- " # root:",
137
- " # a_secret: bfe76f4557ffc2de901cb24e0f87436f",
138
- " # another/function:",
139
- " # another_secret: 4d1c281e.619a2489c.8b5d.dd945616d324"
140
- ].join("\n")
124
+ %(secrets:
125
+ # Add secrets here and they will be available inside the function as "event.context"
126
+ # Example:
127
+ # prod:
128
+ # root:
129
+ # a_secret: bfe76f4557ffc2de901cb24e0f87436f
130
+ # another/function:
131
+ # another_secret: 4d1c281e.619a2489c.8b5d.dd945616d324
132
+
133
+ # 'stage' is the default environment when you start Local
134
+ # stage:
135
+ # root:
136
+ # a_secret: bfe76f4557ffc2de901cb24e0f87436f
137
+ # another/function:
138
+ # another_secret: 4d1c281e.619a2489c.8b5d.dd945616d324
139
+ )
141
140
  end
142
141
 
143
142
  def default_project_file
144
- [
145
- "project:",
146
- " # The project name",
147
- " name: #{@project_name}",
148
- " # The project identifier is used to ensure your workspaces will have unique names.",
149
- " # This is not a secret, but don't lose it!",
150
- " identifier: #{Digest::MD5.hexdigest(Time.now.to_s).slice(0..5)}",
151
- "",
152
- " ## The 'public' directory, where you put static files.",
153
- " ## Files will be served from here first, meaning that if",
154
- " ## you have a function at '/product' and a folder '/product'",
155
- " ## inside the public folder, the public one will take precedence.",
156
- " ## Defaults to 'public'.",
157
- " # public_dir: public",
158
- "",
159
- " ## The name of the folder containing your functions. Defaults to 'functions'",
160
- " # functions_dir: functions",
161
- "",
162
- " ## The name of the function that will respond to requests made",
163
- " ## to '/'. Defaults to 'root'",
164
- " # root_to: root",
165
- "",
166
- " ## The setting 'catch_all' allows you to capture requests to",
167
- " ## non-existing functions and send them to another function.",
168
- " ## This is useful for setting custom 404 pages, for example.",
169
- " ## Defaults to 'catch-all'.",
170
- " # catch_all: catch-all"
171
- ].join("\n")
143
+ %(project:
144
+ # The project name
145
+ name: #{@project_name}
146
+
147
+ # The project identifier is used to ensure your workspaces will have unique names.
148
+ # This is not a secret, but don't lose it!
149
+ identifier: #{Digest::MD5.hexdigest(Time.now.to_s).slice(0..5)}
150
+
151
+ ## The 'public' directory is where you put static files.
152
+ ## Files will be served from there first, meaning that if
153
+ ## you have a function at 'functions/product' and a folder
154
+ ## 'public/product', the public one will take precedence.
155
+ ## Defaults to 'public'.
156
+ # public_dir: public
157
+
158
+ ## The name of the folder containing the project's functions.
159
+ ## Defaults to 'functions'.
160
+ # functions_dir: functions
161
+
162
+ ## The name of the function that will respond to requests made
163
+ ## to '/'. Defaults to 'root'
164
+ # root_to: root
165
+
166
+ ## The setting 'catch_all' allows you to capture requests to
167
+ ## non-existing functions and send them to another function.
168
+ ## This is useful for setting custom 404 pages, for example.
169
+ ## Defaults to 'catch-all'.
170
+ # catch_all: catch-all
171
+ )
172
172
  end
173
173
 
174
174
  def tmuxinator_config
@@ -39,8 +39,7 @@ module FaaStRuby
39
39
  def usage
40
40
  puts "\nUsage: faastruby #{self.class.help}"
41
41
  puts %(
42
- --create-local-dir # Create a local folder in addition to the cloud
43
- --local-only # Only create a local folder. Skip creating workspace on the cloud
42
+ --create-local-dir # Create a local directory with the workspace name.
44
43
  )
45
44
  end
46
45
 
@@ -14,7 +14,7 @@ module FaaStRuby
14
14
  load_credentials
15
15
  end
16
16
 
17
- def run(create_directory: true, exit_on_error: true)
17
+ def run
18
18
  spinner = spin("Updating the number of runners to #{@options['runners_max']}...")
19
19
  workspace = FaaStRuby::Workspace.new(name: @workspace_name)
20
20
  workspace.update_runners(@options['runners_max'])
@@ -30,6 +30,10 @@ module FaaStRuby
30
30
  puts "\nUsage: faastruby #{self.class.help}"
31
31
  puts %(
32
32
  --runners N # Assign N runners to the workspace.
33
+ # N must be an integer between 0 and 100.
34
+ # When set to 0, requests to any functions
35
+ # whithin the workspace will return HTTP error
36
+ # 429 - Too Many Requests.
33
37
  )
34
38
  end
35
39
 
@@ -1,3 +1,3 @@
1
1
  module FaaStRuby
2
- VERSION = '0.5.15'
2
+ VERSION = '0.5.16'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faastruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.15
4
+ version: 0.5.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda