cloudapp-cli 1.0.0.beta.6 → 1.0.0.beta.7
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +6 -35
- data/README.md +24 -13
- data/Rakefile +0 -14
- data/bin/cloudapp +117 -194
- data/cloudapp-cli.gemspec +5 -17
- data/lib/cloudapp/cli.rb +1 -4
- metadata +10 -94
- data/CHANGELOG.md +0 -11
- data/lib/cloudapp/cli/config.rb +0 -41
- data/spec/cloudapp/cli/config_spec.rb +0 -62
- data/spec/helper.rb +0 -4
data/Gemfile.lock
CHANGED
@@ -1,36 +1,23 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cloudapp-cli (1.0.0.beta.
|
5
|
-
|
6
|
-
|
7
|
-
ffi-ncurses
|
8
|
-
highline
|
9
|
-
ruby-termios
|
4
|
+
cloudapp-cli (1.0.0.beta.7)
|
5
|
+
cloudapp (~> 2.0.0.beta.4)
|
6
|
+
netrc (~> 0.7.7)
|
10
7
|
|
11
8
|
GEM
|
12
9
|
remote: http://rubygems.org/
|
13
10
|
specs:
|
14
11
|
addressable (2.2.8)
|
15
|
-
|
16
|
-
|
17
|
-
leadlight
|
12
|
+
cloudapp (2.0.0.beta.4)
|
13
|
+
leadlight (~> 0.0.7)
|
18
14
|
typhoeus (~> 0.3.3)
|
19
|
-
diff-lcs (1.1.3)
|
20
15
|
fail-fast (1.0.0)
|
21
16
|
faraday (0.8.1)
|
22
17
|
multipart-post (~> 1.1)
|
23
18
|
fattr (2.2.1)
|
24
|
-
ffi (1.1.5)
|
25
|
-
ffi-locale (1.0.1)
|
26
|
-
ffi (>= 1.0.9)
|
27
|
-
ffi-ncurses (0.4.0)
|
28
|
-
ffi (>= 1.0.9)
|
29
|
-
ffi-locale (>= 1.0.0)
|
30
|
-
highline (1.6.13)
|
31
19
|
hookr (1.1.1)
|
32
20
|
fail-fast (= 1.0.0)
|
33
|
-
hpricot (0.8.6)
|
34
21
|
leadlight (0.0.7)
|
35
22
|
addressable (~> 2.2.0)
|
36
23
|
faraday (= 0.8.1)
|
@@ -43,22 +30,8 @@ GEM
|
|
43
30
|
mime-types (1.19)
|
44
31
|
multi_json (1.0.4)
|
45
32
|
multipart-post (1.1.5)
|
46
|
-
|
33
|
+
netrc (0.7.7)
|
47
34
|
rake (0.9.2.2)
|
48
|
-
rdiscount (1.6.8)
|
49
|
-
ronn (0.7.3)
|
50
|
-
hpricot (>= 0.8.2)
|
51
|
-
mustache (>= 0.7.0)
|
52
|
-
rdiscount (>= 1.5.8)
|
53
|
-
rspec (2.11.0)
|
54
|
-
rspec-core (~> 2.11.0)
|
55
|
-
rspec-expectations (~> 2.11.0)
|
56
|
-
rspec-mocks (~> 2.11.0)
|
57
|
-
rspec-core (2.11.1)
|
58
|
-
rspec-expectations (2.11.2)
|
59
|
-
diff-lcs (~> 1.1.3)
|
60
|
-
rspec-mocks (2.11.2)
|
61
|
-
ruby-termios (0.9.6)
|
62
35
|
typhoeus (0.3.3)
|
63
36
|
mime-types
|
64
37
|
|
@@ -68,5 +41,3 @@ PLATFORMS
|
|
68
41
|
DEPENDENCIES
|
69
42
|
cloudapp-cli!
|
70
43
|
rake
|
71
|
-
ronn
|
72
|
-
rspec
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# CloudApp CLI
|
2
2
|
|
3
|
-
Experience all the pleasures of sharing with [CloudApp][] from your terminal
|
4
|
-
using a gorgeous and cutting-edge ncurses text user interface.
|
3
|
+
Experience all the pleasures of sharing with [CloudApp][] from your terminal.
|
5
4
|
|
6
5
|
[cloudapp]: http://getcloudapp.com
|
7
6
|
|
@@ -14,24 +13,36 @@ using a gorgeous and cutting-edge ncurses text user interface.
|
|
14
13
|
## Getting Started
|
15
14
|
|
16
15
|
``` bash
|
17
|
-
gem install cloudapp
|
18
|
-
cloudapp
|
16
|
+
$ gem install cloudapp-cli
|
17
|
+
$ cloudapp upload screenshot.png
|
18
|
+
$ cloudapp bookmark http://getcloudapp.com
|
19
19
|
```
|
20
20
|
|
21
|
-
##
|
21
|
+
## Commands
|
22
22
|
|
23
|
-
|
24
|
-
input from other Unix programs would be ideal.
|
23
|
+
### cloudapp upload
|
25
24
|
|
26
|
-
|
25
|
+
``` bash
|
26
|
+
$ cloudapp upload screenshot.png
|
27
|
+
http://cl.ly/abc123
|
28
|
+
```
|
27
29
|
|
28
|
-
|
29
|
-
- Bookmark several links: `cloudapp bookmark http://douglasadams.com http://zombo.com`
|
30
|
-
- Share a file: `cloudapp upload screenshot.png`
|
31
|
-
- Share several files: `cloudapp upload *.png`
|
30
|
+
### cloudapp bookmark
|
32
31
|
|
33
|
-
|
32
|
+
``` bash
|
33
|
+
$ cloudapp bookmark http://getcloudapp.com
|
34
|
+
http://cl.ly/abc123
|
35
|
+
```
|
34
36
|
|
37
|
+
## Wish List
|
38
|
+
|
39
|
+
A few simple commands to allow scripting and input from other Unix programs
|
40
|
+
would be ideal.
|
41
|
+
|
42
|
+
### Phase: Next
|
43
|
+
|
44
|
+
- Share several files: `cloudapp upload *.png`
|
45
|
+
- Bookmark several links: `cloudapp bookmark http://douglasadams.com http://zombo.com`
|
35
46
|
- Handle bookmarks from STDIN: `pbpaste | cloudapp bookmark`
|
36
47
|
- Handle files from STDIN: `find *.png | cloudapp upload`
|
37
48
|
- Download a drop: `cloudapp download http://cl.ly/abc123`
|
data/Rakefile
CHANGED
@@ -41,20 +41,6 @@ def replace_header(head, header_name)
|
|
41
41
|
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
42
42
|
end
|
43
43
|
|
44
|
-
#############################################################################
|
45
|
-
#
|
46
|
-
# Standard tasks
|
47
|
-
#
|
48
|
-
#############################################################################
|
49
|
-
|
50
|
-
require 'rspec'
|
51
|
-
require 'rspec/core/rake_task'
|
52
|
-
|
53
|
-
desc "Run all specs"
|
54
|
-
task RSpec::Core::RakeTask.new('spec')
|
55
|
-
|
56
|
-
task :default => "spec"
|
57
|
-
|
58
44
|
#############################################################################
|
59
45
|
#
|
60
46
|
# Custom tasks (add your own tasks here)
|
data/bin/cloudapp
CHANGED
@@ -1,230 +1,153 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require 'ffi-ncurses'
|
8
|
-
|
9
|
-
include FFI::NCurses
|
3
|
+
# cloudapp file /path/to/file.png
|
4
|
+
# cloudapp bookmark http://google.com
|
5
|
+
# cloudapp file /path/to/file.png --private --name=File
|
6
|
+
# > http://cl.ly/abc123
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
def account
|
16
|
-
CloudApp::Account.using_token config.token
|
17
|
-
end
|
18
|
-
|
19
|
-
def require_credentials
|
20
|
-
return unless config.token.nil?
|
8
|
+
require 'cloudapp'
|
9
|
+
require 'uri'
|
21
10
|
|
22
|
-
|
11
|
+
# Taken from the heroku gem.
|
12
|
+
# https://github.com/heroku/heroku/blob/master/lib/heroku/auth.rb
|
13
|
+
require 'netrc'
|
23
14
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
15
|
+
class Credentials
|
16
|
+
def self.token
|
17
|
+
new.credentials.last
|
18
|
+
end
|
28
19
|
|
29
|
-
def
|
30
|
-
|
31
|
-
|
32
|
-
|
20
|
+
def netrc_path
|
21
|
+
default = Netrc.default_path
|
22
|
+
encrypted = default + ".gpg"
|
23
|
+
if File.exists?(encrypted)
|
24
|
+
encrypted
|
25
|
+
else
|
26
|
+
default
|
27
|
+
end
|
33
28
|
end
|
34
|
-
end
|
35
29
|
|
30
|
+
def netrc
|
31
|
+
@netrc ||= begin
|
32
|
+
File.exists?(netrc_path) && Netrc.read(netrc_path)
|
33
|
+
rescue => error
|
34
|
+
if error.message =~ /^Permission bits for/
|
35
|
+
perm = File.stat(netrc_path).mode & 0777
|
36
|
+
abort("Permissions #{perm} for '#{netrc_path}' are too open. You should run `chmod 0600 #{netrc_path}` so that your credentials are NOT accessible by others.")
|
37
|
+
else
|
38
|
+
raise error
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
36
42
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
height = drops.size * 3
|
42
|
-
col = (COLS() - width) / 2 - 1
|
43
|
-
row = (LINES() - height) / 2 - 1
|
43
|
+
def credentials=(credentials) @credentials = credentials end
|
44
|
+
def credentials()
|
45
|
+
(@credentials ||= read_credentials) || ask_for_and_save_credentials
|
46
|
+
end
|
44
47
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
def read_credentials
|
49
|
+
# TODO: convert legacy credentials to netrc
|
50
|
+
# if File.exists?(legacy_credentials_path)
|
51
|
+
# @api, @client = nil
|
52
|
+
# @credentials = File.read(legacy_credentials_path).split("\n")
|
53
|
+
# write_credentials
|
54
|
+
# FileUtils.rm_f(legacy_credentials_path)
|
55
|
+
# end
|
56
|
+
|
57
|
+
# read netrc credentials if they exist
|
58
|
+
self.credentials = netrc['api.getcloudapp.com'] if netrc
|
59
|
+
end
|
48
60
|
|
49
|
-
|
61
|
+
def write_credentials
|
62
|
+
FileUtils.mkdir_p(File.dirname(netrc_path))
|
63
|
+
FileUtils.touch(netrc_path)
|
64
|
+
FileUtils.chmod(0600, netrc_path)
|
65
|
+
netrc['api.getcloudapp.com'] = credentials
|
66
|
+
netrc.save
|
67
|
+
end
|
50
68
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
69
|
+
def delete_credentials
|
70
|
+
# TODO: delete legacy credentials
|
71
|
+
# if File.exists?(legacy_credentials_path)
|
72
|
+
# FileUtils.rm_f(legacy_credentials_path)
|
73
|
+
# end
|
74
|
+
if netrc
|
75
|
+
netrc.delete('api.getcloudapp.com')
|
76
|
+
netrc.save
|
56
77
|
end
|
57
|
-
|
78
|
+
self.credentials = nil
|
58
79
|
end
|
59
|
-
wrefresh win
|
60
80
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
81
|
+
def ask_for_and_save_credentials
|
82
|
+
self.credentials = ask_for_credentials
|
83
|
+
write_credentials
|
84
|
+
credentials
|
85
|
+
end
|
65
86
|
|
66
|
-
|
67
|
-
|
87
|
+
def ask_for_credentials
|
88
|
+
puts "Enter your CloudApp credentials."
|
68
89
|
|
69
|
-
|
70
|
-
|
71
|
-
[ drop.name, details ]
|
72
|
-
end
|
90
|
+
print "Email: "
|
91
|
+
email = ask
|
73
92
|
|
74
|
-
|
75
|
-
|
76
|
-
selected_drop = [ 0,
|
77
|
-
[ drops.size - 1, selected_drop ].min
|
78
|
-
].max
|
93
|
+
print "Password (typing will be hidden): "
|
94
|
+
password = ask_for_password
|
79
95
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
96
|
+
token = CloudApp::Service.token_for_account email, password
|
97
|
+
unless token
|
98
|
+
puts "Incorrect email or password."
|
99
|
+
puts
|
100
|
+
delete_credentials
|
101
|
+
return ask_for_credentials
|
102
|
+
end
|
86
103
|
|
87
|
-
|
88
|
-
diff = (Time.now - date.to_time).to_i
|
89
|
-
case diff
|
90
|
-
when 0 then 'just now'
|
91
|
-
when 1 then 'a second ago'
|
92
|
-
when 2..59 then diff.to_s+' seconds ago'
|
93
|
-
when 60..119 then 'a minute ago' #120 = 2 minutes
|
94
|
-
when 120..3540 then (diff/60).to_i.to_s+' minutes ago'
|
95
|
-
when 3541..7100 then 'an hour ago' # 3600 = 1 hour
|
96
|
-
when 7101..82800 then ((diff+99)/3600).to_i.to_s+' hours ago'
|
97
|
-
when 82801..172000 then 'a day ago' # 86400 = 1 day
|
98
|
-
when 172001..518400 then ((diff+800)/(60*60*24)).to_i.to_s+' days ago'
|
99
|
-
when 518400..1036800 then 'a week ago'
|
100
|
-
else ((diff+180000)/(60*60*24*7)).to_i.to_s+' weeks ago'
|
104
|
+
[ email, token ]
|
101
105
|
end
|
102
|
-
end
|
103
106
|
|
104
|
-
def
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
row = (rows - height) / 2
|
112
|
-
|
113
|
-
if parent
|
114
|
-
frame = derwin parent, height, width, row, col
|
115
|
-
else
|
116
|
-
frame = newwin height, width, row, col
|
107
|
+
def ask() $stdin.gets.to_s.strip end
|
108
|
+
def ask_for_password
|
109
|
+
echo_off
|
110
|
+
password = ask
|
111
|
+
puts
|
112
|
+
echo_on
|
113
|
+
return password
|
117
114
|
end
|
118
115
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
wmove win, 0, 0
|
124
|
-
waddstr win, text
|
125
|
-
|
126
|
-
wrefresh frame
|
127
|
-
wrefresh win
|
128
|
-
|
129
|
-
if block_given?
|
116
|
+
def echo_on() with_tty { system "stty echo" } end
|
117
|
+
def echo_off() with_tty { system "stty -echo" } end
|
118
|
+
def with_tty(&block)
|
119
|
+
return unless $stdin.isatty
|
130
120
|
yield
|
131
|
-
|
132
|
-
|
133
|
-
flushinp
|
134
|
-
ungetch ch
|
121
|
+
rescue
|
122
|
+
# fails on windows
|
135
123
|
end
|
136
|
-
|
137
|
-
delwin win
|
138
|
-
delwin frame
|
139
124
|
end
|
140
125
|
|
141
|
-
def
|
142
|
-
|
143
|
-
j/k = Move down/up
|
144
|
-
d/p = Next/previous page
|
145
|
-
|
146
|
-
c = Copy share link
|
147
|
-
C = Copy embed link
|
148
|
-
D = Copy download link
|
149
|
-
t = Copy thumbnail link
|
150
|
-
HELP
|
151
|
-
popup_window win, help
|
152
|
-
ch = wgetch win
|
153
|
-
ungetch ch unless ch == ??.ord
|
126
|
+
def service
|
127
|
+
CloudApp::Service.using_token Credentials.token
|
154
128
|
end
|
155
129
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
drops = nil
|
164
|
-
popup_window nil, 'Loading...' do
|
165
|
-
drops = account.drops limit: 10
|
130
|
+
case ARGV.shift
|
131
|
+
when 'bookmark'
|
132
|
+
raise ArgumentError, 'URL missing' if ARGV.empty?
|
133
|
+
url = ARGV.shift
|
134
|
+
unless url =~ URI.regexp
|
135
|
+
raise ArgumentError, "#{ url } doesn't look like a valid URL"
|
166
136
|
end
|
167
137
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
while c = wgetch(win)
|
172
|
-
case c
|
173
|
-
when ?q.ord
|
174
|
-
break
|
175
|
-
when ??.ord
|
176
|
-
show_help win
|
177
|
-
|
178
|
-
when ?j.ord, KEY_DOWN
|
179
|
-
selected_drop += 1
|
180
|
-
when ?k.ord, KEY_UP
|
181
|
-
selected_drop -= 1
|
182
|
-
|
183
|
-
when ?d.ord
|
184
|
-
next unless drops.link('next') { nil }
|
185
|
-
popup_window win, 'Loading...' do
|
186
|
-
drops = account.drops href: drops.link('next').href
|
187
|
-
end
|
188
|
-
wclear wrap
|
189
|
-
wrefresh wrap
|
190
|
-
when ?p.ord
|
191
|
-
next unless drops.link('previous') { nil }
|
192
|
-
popup_window win, 'Loading...' do
|
193
|
-
drops = account.drops href: drops.link('previous').href
|
194
|
-
end
|
195
|
-
wclear wrap
|
196
|
-
wrefresh wrap
|
197
|
-
|
198
|
-
when ?c.ord, KEY_RETURN
|
199
|
-
link = drops[selected_drop].share_url
|
200
|
-
Clipboard.copy link
|
201
|
-
popup_window win, 'Copied share link.'
|
202
|
-
when ?C.ord
|
203
|
-
link = drops[selected_drop].embed_url
|
204
|
-
Clipboard.copy link
|
205
|
-
popup_window win, 'Copied embed link.'
|
206
|
-
when ?D.ord
|
207
|
-
link = drops[selected_drop].download_url
|
208
|
-
Clipboard.copy link
|
209
|
-
popup_window win, 'Copied download link.'
|
210
|
-
when ?t.ord
|
211
|
-
link = drops[selected_drop].thumbnail_url
|
212
|
-
Clipboard.copy link
|
213
|
-
popup_window win, 'Copied thumbnail link.'
|
214
|
-
end
|
138
|
+
bookmark = service.bookmark(url).first
|
139
|
+
puts bookmark.share_url
|
215
140
|
|
216
|
-
|
217
|
-
|
218
|
-
win, wrap = draw_drops_window drops
|
219
|
-
selected_drop = select_drop win, selected_drop, drops
|
220
|
-
end
|
141
|
+
when 'upload'
|
142
|
+
raise ArgumentError, 'File missing' if ARGV.empty?
|
221
143
|
|
222
|
-
|
223
|
-
|
144
|
+
file = service.upload(ARGF.file).first
|
145
|
+
puts file.share_url
|
224
146
|
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
147
|
+
else
|
148
|
+
puts <<EOS
|
149
|
+
Usage:
|
150
|
+
cloudapp bookmark http://getcloudapp.com
|
151
|
+
cloudapp upload screenshot.png
|
152
|
+
EOS
|
230
153
|
end
|
data/cloudapp-cli.gemspec
CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'cloudapp-cli'
|
16
|
-
s.version = '1.0.0.beta.
|
17
|
-
s.date = '2012-
|
16
|
+
s.version = '1.0.0.beta.7'
|
17
|
+
s.date = '2012-10-06'
|
18
18
|
s.rubyforge_project = 'cloudapp-cli'
|
19
19
|
|
20
20
|
## Make sure your summary is short. The description may be as long
|
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
## a custom homepage, consider using your GitHub URL or the like.
|
28
28
|
s.authors = ["Larry Marburger"]
|
29
29
|
s.email = 'larry@marburger.cc'
|
30
|
-
s.homepage = 'https://github.com/cloudapp/
|
30
|
+
s.homepage = 'https://github.com/cloudapp/cli'
|
31
31
|
|
32
32
|
## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
|
33
33
|
## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
|
@@ -43,27 +43,18 @@ Gem::Specification.new do |s|
|
|
43
43
|
|
44
44
|
## List your runtime dependencies here. Runtime dependencies are those
|
45
45
|
## that are needed for an end user to actually USE your code.
|
46
|
-
s.add_dependency 'cloudapp', '~> 2.0.0.beta.
|
47
|
-
s.add_dependency '
|
48
|
-
s.add_dependency 'ffi-ncurses'
|
49
|
-
s.add_dependency 'highline'
|
50
|
-
|
51
|
-
# Needed for Highline echo=false support as per
|
52
|
-
# https://github.com/JEG2/highline/issues/39
|
53
|
-
s.add_dependency 'ruby-termios'
|
46
|
+
s.add_dependency 'cloudapp', '~> 2.0.0.beta.4'
|
47
|
+
s.add_dependency 'netrc', '~> 0.7.7'
|
54
48
|
|
55
49
|
## List your development dependencies here. Development dependencies are
|
56
50
|
## those that are only needed during development
|
57
51
|
s.add_development_dependency 'rake'
|
58
|
-
s.add_development_dependency 'ronn'
|
59
|
-
s.add_development_dependency 'rspec'
|
60
52
|
|
61
53
|
## Leave this section as-is. It will be automatically generated from the
|
62
54
|
## contents of your Git repository via the gemspec task. DO NOT REMOVE
|
63
55
|
## THE MANIFEST COMMENTS, they are used as delimiters by the task.
|
64
56
|
# = MANIFEST =
|
65
57
|
s.files = %w[
|
66
|
-
CHANGELOG.md
|
67
58
|
Gemfile
|
68
59
|
Gemfile.lock
|
69
60
|
MIT-LICENSE
|
@@ -72,9 +63,6 @@ Gem::Specification.new do |s|
|
|
72
63
|
bin/cloudapp
|
73
64
|
cloudapp-cli.gemspec
|
74
65
|
lib/cloudapp/cli.rb
|
75
|
-
lib/cloudapp/cli/config.rb
|
76
|
-
spec/cloudapp/cli/config_spec.rb
|
77
|
-
spec/helper.rb
|
78
66
|
]
|
79
67
|
# = MANIFEST =
|
80
68
|
|
data/lib/cloudapp/cli.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudapp-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.beta.
|
4
|
+
version: 1.0.0.beta.7
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cloudapp
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.0.0.beta.
|
21
|
+
version: 2.0.0.beta.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,71 +26,23 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 2.0.0.beta.
|
29
|
+
version: 2.0.0.beta.4
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: netrc
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: ffi-ncurses
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: highline
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
type: :runtime
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: ruby-termios
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
35
|
+
- - ~>
|
84
36
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
37
|
+
version: 0.7.7
|
86
38
|
type: :runtime
|
87
39
|
prerelease: false
|
88
40
|
version_requirements: !ruby/object:Gem::Requirement
|
89
41
|
none: false
|
90
42
|
requirements:
|
91
|
-
- -
|
43
|
+
- - ~>
|
92
44
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
45
|
+
version: 0.7.7
|
94
46
|
- !ruby/object:Gem::Dependency
|
95
47
|
name: rake
|
96
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,38 +59,6 @@ dependencies:
|
|
107
59
|
- - ! '>='
|
108
60
|
- !ruby/object:Gem::Version
|
109
61
|
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: ronn
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: rspec
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ! '>='
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
134
|
-
type: :development
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
62
|
description: Experience all the pleasures of sharing with CloudApp now in your terminal.
|
143
63
|
email: larry@marburger.cc
|
144
64
|
executables:
|
@@ -148,7 +68,6 @@ extra_rdoc_files:
|
|
148
68
|
- README.md
|
149
69
|
- MIT-LICENSE
|
150
70
|
files:
|
151
|
-
- CHANGELOG.md
|
152
71
|
- Gemfile
|
153
72
|
- Gemfile.lock
|
154
73
|
- MIT-LICENSE
|
@@ -157,10 +76,7 @@ files:
|
|
157
76
|
- bin/cloudapp
|
158
77
|
- cloudapp-cli.gemspec
|
159
78
|
- lib/cloudapp/cli.rb
|
160
|
-
|
161
|
-
- spec/cloudapp/cli/config_spec.rb
|
162
|
-
- spec/helper.rb
|
163
|
-
homepage: https://github.com/cloudapp/cloudapp-cli
|
79
|
+
homepage: https://github.com/cloudapp/cli
|
164
80
|
licenses: []
|
165
81
|
post_install_message:
|
166
82
|
rdoc_options:
|
data/CHANGELOG.md
DELETED
data/lib/cloudapp/cli/config.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
require 'singleton'
|
3
|
-
require 'yaml'
|
4
|
-
|
5
|
-
module CloudApp
|
6
|
-
module CLI
|
7
|
-
class Config
|
8
|
-
def initialize(path = File.expand_path('~/.cloudapprc'))
|
9
|
-
@path = path
|
10
|
-
@config = read_config
|
11
|
-
end
|
12
|
-
|
13
|
-
def token
|
14
|
-
@config[:token]
|
15
|
-
end
|
16
|
-
|
17
|
-
def token=(token)
|
18
|
-
if token
|
19
|
-
@config[:token] = token
|
20
|
-
else
|
21
|
-
@config.delete :token
|
22
|
-
end
|
23
|
-
|
24
|
-
write_config
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def read_config
|
30
|
-
return {} unless File.exist?(@path)
|
31
|
-
File.open(@path) {|file| YAML.load(file) }
|
32
|
-
end
|
33
|
-
|
34
|
-
def write_config
|
35
|
-
File.open(@path, 'w', 0600) {|file|
|
36
|
-
YAML.dump @config, file
|
37
|
-
}
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
require 'tempfile'
|
3
|
-
|
4
|
-
require 'cloudapp/cli/config'
|
5
|
-
|
6
|
-
describe CloudApp::CLI::Config do
|
7
|
-
let(:config) { {} }
|
8
|
-
let(:content) { YAML.dump(config) }
|
9
|
-
let(:path) { config_file.path }
|
10
|
-
let(:config_file) {
|
11
|
-
Tempfile.new('cloudapprc', '.').tap do |file|
|
12
|
-
file << content
|
13
|
-
file.flush
|
14
|
-
file.close
|
15
|
-
end
|
16
|
-
}
|
17
|
-
|
18
|
-
after do config_file.unlink end
|
19
|
-
|
20
|
-
describe '#new' do
|
21
|
-
subject { CloudApp::CLI::Config.new path }
|
22
|
-
|
23
|
-
describe 'an existing config file' do
|
24
|
-
let(:config) {{ token: 'token' }}
|
25
|
-
|
26
|
-
it 'reads the content' do
|
27
|
-
subject.token.should eq(config[:token])
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'updates a key' do
|
31
|
-
new_token = 'new token'
|
32
|
-
subject.token = new_token
|
33
|
-
expected = YAML.dump token: new_token
|
34
|
-
|
35
|
-
content = File.open(path) {|file| file.read }
|
36
|
-
content.should eq(expected)
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'clears a key' do
|
40
|
-
subject.token = nil
|
41
|
-
expected = YAML.dump({})
|
42
|
-
|
43
|
-
content = File.open(path) {|file| file.read }
|
44
|
-
content.should eq(expected)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe 'an empty config file' do
|
49
|
-
it 'returns nil' do
|
50
|
-
subject.token.should be_nil
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe 'a nonexistent config file' do
|
55
|
-
let(:path) { 'nonexistent' }
|
56
|
-
|
57
|
-
it 'returns nil' do
|
58
|
-
subject.token.should be_nil
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
data/spec/helper.rb
DELETED