zillabyte-cli 0.0.24 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +6 -14
  2. data/lib/#zillabyte-cli.rb# +5 -0
  3. data/lib/zillabyte/api/apps.rb +16 -132
  4. data/lib/zillabyte/api/components.rb +115 -0
  5. data/lib/zillabyte/api/flows.rb +121 -0
  6. data/lib/zillabyte/api/keys.rb +70 -0
  7. data/lib/zillabyte/api.rb +15 -2
  8. data/lib/zillabyte/auth.rb +43 -16
  9. data/lib/zillabyte/cli/#logs.rb# +12 -0
  10. data/lib/zillabyte/cli/#repl.rb# +43 -0
  11. data/lib/zillabyte/cli/apps.rb +52 -893
  12. data/lib/zillabyte/cli/auth.rb +3 -8
  13. data/lib/zillabyte/cli/base.rb +28 -7
  14. data/lib/zillabyte/cli/components.rb +245 -0
  15. data/lib/zillabyte/cli/flows.rb +549 -0
  16. data/lib/zillabyte/cli/git.rb +38 -0
  17. data/lib/zillabyte/cli/help.rb +11 -4
  18. data/lib/zillabyte/cli/keys.rb +177 -0
  19. data/lib/zillabyte/cli/query.rb +0 -1
  20. data/lib/zillabyte/cli/relations.rb +2 -1
  21. data/lib/zillabyte/cli/templates/{js → apps/js}/simple_function.js +0 -0
  22. data/lib/zillabyte/cli/templates/{js → apps/js}/zillabyte.conf.yaml +0 -0
  23. data/lib/zillabyte/cli/templates/apps/python/app.py +17 -0
  24. data/lib/zillabyte/cli/templates/{python → apps/python}/requirements.txt +0 -0
  25. data/lib/zillabyte/cli/templates/{python → apps/python}/zillabyte.conf.yaml +1 -1
  26. data/lib/zillabyte/cli/templates/{ruby → apps/ruby}/Gemfile +0 -0
  27. data/lib/zillabyte/cli/templates/{ruby → apps/ruby}/app.rb +1 -1
  28. data/lib/zillabyte/cli/templates/{ruby → apps/ruby}/zillabyte.conf.yaml +0 -0
  29. data/lib/zillabyte/cli/templates/python/{simple_function.py → #simple_function.py#} +3 -6
  30. data/lib/zillabyte/common/session.rb +3 -1
  31. data/lib/zillabyte/helpers.rb +64 -1
  32. data/lib/zillabyte/runner/app_runner.rb +226 -0
  33. data/lib/zillabyte/runner/component_operation.rb +529 -0
  34. data/lib/zillabyte/runner/component_runner.rb +244 -0
  35. data/lib/zillabyte/runner/multilang_operation.rb +1133 -0
  36. data/lib/zillabyte/runner/operation.rb +11 -0
  37. data/lib/zillabyte/runner.rb +6 -0
  38. data/lib/zillabyte-cli/version.rb +1 -1
  39. data/zillabyte-cli.gemspec +1 -0
  40. metadata +83 -52
@@ -9,9 +9,9 @@ class Zillabyte::Auth
9
9
 
10
10
  attr_accessor :credentials
11
11
 
12
- def login(auth_token)
13
- if valid_credentials?(auth_token)
14
- write_credentials(auth_token)
12
+ def login(email, auth_token)
13
+ if valid_credentials?(email, auth_token)
14
+ write_credentials(email, auth_token)
15
15
  end
16
16
  end
17
17
 
@@ -31,17 +31,21 @@ class Zillabyte::Auth
31
31
  def host
32
32
  default_host
33
33
  end
34
+
35
+ def git_host
36
+ ENV['ZILLABYTE_GIT_HOST'] || 'git.zillabyte.com'
37
+ end
34
38
 
35
- # def user # :nodoc:
36
- # get_credentials[0]
37
- # end
39
+ def user # :nodoc:
40
+ get_credentials[0]
41
+ end
38
42
 
39
43
  # def password # :nodoc:
40
44
  # get_credentials[1]
41
45
  # end
42
46
 
43
47
  def api_key
44
- get_credentials
48
+ get_credentials[1]
45
49
  end
46
50
 
47
51
  def get_credentials # :nodoc:
@@ -71,15 +75,25 @@ class Zillabyte::Auth
71
75
  end
72
76
  end
73
77
  end
78
+
79
+
80
+ def email?(s)
81
+ !!(s =~ /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i)
82
+ end
74
83
 
75
84
  def read_credentials
76
85
  if ENV['ZILLABYTE_API_KEY']
77
- ENV['ZILLABYTE_API_KEY']
86
+ ary = ENV['ZILLABYTE_API_KEY'].split(",")
87
+ if ary.size != 2 or !email?(ary[0])
88
+ abort("ZILLABYTE_API_KEY must be comma delimited: user@email.com,api_key")
89
+ end
90
+ ary
78
91
  else
79
92
  # read netrc credentials if they exist
80
93
  if netrc
81
- if netrc[host]
82
- netrc[host][1]
94
+ if netrc[host] && email?(netrc[host][0])
95
+ # Make sure we have the email address
96
+ netrc[host]
83
97
  else
84
98
  nil
85
99
  end
@@ -87,11 +101,12 @@ class Zillabyte::Auth
87
101
  end
88
102
  end
89
103
 
90
- def write_credentials(auth_token)
104
+ def write_credentials(email, auth_token)
91
105
  begin
92
106
  FileUtils.mkdir_p(File.dirname(netrc_path))
93
107
  FileUtils.touch(netrc_path)
94
- netrc[host] = ["login", auth_token]
108
+ FileUtils.chmod 0600, netrc_path
109
+ netrc[host] = [email, auth_token]
95
110
  netrc.save
96
111
  rescue Zillabyte::Auth::NetrcError => error
97
112
  display 'Netrc Read or Save Error'
@@ -135,7 +150,7 @@ class Zillabyte::Auth
135
150
  end
136
151
  end
137
152
 
138
- def valid_credentials?(auth_token)
153
+ def valid_credentials?(email, auth_token)
139
154
  api = Zillabyte::API.new(:api_key => auth_token, :session => self)
140
155
  response = api.request(
141
156
  :expects => 200,
@@ -143,7 +158,6 @@ class Zillabyte::Auth
143
158
  :path => "/cli/login"
144
159
  )
145
160
  response.body != "authentication error"
146
-
147
161
  end
148
162
 
149
163
  def ask_for_and_save_credentials
@@ -162,17 +176,30 @@ class Zillabyte::Auth
162
176
  msg = "Enter your Zillabyte credentials"
163
177
  msg += " (or press enter to continue as an anonymous user)." if current_command == "relations"
164
178
  puts msg
179
+
180
+ # Get the email address
181
+ print "Email: "
182
+ $stdout.flush()
183
+ email = ask
184
+ if email?(email) == false
185
+ display "invalid email"
186
+ exit 1
187
+ end
188
+
189
+ # Get the auth token
165
190
  print "Auth Token: "
166
191
  $stdout.flush()
167
192
  auth_token = ask
168
193
  print "\n"
194
+
169
195
  if current_command == "relations" and auth_token == ""
170
196
  display "No auth token provided, continuing as anonymous user. Note that you will only be shown publicly available listings."
171
197
  else
172
- if not valid_credentials?(auth_token)
198
+ if not valid_credentials?(email, auth_token)
173
199
  raise Zillabyte::Auth::InvalidCredentialsException
174
200
  else
175
- write_credentials(auth_token)
201
+ # Success...
202
+ write_credentials(email, auth_token)
176
203
  end
177
204
  end
178
205
  rescue Zillabyte::Auth::InvalidCredentialsException => e
@@ -0,0 +1,12 @@
1
+ require "zillabyte/cli/base"
2
+
3
+ # manage custom logs
4
+ #
5
+ class Zillabyte::Command::Logs < Zillabyte::Command::Base
6
+
7
+
8
+
9
+
10
+
11
+
12
+ end
@@ -0,0 +1,43 @@
1
+ require "zillabyte/cli/base"
2
+ require 'readline'
3
+ # REPL console for zillabyte commands
4
+ #
5
+ class Zillabyte::Command::Repl < Zillabyte::Command::Base
6
+
7
+ # repl
8
+ #
9
+ # start a console session for zillabyte
10
+ # --quiet # HIDDEN
11
+ # --history HISTORY# HIDDEN hack to allow history for readline
12
+ def index
13
+ if !options[:quiet]
14
+ v = `zillabyte version`
15
+ display "\n#{v}Type q,exit or Ctrl+D to quit\n\n"
16
+ end
17
+ server = `echo $ZILLABYTE_API_HOST` || ""
18
+ prompt = ""
19
+ if server && server.chomp.length > 0
20
+ prompt = "#{server.chomp} "
21
+ end
22
+ prompt += "zillabyte $ "
23
+ if options[:history]
24
+ #p options[:history]
25
+ history = JSON.parse(options[:history])
26
+ history.last(50).each do |his|
27
+ # TODO: Handle single quotes ??
28
+ Readline::HISTORY << his
29
+ end
30
+ end
31
+ # TODO: Add tab completion for basic commands, app/relation names etc.
32
+ while cmd = Readline.readline(prompt, true)
33
+ if cmd && cmd.length > 0
34
+ if cmd.downcase == "exit" || cmd.downcase == "q"
35
+ display "" # TODO Make Ctrl+D print a newline too
36
+ return
37
+ else
38
+ exec "zillabyte #{cmd}; zillabyte repl --quiet --history '#{Readline::HISTORY.to_a.to_json}'"
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end