faastruby 0.2.3 → 0.2.5

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: 93b8ffe62b7276bfd5a04730fc3d4643b43eb9be2bebced9d9c13a984af3405c
4
- data.tar.gz: d38f0c66d2d392916870ec2db8d651b887b1281deb0ee5a88e94e6fafae0c92e
3
+ metadata.gz: 6923262dc376ee5d45aecf773ab79effc56ac3c41be86f32e543a088d4482301
4
+ data.tar.gz: f5fdbb23a2b0b40392d520ef46adb0849949d622145f2fc0e4f05b822acb24d5
5
5
  SHA512:
6
- metadata.gz: 2b9e4b1cbb7abc709dbbe25c385aa40b881a0d14217fc6c56276de115f2b97653230e18dc8668255b8f33ad1b92711d3eb5c001b1c3dd9751084e0b69d30dd11
7
- data.tar.gz: 1ed5d7c3d34154aa334f570b2e8825bf76efd00bdd687f6dd57ab7d9118f9897a0d7434b75cd64d4fd708addf96e7cabef19fb29e2a86f9d21af63b36fdfcd14
6
+ metadata.gz: 32b98888ae961eade9329627bafb2ddfd834966b6a0676316735a2619d06faa5942c1c5016c0e395315d70e6ca211ed7a0d481b4b009805f37ec5f857bf3495f
7
+ data.tar.gz: 8fbda1fd86bb74e58fb34f7a22789b28f78061174fbb5ff769dd3a64c3a15fc20fac89d48d7c5d707b14add1116c9634624be7688f3e605ec2c0594acb37beae
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Changelog
2
2
 
3
- ## 0.2.3 - Unreleased
3
+ ## 0.2.5 - Nov 18 2018
4
+ - Support for multiple regions with `faastruby --region [REGION] ...`
5
+
6
+ ## 0.2.4 - Skipped
7
+
8
+ ## 0.2.3 - Oct 20 2018
4
9
  - Added #status_code to Workspace class to hold the API response code after a request
5
10
  - Added refresh_credentials endpoint
6
11
  - Fix the request headers
@@ -25,4 +30,4 @@ Run `faastruby help` for usage details.
25
30
  - Functions can have tests and they can be configured to run before each deploy, aborting if a failure happens.
26
31
  - Added option to print or save the workspace credentials into a different file upon creation, instead of saving it to ~/.faastruby
27
32
  - Read a different credentials file via FAASTRUBY_CREDENTIALS environment variable.
28
- - Read credentials via environment variables: FAASTRUBY_API_KEY and FAASTRUBY_API_SECRET.
33
+ - Read credentials via environment variables: FAASTRUBY_API_KEY and FAASTRUBY_API_SECRET.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- faastruby (0.2.3)
4
+ faastruby (0.2.4)
5
5
  colorize (~> 0.8)
6
6
  oj (~> 3.6)
7
7
  rest-client (~> 2.0)
@@ -29,7 +29,7 @@ GEM
29
29
  mime-types-data (3.2018.0812)
30
30
  necromancer (0.4.0)
31
31
  netrc (0.11.0)
32
- oj (3.6.12)
32
+ oj (3.7.0)
33
33
  pastel (0.7.2)
34
34
  equatable (~> 0.5.0)
35
35
  tty-color (~> 0.4.0)
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  CLI tool for managing workspaces and functions hosted at [FaaStRuby](https://faastruby.io).
7
7
 
8
8
  ## What is FaaStRuby?
9
- Fast, lightweight and scalable serverless platform built for Ruby developers.
9
+ FaaStRuby is a serverless platform built for Ruby developers.
10
10
 
11
11
  * [Tutorial](https://faastruby.io/tutorial.html)
12
12
 
@@ -58,4 +58,4 @@ Build lots of functions and share them with fellow Ruby devs!
58
58
 
59
59
  ## FaaStRuby + Hyperstack = fullstack Ruby apps!
60
60
 
61
- Do you think JavaScript is your only option for the front-end? Think again. [Hyperstack](https://hyperstack.org) is a Ruby DSL, compiled by Opal, bundled by Webpack, powered by React.
61
+ Do you think JavaScript is your only option for the front-end? Think again. [Hyperstack](https://hyperstack.org) is a Ruby DSL, compiled by Opal, bundled by Webpack, powered by React.
data/exe/faastruby CHANGED
@@ -1,5 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'faastruby'
3
3
  require 'faastruby/cli'
4
+ if ARGV[0] == '--region'
5
+ ARGV.shift
6
+ ENV['FAASTRUBY_REGION'] = ARGV.shift
7
+ end
4
8
  command = ARGV.shift
5
- FaaStRuby::CLI.run(command, ARGV)
9
+ FaaStRuby::CLI.run(command, ARGV)
data/lib/faastruby/api.rb CHANGED
@@ -5,7 +5,7 @@ module FaaStRuby
5
5
  @@api_version = 'v2'
6
6
  attr_reader :api_url, :credentials, :headers
7
7
  def initialize
8
- @api_url = "#{HOST}/#{@@api_version}"
8
+ @api_url = "#{FaaStRuby.api_host}/#{@@api_version}"
9
9
  @credentials = {'API-KEY' => FaaStRuby.api_key, 'API-SECRET' => FaaStRuby.api_secret}
10
10
  @headers = {content_type: 'application/json', accept: 'application/json'}.merge(@credentials)
11
11
  @struct = Struct.new(:response, :body, :errors, :code)
@@ -57,7 +57,7 @@ module FaaStRuby
57
57
  # end
58
58
 
59
59
  def run(function_name:, workspace_name:, payload:, method:, headers: {}, time: false, query: nil)
60
- url = "#{HOST}/#{workspace_name}/#{function_name}#{query}"
60
+ url = "#{FaaStRuby.api_host}/#{workspace_name}/#{function_name}#{query}"
61
61
  headers['Benchmark'] = true if time
62
62
  if method == 'get'
63
63
  RestClient.public_send(method, url, headers){|response, request, result| response }
@@ -95,4 +95,4 @@ module FaaStRuby
95
95
  @struct.new(nil, nil, errors, code)
96
96
  end
97
97
  end
98
- end
98
+ end
@@ -1,6 +1,10 @@
1
1
  module FaaStRuby
2
- HOST = ENV['FAASTRUBY_HOST'] || 'https://api.faastruby.io'
3
-
2
+ ROOT_DOMAIN = ENV['FAASTRUBY_ROOT_DOMAIN'] || 'faastruby.io'
3
+ DEFAULT_REGION = 'tor1'
4
+ REGIONS = [
5
+ 'tor1',
6
+ 'sfo2'
7
+ ]
4
8
  class << self
5
9
  attr_accessor :configuration
6
10
  end
@@ -22,6 +26,27 @@ module FaaStRuby
22
26
  {api_key: api_key, api_secret: api_secret}
23
27
  end
24
28
 
29
+ def self.region
30
+ ENV['FAASTRUBY_REGION'] ||= DEFAULT_REGION
31
+ raise "No such region: #{ENV['FAASTRUBY_REGION']}" unless FaaStRuby::REGIONS.include?(ENV['FAASTRUBY_REGION'])
32
+ ENV['FAASTRUBY_REGION']
33
+ end
34
+
35
+ def self.api_host
36
+ ENV['FAASTRUBY_HOST'] || "https://api.#{region}.#{ROOT_DOMAIN}"
37
+ end
38
+
39
+ def self.credentials_file
40
+ return File.expand_path(ENV['FAASTRUBY_CREDENTIALS']) if ENV['FAASTRUBY_CREDENTIALS']
41
+ if region == DEFAULT_REGION && File.file?(File.expand_path('~/.faastruby'))
42
+ return File.expand_path('~/.faastruby')
43
+ elsif region == DEFAULT_REGION
44
+ return File.expand_path("~/.faastruby.#{region}")
45
+ else
46
+ return File.expand_path("~/.faastruby.#{region}")
47
+ end
48
+ end
49
+
25
50
  class Configuration
26
51
  attr_accessor :api_key, :api_secret
27
52
  end
@@ -50,4 +75,4 @@ module FaaStRuby
50
75
  end
51
76
  end
52
77
  end
53
- end
78
+ end
data/lib/faastruby/cli.rb CHANGED
@@ -8,9 +8,7 @@ require 'faastruby/cli/package'
8
8
 
9
9
  module FaaStRuby
10
10
  FAASTRUBY_YAML = 'faastruby.yml'
11
- FAASTRUBY_CREDENTIALS = File.expand_path(ENV['FAASTRUBY_CREDENTIALS'] || '~/.faastruby')
12
11
  SPINNER_FORMAT = :spin_2
13
-
14
12
  class CLI
15
13
  def self.error(message, color: :red)
16
14
  message.each {|m| STDERR.puts m.colorize(color)} if message.is_a?(Array)
@@ -24,6 +22,7 @@ module FaaStRuby
24
22
  return
25
23
  end
26
24
  check_version
25
+ check_region
27
26
  error("Unknown command: #{command}") unless FaaStRuby::Command::COMMANDS.has_key?(command)
28
27
  FaaStRuby::Command::COMMANDS[command].new(args).run
29
28
  end
@@ -38,5 +37,10 @@ module FaaStRuby
38
37
  ], color: nil)
39
38
  end
40
39
  end
40
+
41
+ def self.check_region
42
+ ENV['FAASTRUBY_REGION'] ||= DEFAULT_REGION
43
+ error(["No such region: #{ENV['FAASTRUBY_REGION']}".red, "Valid regions are: #{FaaStRuby::REGIONS.join(' | ')}"], color: nil) unless FaaStRuby::REGIONS.include?(ENV['FAASTRUBY_REGION'])
44
+ end
41
45
  end
42
46
  end
@@ -61,4 +61,4 @@ module FaaStRuby
61
61
  '-v' => FaaStRuby::Command::Version
62
62
  }
63
63
  end
64
- end
64
+ end
@@ -7,7 +7,7 @@ module FaaStRuby
7
7
  @workspace_name = @args.shift
8
8
  FaaStRuby::CLI.error(['Missing argument: WORKSPACE_NAME'.red, usage], color: nil) if @workspace_name.nil? || @workspace_name =~ /^-.*/
9
9
  parse_options
10
- @options['credentials_file'] ||= FAASTRUBY_CREDENTIALS
10
+ @options['credentials_file'] ||= FaaStRuby.credentials_file
11
11
  @missing_args = []
12
12
  FaaStRuby::CLI.error(@missing_args, color: nil) if missing_args.any?
13
13
  end
@@ -5,7 +5,7 @@ module FaaStRuby
5
5
  def initialize(args)
6
6
  @args = args
7
7
  parse_options
8
- @options['credentials_file'] ||= FAASTRUBY_CREDENTIALS
8
+ @options['credentials_file'] ||= FaaStRuby.credentials_file
9
9
  end
10
10
 
11
11
  def run
@@ -26,7 +26,7 @@ module FaaStRuby
26
26
  command << "-X #{@options['method'].upcase}" if @options['method']
27
27
  @options['headers']&.each {|h,v| command << "-H '#{h}: #{v}'"}
28
28
  command << "-d '#{@options['body']}'" if @options['body']
29
- command << "'#{HOST}/#{@options['workspace_name']}/#{@function_name}#{@options['query']}'"
29
+ command << "'#{FaaStRuby.api_host}/#{@options['workspace_name']}/#{@function_name}#{@options['query']}'"
30
30
  puts command.join(" ")
31
31
  end
32
32
 
@@ -8,7 +8,7 @@ module FaaStRuby
8
8
  FaaStRuby::CLI.error(@missing_args, color: nil) if missing_args.any?
9
9
  @workspace_name = @args.shift
10
10
  parse_options
11
- @options['credentials_file'] ||= FAASTRUBY_CREDENTIALS
11
+ @options['credentials_file'] ||= FaaStRuby.credentials_file
12
12
  end
13
13
 
14
14
  def run
@@ -67,4 +67,4 @@ module FaaStRuby
67
67
  end
68
68
  end
69
69
  end
70
- end
70
+ end
@@ -9,7 +9,7 @@ module FaaStRuby
9
9
  @workspace_name = @args.shift
10
10
  parse_options
11
11
  FaaStRuby::Credentials.load_for(@workspace_name)
12
- @options['credentials_file'] ||= FAASTRUBY_CREDENTIALS
12
+ @options['credentials_file'] ||= FaaStRuby.credentials_file
13
13
  end
14
14
 
15
15
  def run
@@ -63,4 +63,4 @@ module FaaStRuby
63
63
  end
64
64
  end
65
65
  end
66
- end
66
+ end
@@ -19,7 +19,7 @@ module FaaStRuby
19
19
  def print_functions_table(functions)
20
20
  no_functions unless functions.any?
21
21
  rows = functions.map do |function_name|
22
- [function_name, "#{HOST}/#{@workspace_name}/#{function_name}"]
22
+ [function_name, "#{FaaStRuby.api_host}/#{@workspace_name}/#{function_name}"]
23
23
  end
24
24
  table = TTY::Table.new(['FUNCTION','ENDPOINT'], rows)
25
25
  puts table.render(:basic)
@@ -51,4 +51,4 @@ module FaaStRuby
51
51
  end
52
52
  end
53
53
  end
54
- end
54
+ end
@@ -1,6 +1,6 @@
1
1
  module FaaStRuby
2
2
  class Credentials # TODO: change it to YAML?
3
- def self.load_credentials_file(credentials_file = FAASTRUBY_CREDENTIALS)
3
+ def self.load_credentials_file(credentials_file = FaaStRuby.credentials_file)
4
4
  if File.file?(credentials_file)
5
5
  creds = Oj.load(File.read(credentials_file))
6
6
  return creds if creds.is_a?(Hash)
@@ -34,7 +34,7 @@ module FaaStRuby
34
34
  puts "#{symbol} f #{credentials_file}".colorize(color)
35
35
  end
36
36
 
37
- def self.load_for(workspace_name, cred_file = FAASTRUBY_CREDENTIALS)
37
+ def self.load_for(workspace_name, cred_file = FaaStRuby.credentials_file)
38
38
  credentials = load_from_env(workspace_name) || load_credentials_file(cred_file)
39
39
  FaaStRuby::CLI.error("Could not find credentials for '#{workspace_name}' in '#{cred_file}'") unless credentials.has_key?(workspace_name)
40
40
  FaaStRuby.configure do |config|
@@ -49,4 +49,4 @@ module FaaStRuby
49
49
  {workspace_name => {'api_key' => ENV['FAASTRUBY_API_KEY'], 'api_secret' => ENV['FAASTRUBY_API_SECRET']}}
50
50
  end
51
51
  end
52
- end
52
+ end
@@ -1,3 +1,3 @@
1
1
  module FaaStRuby
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faastruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-26 00:00:00.000000000 Z
11
+ date: 2018-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client