zooline 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest +14 -0
- data/README.markdown +5 -0
- data/Rakefile +16 -0
- data/bin/zooline +8 -0
- data/lib/zooline/bookmark.rb +49 -0
- data/lib/zooline/command.rb +182 -0
- data/lib/zooline/credentials.rb +37 -0
- data/lib/zooline/list.rb +5 -0
- data/lib/zooline/output.rb +28 -0
- data/lib/zooline/plateform.rb +52 -0
- data/lib/zooline/session.rb +25 -0
- data/lib/zooline/storage.rb +102 -0
- data/lib/zooline.rb +31 -0
- data/licence.markdown +8 -0
- data/zooline.gemspec +45 -0
- data.tar.gz.sig +2 -0
- metadata +173 -0
- metadata.gz.sig +1 -0
data/Manifest
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
README.markdown
|
2
|
+
Rakefile
|
3
|
+
bin/zooline
|
4
|
+
lib/zooline.rb
|
5
|
+
lib/zooline/bookmark.rb
|
6
|
+
lib/zooline/command.rb
|
7
|
+
lib/zooline/credentials.rb
|
8
|
+
lib/zooline/list.rb
|
9
|
+
lib/zooline/output.rb
|
10
|
+
lib/zooline/plateform.rb
|
11
|
+
lib/zooline/session.rb
|
12
|
+
lib/zooline/storage.rb
|
13
|
+
licence.markdown
|
14
|
+
Manifest
|
data/README.markdown
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('zooline', '0.0.2') do |p|
|
6
|
+
p.description = "Command line tool for zootool"
|
7
|
+
p.url = "http://github.com/clodeindustrie/zooline"
|
8
|
+
p.author = "Jeremy speissegger"
|
9
|
+
p.email = "clodeindustrie@gmail.com"
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
|
+
p.runtime_dependencies = [ 'patron' ]
|
12
|
+
p.runtime_dependencies << 'yajl-ruby'
|
13
|
+
p.runtime_dependencies << 'terminal-table'
|
14
|
+
p.runtime_dependencies << 'rainbow'
|
15
|
+
end
|
16
|
+
|
data/bin/zooline
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
class Bookmark
|
2
|
+
|
3
|
+
# Public: creates a new List instance in-memory.
|
4
|
+
#
|
5
|
+
# name - The name of the List. Fails if already used.
|
6
|
+
#
|
7
|
+
# Returns the unpersisted List instance.
|
8
|
+
def initialize(bookmark)
|
9
|
+
@title = bookmark['title']
|
10
|
+
@url = bookmark['url']
|
11
|
+
@uid = bookmark['uid']
|
12
|
+
@added = bookmark['added']
|
13
|
+
@type = bookmark['type']
|
14
|
+
@views = bookmark['views']
|
15
|
+
@likes = bookmark['likes']
|
16
|
+
@permalink = bookmark['permalink']
|
17
|
+
@tinyurl = bookmark['tinyurl']
|
18
|
+
@thumbnail = bookmark['thumbnail']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns a Storage instance.
|
22
|
+
def self.storage
|
23
|
+
Zooline.storage
|
24
|
+
end
|
25
|
+
|
26
|
+
# Public: lets you access the array of items contained within this List.
|
27
|
+
#
|
28
|
+
# Returns an Array of Items.
|
29
|
+
attr_accessor :title, :added, :url, :uid, :type, :views, :likes, :permalink, :tinyurl, :thumbnail
|
30
|
+
|
31
|
+
def to_hash
|
32
|
+
{ :title => @title, :added => @added, :title => @title, :content => getContent }
|
33
|
+
end
|
34
|
+
|
35
|
+
def getContent
|
36
|
+
{
|
37
|
+
:title => @title,
|
38
|
+
:url => @url,
|
39
|
+
:uid => @uid,
|
40
|
+
:added => @added,
|
41
|
+
:type => @type,
|
42
|
+
:views => @views,
|
43
|
+
:likes => @likes,
|
44
|
+
:permalink => @permalink,
|
45
|
+
:tinyurl => @tinyurl,
|
46
|
+
:thumbnail => @thumbnail
|
47
|
+
}
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,182 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Zooline
|
4
|
+
class Command
|
5
|
+
class << self
|
6
|
+
|
7
|
+
# Public: accesses the in-memory JSON representation.
|
8
|
+
#
|
9
|
+
# Returns a Storage instance.
|
10
|
+
def storage
|
11
|
+
Zooline.storage
|
12
|
+
end
|
13
|
+
|
14
|
+
# Public: executes a command.
|
15
|
+
#
|
16
|
+
# args - The actual commands to operate on. Can be as few as zero
|
17
|
+
# arguments or as many as three.
|
18
|
+
def execute(*args)
|
19
|
+
@sess = Session.new
|
20
|
+
command = args.shift
|
21
|
+
params = args
|
22
|
+
|
23
|
+
delegate(command, params)
|
24
|
+
end
|
25
|
+
|
26
|
+
def setCredentials
|
27
|
+
@cred = Credentials.new
|
28
|
+
|
29
|
+
#Set the creds in the session object
|
30
|
+
@sess.username = @cred.username
|
31
|
+
@sess.password = @cred.password
|
32
|
+
end
|
33
|
+
|
34
|
+
# Public: allows main access to most commands.
|
35
|
+
#
|
36
|
+
# Returns output based on method calls.
|
37
|
+
def delegate(command, params)
|
38
|
+
if command != 'set' && !Credentials.check?
|
39
|
+
Output::displayMessage 'You need to set up your credentials!'
|
40
|
+
return
|
41
|
+
end
|
42
|
+
|
43
|
+
return set(params) if command == 'set'
|
44
|
+
return help if command == 'help'
|
45
|
+
|
46
|
+
setCredentials
|
47
|
+
|
48
|
+
if command != 'sync' && !storage.check?
|
49
|
+
Output::displayMessage "Sync first, there is nothing in the file"
|
50
|
+
return
|
51
|
+
end
|
52
|
+
|
53
|
+
return sync if command == 'sync'
|
54
|
+
return get(params) if command == 'get'
|
55
|
+
return list(params) if command == 'list'
|
56
|
+
return wipeout if command == 'wipeout'
|
57
|
+
|
58
|
+
return help
|
59
|
+
end
|
60
|
+
|
61
|
+
#
|
62
|
+
# Private: Set the credentials
|
63
|
+
#
|
64
|
+
def set(params)
|
65
|
+
if Credentials.check?
|
66
|
+
Output::displayMessage "Credentials already set, use wipeout to reset them"
|
67
|
+
return
|
68
|
+
end
|
69
|
+
|
70
|
+
unless params.size != 2
|
71
|
+
c = Credentials.new(params.first, params.last)
|
72
|
+
c.save!
|
73
|
+
Output::displayMessage "Credentials set!"
|
74
|
+
else
|
75
|
+
Output::displayMessage "type your credentials: username password"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
#
|
80
|
+
# Sync all the bookmarks and save them in the fil Sync all the bookmarks and save them in the filee
|
81
|
+
#
|
82
|
+
def sync
|
83
|
+
result = Yajl::Parser.new.parse(@sess.get)
|
84
|
+
|
85
|
+
if result.class == Hash
|
86
|
+
Output::displayMessage result['msg']
|
87
|
+
end
|
88
|
+
|
89
|
+
@bookmarks = []
|
90
|
+
result.each do |bk|
|
91
|
+
@bookmarks << Bookmark.new(bk)
|
92
|
+
end
|
93
|
+
storage.bookmarks = @bookmarks
|
94
|
+
save!
|
95
|
+
Output::displayMessage "Bookmarks synced !"
|
96
|
+
end
|
97
|
+
|
98
|
+
def list(params)
|
99
|
+
if !params.first.nil? && params.first.match(/-[dti]/)
|
100
|
+
p = params.shift
|
101
|
+
order = {'t' => 'title', 'd' => 'date', 'i' => 'uid' }[p.slice(1,1)]
|
102
|
+
end
|
103
|
+
|
104
|
+
if params.first.nil?
|
105
|
+
n = 10
|
106
|
+
elsif params.first == "all"
|
107
|
+
n = storage.bookmarks(order).count
|
108
|
+
elsif params.first.match(/\d/)
|
109
|
+
n = params.first
|
110
|
+
end
|
111
|
+
|
112
|
+
bks = storage.bookmarks(order).slice(0,n.to_i)
|
113
|
+
Output::displayList bks
|
114
|
+
end
|
115
|
+
|
116
|
+
def get(params)
|
117
|
+
bks = []
|
118
|
+
if !params.empty?
|
119
|
+
if params.first.match(/-[a-z]*(c)[a-z]*/)
|
120
|
+
copy = true
|
121
|
+
end
|
122
|
+
|
123
|
+
if params.first.match(/-[a-z]*(i)[a-z]*/)
|
124
|
+
params.shift
|
125
|
+
bks << search_items_by_uid(params.first)
|
126
|
+
elsif params.first.match(/-[a-z]*(t)[a-z]*/)
|
127
|
+
params.shift
|
128
|
+
bks = search_items_by_title(params.first)
|
129
|
+
else
|
130
|
+
params.shift if copy
|
131
|
+
bks = search_items_by_title(params.first)
|
132
|
+
end
|
133
|
+
else
|
134
|
+
bks << storage.bookmarks.first
|
135
|
+
end
|
136
|
+
|
137
|
+
unless bks.first.nil?
|
138
|
+
if bks.count == 1
|
139
|
+
Output::displayItem bks.first
|
140
|
+
Platform.copy(bks.first.url)
|
141
|
+
else
|
142
|
+
Output::displayList bks
|
143
|
+
end
|
144
|
+
|
145
|
+
else
|
146
|
+
t = "No Bookmark found"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def search_items_by_uid(param)
|
151
|
+
storage.bookmarks.detect do |item|
|
152
|
+
item.uid == param
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
def search_items_by_title(params)
|
157
|
+
storage.bookmarks.select do |item|
|
158
|
+
item.title.match(/.*#{params.first}.*/i)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def save!
|
163
|
+
storage.save!
|
164
|
+
end
|
165
|
+
|
166
|
+
def help
|
167
|
+
text = %{
|
168
|
+
- Zooline: help ---------------------------------------------------
|
169
|
+
|
170
|
+
zooline Returns the last bookmark added
|
171
|
+
zooline help this help text
|
172
|
+
|
173
|
+
zooline list Returns a list of bookmark
|
174
|
+
zooline get show items for a list
|
175
|
+
}.gsub(/^ {8}/, '') # strip the first eight spaces of every line
|
176
|
+
|
177
|
+
Output::displayMessage text
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class Credentials
|
2
|
+
attr_accessor :username, :password
|
3
|
+
|
4
|
+
CRED_FILE = "#{ENV['HOME']}/.zoocred"
|
5
|
+
|
6
|
+
def initialize(username = nil, password = nil)
|
7
|
+
if !username.nil? && !password.nil?
|
8
|
+
@username = username
|
9
|
+
@password = password
|
10
|
+
else
|
11
|
+
open
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def save!
|
16
|
+
FileUtils.touch CRED_FILE
|
17
|
+
save = File.new(CRED_FILE, "w")
|
18
|
+
save.write([@username, Digest::SHA1.hexdigest(@password)].join(","))
|
19
|
+
save.close
|
20
|
+
end
|
21
|
+
|
22
|
+
def open
|
23
|
+
File.open(CRED_FILE, "r") do |reado|
|
24
|
+
content = reado.gets.split(",")
|
25
|
+
@username = content.first
|
26
|
+
@password = content.last
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def wipeout!
|
31
|
+
FileUtils.rm CRED_FILE
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.check?
|
35
|
+
File.exist? CRED_FILE
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Zooline
|
2
|
+
class Output
|
3
|
+
def self.displayList(list)
|
4
|
+
t = table( ['Uid', 'Added', 'Title', 'Url'] )
|
5
|
+
list.each do |bk|
|
6
|
+
t << [bk.uid, Time.at(bk.added.to_i).strftime('%d/%m/%Y'), bk.title.slice(0,19), bk.url.slice(0,19)]
|
7
|
+
end
|
8
|
+
displayMessage t
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.displayItem(item)
|
12
|
+
t = %{--------------------------------------------------------------------------------
|
13
|
+
Uid: #{item.uid} | added: #{item.added}
|
14
|
+
Title:
|
15
|
+
#{item.title}
|
16
|
+
URL:
|
17
|
+
#{item.url}
|
18
|
+
-------------------------------------------------------------------------------
|
19
|
+
}
|
20
|
+
displayMessage t
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.displayMessage(message)
|
24
|
+
puts message
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
# Platform is a centralized point to shell out platform specific functionality
|
4
|
+
# like clipboard access or commands to open URLs.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Clipboard is a centralized point to shell out to each individual platform's
|
8
|
+
# clipboard, pasteboard, or whatever they decide to call it.
|
9
|
+
#
|
10
|
+
module Zooline
|
11
|
+
class Platform
|
12
|
+
class << self
|
13
|
+
|
14
|
+
# Public: tests if currently running on darwin.
|
15
|
+
#
|
16
|
+
# Returns true if running on darwin (MacOS X), else false
|
17
|
+
def darwin?
|
18
|
+
!!(RUBY_PLATFORM =~ /darwin/)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Public: returns the command used to open a file or URL
|
22
|
+
# for the current platform.
|
23
|
+
#
|
24
|
+
# Currently only supports MacOS X and Linux with `xdg-open`.
|
25
|
+
#
|
26
|
+
# Returns a String with the bin
|
27
|
+
def open_command
|
28
|
+
darwin? ? 'open' : 'xdg-open'
|
29
|
+
end
|
30
|
+
|
31
|
+
# Public: opens a given Item's value in the browser. This
|
32
|
+
# method is designed to handle multiple platforms.
|
33
|
+
#
|
34
|
+
# Returns a String explaining what was done
|
35
|
+
def open(item)
|
36
|
+
`#{open_command} '#{item.url.gsub("\'","\\'")}'`
|
37
|
+
|
38
|
+
"Boom! We just opened #{item.value} for you."
|
39
|
+
end
|
40
|
+
|
41
|
+
# Public: copies a given Item's value to the clipboard. This method is
|
42
|
+
# designed to handle multiple platforms.
|
43
|
+
#
|
44
|
+
# Returns a String explaining what was done
|
45
|
+
def copy(item)
|
46
|
+
copy_command = darwin? ? "pbcopy" : "xclip -selection clipboard"
|
47
|
+
|
48
|
+
`echo '#{item.gsub("\'","\\'")}' | tr -d "\n" | #{copy_command}`
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Session
|
2
|
+
KEY = "061a7cdae8f28a5db3368eaf782db2c8"
|
3
|
+
BASEURL = "http://zootool.com/api"
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@sess = Patron::Session.new
|
7
|
+
@sess.timeout = 10
|
8
|
+
@sess.base_url = BASEURL
|
9
|
+
@sess.headers['User-Agent'] = 'Zooline/0.01'
|
10
|
+
@sess.enable_debug "/tmp/patron.debug"
|
11
|
+
@sess.auth_type = :digest
|
12
|
+
end
|
13
|
+
|
14
|
+
def username=(k)
|
15
|
+
@sess.username = k
|
16
|
+
end
|
17
|
+
|
18
|
+
def password=(k)
|
19
|
+
@sess.password = k
|
20
|
+
end
|
21
|
+
|
22
|
+
def get(offset = nil, limit = nil)
|
23
|
+
@sess.get("/users/items?username=#{@sess.username}&apikey=#{KEY}&login=true&offset=0&limit=1000").body
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
#
|
4
|
+
module Zooline
|
5
|
+
class Storage
|
6
|
+
|
7
|
+
JSON_FILE = "#{ENV['HOME']}/.zooline"
|
8
|
+
|
9
|
+
def check?
|
10
|
+
!(@bookmarks.nil? || @bookmarks.empty?)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Public: the path to the JSON file used by boom.
|
14
|
+
#
|
15
|
+
# Returns the String path of boom's JSON representation.
|
16
|
+
def json_file
|
17
|
+
JSON_FILE
|
18
|
+
end
|
19
|
+
|
20
|
+
# Public: initializes a Storage instance by loading in your persisted data.
|
21
|
+
#
|
22
|
+
# Returns the Storage instance.
|
23
|
+
def initialize
|
24
|
+
@bookmarks = []
|
25
|
+
explode_json(json_file)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Public: the in-memory collection of all Lists attached to this Storage
|
29
|
+
# instance.
|
30
|
+
#
|
31
|
+
# lists - an Array of individual List items
|
32
|
+
#
|
33
|
+
# Returns nothing.
|
34
|
+
attr_writer :bookmarks
|
35
|
+
|
36
|
+
# Public: the list of Lists in your JSON data, sorted by number of items
|
37
|
+
# descending.
|
38
|
+
#
|
39
|
+
# Returns an Array of List objects.
|
40
|
+
def bookmarks(o = nil)
|
41
|
+
if o == 'date'
|
42
|
+
@bookmarks.sort_by { |bk| -bk.added.to_i }
|
43
|
+
elsif o == 'title'
|
44
|
+
@bookmarks.sort_by { |bk| bk.title }
|
45
|
+
elsif o == 'uid'
|
46
|
+
@bookmarks.sort_by { |bk| bk.uid }
|
47
|
+
else
|
48
|
+
@bookmarks.sort_by { |bk| -bk.added.to_i }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Public: tests whether a named List exists.
|
53
|
+
#
|
54
|
+
# name - the String name of a List
|
55
|
+
#
|
56
|
+
# Returns true if found, false if not.
|
57
|
+
def bookmark_exists?(title)
|
58
|
+
@Bookmarks.detect { |bk| bk.title == title }
|
59
|
+
end
|
60
|
+
|
61
|
+
# Public: persists your in-memory objects to disk in JSON format.
|
62
|
+
#
|
63
|
+
# Returns true if successful, false if unsuccessful.
|
64
|
+
def save!
|
65
|
+
File.open(json_file, 'w') {|f| f.write(to_json) }
|
66
|
+
end
|
67
|
+
|
68
|
+
# Public: the JSON representation of the current List and Item assortment
|
69
|
+
# attached to the Storage instance.
|
70
|
+
#
|
71
|
+
# Returns a String JSON representation of its Lists and their Items.
|
72
|
+
def to_json
|
73
|
+
Yajl::Encoder.encode(bookmarks.collect{|b| b.to_hash }, :pretty => true)
|
74
|
+
end
|
75
|
+
|
76
|
+
# INTERNAL METHODS ##########################################################
|
77
|
+
|
78
|
+
# Take a JSON representation of data and explode it out into the consituent
|
79
|
+
# Lists and Items for the given Storage instance.
|
80
|
+
#
|
81
|
+
# Returns nothing.
|
82
|
+
def explode_json(json)
|
83
|
+
bootstrap_json unless File.exist?(json)
|
84
|
+
|
85
|
+
storage = Yajl::Parser.new.parse(File.new(json, 'r'))
|
86
|
+
|
87
|
+
storage.each do |bookmark|
|
88
|
+
@bookmarks << bk = Bookmark.new(bookmark['content'])
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# Takes care of bootstrapping the JSON file, both in terms of creating the
|
93
|
+
# file and in terms of creating a skeleton JSON schema.
|
94
|
+
#
|
95
|
+
# Return true if successfully saved.
|
96
|
+
def bootstrap_json
|
97
|
+
FileUtils.touch json_file
|
98
|
+
save!
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
data/lib/zooline.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rubygems'
|
5
|
+
rescue LoadError
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
require "patron"
|
10
|
+
require 'digest/sha1'
|
11
|
+
require 'yajl'
|
12
|
+
re2uire "fileutils"
|
13
|
+
require "rainbow"
|
14
|
+
require "terminal-table/import"
|
15
|
+
|
16
|
+
require "zooline/command"
|
17
|
+
require "zooline/bookmark"
|
18
|
+
require "zooline/storage"
|
19
|
+
require "zooline/credentials"
|
20
|
+
require "zooline/session"
|
21
|
+
require "zooline/plateform"
|
22
|
+
require "zooline/output"
|
23
|
+
|
24
|
+
|
25
|
+
module Zooline
|
26
|
+
VERSION = '0.0.2'
|
27
|
+
|
28
|
+
def self.storage
|
29
|
+
@storage ||= Zooline::Storage.new
|
30
|
+
end
|
31
|
+
end
|
data/licence.markdown
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Copyright (c) Zach Holman, http://zachholman.com
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
6
|
+
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
8
|
+
|
data/zooline.gemspec
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{zooline}
|
5
|
+
s.version = "0.0.2"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Jeremy speissegger"]
|
9
|
+
s.cert_chain = ["/Users/clodeindustrie/gem-public_cert.pem"]
|
10
|
+
s.date = %q{2011-04-10}
|
11
|
+
s.default_executable = %q{zooline}
|
12
|
+
s.description = %q{Command line tool for zootool}
|
13
|
+
s.email = %q{clodeindustrie@gmail.com}
|
14
|
+
s.executables = ["zooline"]
|
15
|
+
s.extra_rdoc_files = ["README.markdown", "bin/zooline", "lib/zooline.rb", "lib/zooline/bookmark.rb", "lib/zooline/command.rb", "lib/zooline/credentials.rb", "lib/zooline/list.rb", "lib/zooline/output.rb", "lib/zooline/plateform.rb", "lib/zooline/session.rb", "lib/zooline/storage.rb"]
|
16
|
+
s.files = ["README.markdown", "Rakefile", "bin/zooline", "lib/zooline.rb", "lib/zooline/bookmark.rb", "lib/zooline/command.rb", "lib/zooline/credentials.rb", "lib/zooline/list.rb", "lib/zooline/output.rb", "lib/zooline/plateform.rb", "lib/zooline/session.rb", "lib/zooline/storage.rb", "licence.markdown", "Manifest", "zooline.gemspec"]
|
17
|
+
s.homepage = %q{http://github.com/clodeindustrie/zooline}
|
18
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Zooline", "--main", "README.markdown"]
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.rubyforge_project = %q{zooline}
|
21
|
+
s.rubygems_version = %q{1.5.0}
|
22
|
+
s.signing_key = %q{/Users/clodeindustrie/gem-private_key.pem}
|
23
|
+
s.summary = %q{Command line tool for zootool}
|
24
|
+
|
25
|
+
if s.respond_to? :specification_version then
|
26
|
+
s.specification_version = 3
|
27
|
+
|
28
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
29
|
+
s.add_runtime_dependency(%q<patron>, [">= 0"])
|
30
|
+
s.add_runtime_dependency(%q<yajl-ruby>, [">= 0"])
|
31
|
+
s.add_runtime_dependency(%q<terminal-table>, [">= 0"])
|
32
|
+
s.add_runtime_dependency(%q<rainbow>, [">= 0"])
|
33
|
+
else
|
34
|
+
s.add_dependency(%q<patron>, [">= 0"])
|
35
|
+
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
36
|
+
s.add_dependency(%q<terminal-table>, [">= 0"])
|
37
|
+
s.add_dependency(%q<rainbow>, [">= 0"])
|
38
|
+
end
|
39
|
+
else
|
40
|
+
s.add_dependency(%q<patron>, [">= 0"])
|
41
|
+
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
42
|
+
s.add_dependency(%q<terminal-table>, [">= 0"])
|
43
|
+
s.add_dependency(%q<rainbow>, [">= 0"])
|
44
|
+
end
|
45
|
+
end
|
data.tar.gz.sig
ADDED
metadata
ADDED
@@ -0,0 +1,173 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: zooline
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Jeremy speissegger
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain:
|
17
|
+
- |
|
18
|
+
-----BEGIN CERTIFICATE-----
|
19
|
+
MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRcwFQYDVQQDDA5jbG9k
|
20
|
+
ZWluZHVzdHJpZTEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQB
|
21
|
+
GRYDY29tMB4XDTExMDMyNzExMjkxN1oXDTEyMDMyNjExMjkxN1owRTEXMBUGA1UE
|
22
|
+
AwwOY2xvZGVpbmR1c3RyaWUxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmS
|
23
|
+
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkm
|
24
|
+
eCqIJUMRCImmoWHYwS59qQ6xvLmrJFFYuATFgO3pjWxED/iSVp/MHDkbskNqzr2H
|
25
|
+
mgE3t+kY0RHQVtsHV5hBq2i73khbxqZLhvxAEPbRwZurt0g9Y8j4BuMdbE/4JsmS
|
26
|
+
1r9AUoYTgusbOT6YAxQfDtOOu3m7bSDS6XXgedgdn6nS7dro0IyrZwPZtUW8K7VO
|
27
|
+
Xp/K6UoLEpng1f2QdMSFp+PHj859/xh2ecq5ullCB/A1eQZPsMEM3y0Dmf9xYDgQ
|
28
|
+
d+jnH6JILCGYvR8tXlKW4npMryFecKh3KIOXzmGJpGBIzGLCHe2Vl8TOhiOK8Gl/
|
29
|
+
fJEFtZ4Tva9Uo5gFOCcCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
30
|
+
HQYDVR0OBBYEFFriOTvNLwcMWTEpZIBbvKtC3n30MA0GCSqGSIb3DQEBBQUAA4IB
|
31
|
+
AQBK0WmnvT+c0TtzIlIiLza3BiZS3Ajxn4QQW+Fgn6j+g5IA9p5ZQxw0R8DqMb5u
|
32
|
+
dqbFyj44eZuLglGVr3ynpC1/TcIyeV+cRrcOEyLEZzLaB/1o/sA1RoFggqDTrESF
|
33
|
+
ICdFkN5c8iVd5QK2nAD2p02Z6qkuKXSkNLk68iGCjVS4Enq+aQibg5exoApsb6IZ
|
34
|
+
tl8e8PWwtT3cxHLnB+QN0vXDZV++jVygKfRRslAtTKH/ewXAYe0IBQY2ql/KN0+u
|
35
|
+
qh/entUj17W4lQNupvJOVPxkcgd3Vdvf/Gg/ilP0rQIbAeJ2F5P+wL1aIRxTYk2C
|
36
|
+
k5eErxkTnOal1jGjrLUMzvYT
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
|
39
|
+
date: 2011-04-10 00:00:00 +01:00
|
40
|
+
default_executable:
|
41
|
+
dependencies:
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: patron
|
44
|
+
prerelease: false
|
45
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
hash: 3
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
54
|
+
type: :runtime
|
55
|
+
version_requirements: *id001
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: yajl-ruby
|
58
|
+
prerelease: false
|
59
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
type: :runtime
|
69
|
+
version_requirements: *id002
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: terminal-table
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
version: "0"
|
82
|
+
type: :runtime
|
83
|
+
version_requirements: *id003
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rainbow
|
86
|
+
prerelease: false
|
87
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
hash: 3
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
version: "0"
|
96
|
+
type: :runtime
|
97
|
+
version_requirements: *id004
|
98
|
+
description: Command line tool for zootool
|
99
|
+
email: clodeindustrie@gmail.com
|
100
|
+
executables:
|
101
|
+
- zooline
|
102
|
+
extensions: []
|
103
|
+
|
104
|
+
extra_rdoc_files:
|
105
|
+
- README.markdown
|
106
|
+
- bin/zooline
|
107
|
+
- lib/zooline.rb
|
108
|
+
- lib/zooline/bookmark.rb
|
109
|
+
- lib/zooline/command.rb
|
110
|
+
- lib/zooline/credentials.rb
|
111
|
+
- lib/zooline/list.rb
|
112
|
+
- lib/zooline/output.rb
|
113
|
+
- lib/zooline/plateform.rb
|
114
|
+
- lib/zooline/session.rb
|
115
|
+
- lib/zooline/storage.rb
|
116
|
+
files:
|
117
|
+
- README.markdown
|
118
|
+
- Rakefile
|
119
|
+
- bin/zooline
|
120
|
+
- lib/zooline.rb
|
121
|
+
- lib/zooline/bookmark.rb
|
122
|
+
- lib/zooline/command.rb
|
123
|
+
- lib/zooline/credentials.rb
|
124
|
+
- lib/zooline/list.rb
|
125
|
+
- lib/zooline/output.rb
|
126
|
+
- lib/zooline/plateform.rb
|
127
|
+
- lib/zooline/session.rb
|
128
|
+
- lib/zooline/storage.rb
|
129
|
+
- licence.markdown
|
130
|
+
- Manifest
|
131
|
+
- zooline.gemspec
|
132
|
+
has_rdoc: true
|
133
|
+
homepage: http://github.com/clodeindustrie/zooline
|
134
|
+
licenses: []
|
135
|
+
|
136
|
+
post_install_message:
|
137
|
+
rdoc_options:
|
138
|
+
- --line-numbers
|
139
|
+
- --inline-source
|
140
|
+
- --title
|
141
|
+
- Zooline
|
142
|
+
- --main
|
143
|
+
- README.markdown
|
144
|
+
require_paths:
|
145
|
+
- lib
|
146
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
hash: 3
|
152
|
+
segments:
|
153
|
+
- 0
|
154
|
+
version: "0"
|
155
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
hash: 11
|
161
|
+
segments:
|
162
|
+
- 1
|
163
|
+
- 2
|
164
|
+
version: "1.2"
|
165
|
+
requirements: []
|
166
|
+
|
167
|
+
rubyforge_project: zooline
|
168
|
+
rubygems_version: 1.5.0
|
169
|
+
signing_key:
|
170
|
+
specification_version: 3
|
171
|
+
summary: Command line tool for zootool
|
172
|
+
test_files: []
|
173
|
+
|
metadata.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
�9͵�q�D���#��W�;���;*$�M�J��F�{�W��pe1��0j_1�cs[�C�kG��)�@Ŀ_�b=���?��9��)��,Aߵ���:j���{��Y�u�z�T��ƈ,?:j)9�r���@x�����2S��Q5صݠ^�e��8MYrԺ_�D�*gҝ4��_=H�D��緕�=���Xq0�H��w�� ,>��$Չ��94�����7����1=G�<m��$N;F'��
|