pry-parsecom 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.swp
2
+ *.gem
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pry-parsecom.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Ando Yasushi
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,87 @@
1
+ # pry-parsecom
2
+
3
+ CLI for parse.com
4
+
5
+ ## Usage
6
+
7
+ $ pry-parsecom
8
+ [1] pry(main)> help parse.com
9
+ Parse.com
10
+ login-parsecom Log in parse.com
11
+ logout-parsecom Log out parse.com
12
+ show-applications Show all parse applications
13
+ show-classes Show all parse classes
14
+ show-credentials Show credentials for parse.com
15
+ show-schema Show a parse class schema
16
+ use-application Set the current parse.com application
17
+ [2] pry(main)> show-applications
18
+ Input parse.com email: andyjpn@gmail.com
19
+ Input parse.com password:
20
+ Name | Selected
21
+ ===================
22
+ FakeApp |
23
+ FakeApp2 |
24
+ [3] pry(main)> use-application FakeApp
25
+ The current app is FakeApp.
26
+ [4] pry(main)> show-applications
27
+ Name | Selected
28
+ ===================
29
+ FakeApp | *
30
+ FakeApp2 |
31
+ [5] pry(main)> show-credentials
32
+ Key | Value
33
+ =========================================================
34
+ APPLICATION_ID | abcdefghijklmnopqrstuvwxyzabcdefghijklmn
35
+ REST_API_KEY | abcdefghijklmnopqrstuvwxyzabcdefghijklmn
36
+ MASTER_KEY | abcdefghij******************************
37
+ [6] pry(main)> show-classes
38
+ Name
39
+ =======
40
+ Comment
41
+ Post
42
+ _User
43
+ [7] pry(main)> show-schema Post
44
+ Name | Type
45
+ ============================
46
+ author | pointer<_User>
47
+ body | string
48
+ comments | relation<Comment>
49
+ [8] pry(main)> Post.find :all
50
+ => [---
51
+ __type: Post
52
+ author:
53
+ __type: Pointer
54
+ className: _User
55
+ objectId: ZybBXQEIjI
56
+ body: 本文
57
+ comments: <Ralations>
58
+ createdAt: '2013-11-17T13:37:44.055Z'
59
+ updatedAt: '2013-11-17T13:38:30.908Z'
60
+ objectId: lNKMPYSCTw
61
+ ,
62
+ ---
63
+ __type: Post
64
+ author:
65
+ __type: Pointer
66
+ className: _User
67
+ objectId: ZybBXQEIjI
68
+ body: 本文2
69
+ comments: <Ralations>
70
+ createdAt: '2013-11-17T14:33:00.134Z'
71
+ updatedAt: '2013-11-17T14:33:25.436Z'
72
+ objectId: ur2StDqAFD
73
+ ]
74
+ [9] pry(main)> logout
75
+ logged out
76
+ [10] pry(main)> show-applications
77
+ Name | Selected
78
+ ===================
79
+ [11] pry(main)> exit
80
+
81
+ ## Contributing
82
+
83
+ 1. Fork it
84
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
85
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
86
+ 4. Push to the branch (`git push origin my-new-feature`)
87
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/pry-parsecom ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $0 = 'pry'
4
+
5
+ begin
6
+ require 'pry'
7
+ rescue LoadError
8
+ require 'rubygems'
9
+ require 'pry'
10
+ end
11
+
12
+ ENV['ENABLE_PRY_PARSECOM'] = 'on'
13
+ Pry::CLI.parse_options
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands.create_command "login-parsecom" do
4
+ group 'Parse.com'
5
+ description 'Log in parse.com'
6
+
7
+ def options opt
8
+ opt.banner <<-EOS.gsub(/^\s+/, '')
9
+ Usage: login-parsecom
10
+
11
+ Log in parse.com
12
+ EOS
13
+ end
14
+
15
+ def process
16
+ PryParsecom::Setting.login *PryParsecom.ask_email_and_password
17
+ output.puts 'logged in'
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands.create_command "logout-parsecom" do
4
+ group 'Parse.com'
5
+ description 'Log out parse.com'
6
+
7
+ def options opt
8
+ opt.banner <<-EOS.gsub(/^\s+/, '')
9
+ Usage: logout-parsecom
10
+
11
+ Log in parse.com
12
+ EOS
13
+ end
14
+
15
+ def process
16
+ PryParsecom::Setting.logout
17
+ output.puts 'logged out'
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands.create_command "show-applications" do
4
+ group 'Parse.com'
5
+ description 'Show all parse applications'
6
+
7
+ def options opt
8
+ opt.banner unindent <<-EOS
9
+ Usage: show-applications
10
+
11
+ Show all parse applications
12
+ EOS
13
+ end
14
+
15
+ def process
16
+ PryParsecom::Setting.setup_if_needed
17
+ table = PryParsecom::Table.new %w(Name Selected)
18
+ PryParsecom::Setting.app_names.each do |name|
19
+ table.add_row [name, name == PryParsecom::Setting.current_app ? '*' : '']
20
+ end
21
+ output.puts table
22
+ end
23
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands.create_command 'show-classes' do
4
+ group 'Parse.com'
5
+ description 'Show all parse classes'
6
+
7
+ def options opt
8
+ opt.banner unindent <<-EOS
9
+ Usage: show-classes [app_name]
10
+
11
+ Show all parse classes
12
+ EOS
13
+ end
14
+
15
+ def process
16
+ if 1 < args.size
17
+ output.puts opt
18
+ return
19
+ end
20
+
21
+ PryParsecom::Setting.setup_if_needed
22
+ setting = PryParsecom::Setting.current_setting
23
+ unless setting
24
+ output.puts 'Now using no app'
25
+ return
26
+ end
27
+
28
+ table = PryParsecom::Table.new %w(Name)
29
+ setting.classes.each do |klass|
30
+ table.add_row klass
31
+ end
32
+ output.puts table
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands.create_command "show-credentials" do
4
+ group 'Parse.com'
5
+ description 'Show credentials for parse.com'
6
+
7
+ def options opt
8
+ opt.banner unindent <<-EOS
9
+ Usage: show-credentials
10
+
11
+ Show parse.com credentials: application_id, rest_api_key and master_key.
12
+ EOS
13
+ end
14
+
15
+ def process
16
+ PryParsecom::Setting.setup_if_needed
17
+ table = PryParsecom::Table.new %w(Key Value), [
18
+ ['APPLICATION_ID', Parse.application_id],
19
+ ['REST_API_KEY', Parse.api_key],
20
+ ['MASTER_KEY', (Parse.master_key || '').sub(/.{30}$/, '*' * 30)]
21
+ ]
22
+ output.puts table
23
+ end
24
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands.create_command "show-schema" do
4
+ group 'Parse.com'
5
+ description 'Show a parse class schema'
6
+
7
+ def options opt
8
+ opt.banner unindent <<-EOS
9
+ Usage: show-schema [class name]
10
+
11
+ Show a parse class schema
12
+ EOS
13
+ end
14
+
15
+ def process
16
+ unless args.size == 1
17
+ output.puts opt
18
+ return
19
+ end
20
+
21
+ PryParsecom::Setting.setup_if_needed
22
+ setting = PryParsecom::Setting.current_setting
23
+ unless setting
24
+ output.puts 'Now using no app'
25
+ return
26
+ end
27
+
28
+ class_name = args.first.to_s
29
+ schema = setting.schema class_name
30
+ table = PryParsecom::Table.new %w(Name Type)
31
+ schema.to_a.sort{|a1, a2| a1[0] <=> a2[0]}.each do |name, type|
32
+ if type =~ /^\*(.*)/
33
+ type = "pointer<#{$1}>"
34
+ end
35
+ table.add_row [name, type]
36
+ end
37
+ output.puts table
38
+ end
39
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands.create_command 'use-application' do
4
+ group 'Parse.com'
5
+ description 'Set the current parse.com application'
6
+
7
+ def options opt
8
+ opt.banner <<-EOS.gsub(/^\s+/, '')
9
+ Usage: use your-app-name
10
+
11
+ Set the current parse.com application
12
+ EOS
13
+ end
14
+
15
+ def process
16
+ PryParsecom::Setting.setup_if_needed
17
+ unless args.size == 1
18
+ output.puts opt
19
+ return
20
+ end
21
+ app_name = args.first.to_s
22
+ unless PryParsecom::Setting.has_app? app_name
23
+ output.puts "#{app_name} does not exist."
24
+ return
25
+ end
26
+
27
+ unless PryParsecom::Setting.current_app.to_s.empty?
28
+ prev_setting = PryParsecom::Setting.current_setting
29
+ prev_setting.reset if prev_setting
30
+ end
31
+
32
+ setting = PryParsecom::Setting[app_name]
33
+ setting.set
34
+ PryParsecom::Setting.current_app = app_name
35
+ output.puts "The current app is #{app_name}."
36
+ end
37
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: UTF-8
2
+
3
+ PryParsecom::Commands = Pry::CommandSet.new
4
+
5
+ command_glob = File.expand_path('../commands/*.rb', __FILE__)
6
+
7
+ Dir[command_glob].each do |command|
8
+ require command
9
+ end
10
+
11
+ Pry.commands.import PryParsecom::Commands
@@ -0,0 +1,7 @@
1
+ module Parse
2
+ class Object
3
+ def to_s
4
+ to_h.to_yaml
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,210 @@
1
+ module PryParsecom
2
+ class Setting
3
+ DOT_DIRNAME = "#{Dir.home}/.pry-parsecom"
4
+ SETTINGS_FILENAME = "settings"
5
+ IGNORES_FILENAME = "ignores"
6
+ KEYS_FILENAME = "keys"
7
+ SCHEMAS_FILENAME = "schemas"
8
+
9
+ USER_AGENT = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
10
+ LOGIN_URL = 'https://parse.com/apps'
11
+ LOGIN_SUCCESS_FILENAME= 'apps.html'
12
+ LOGIN_ERROR_FILENAME = 'user_session.html'
13
+ APPS_XPATH = '/html/body/div[4]/div[2]/div/div/div/div[3]/ul/li/ul/li/a'
14
+ APP_NAME_XPATH = '//*[@id="parse_app_name"]'
15
+ APP_KEYS_CSS = 'div.app_keys.window'
16
+ APP_ID_XPATH = 'div[2]/div[1]/div[2]/div/input'
17
+ API_KEY_XPATH = 'div[2]/div[5]/div[2]/div/input'
18
+ MASTER_KEY_XPATH = 'div[2]/div[6]/div[2]/div/input'
19
+
20
+ @@agent = Mechanize.new
21
+ @@agent.user_agent = USER_AGENT
22
+ @@current_app = nil
23
+ @@apps = {}
24
+
25
+ class <<self
26
+ def current_app
27
+ @@current_app
28
+ end
29
+
30
+ def current_app= app
31
+ @@current_app = app
32
+ end
33
+
34
+ def current_setting
35
+ @@apps[@@current_app]
36
+ end
37
+
38
+ def setup_if_needed
39
+ if @@apps.empty?
40
+ unless load
41
+ login *PryParsecom.ask_email_and_password
42
+ end
43
+ end
44
+ end
45
+
46
+ def read_setting_file name
47
+ begin File.read "#{DOT_DIRNAME}/#{name}" rescue '' end
48
+ end
49
+
50
+ def write_setting_file name, hash
51
+ Dir.mkdir DOT_DIRNAME unless File.exist? DOT_DIRNAME
52
+ File.open "#{DOT_DIRNAME}/#{name}", 'w' do |file|
53
+ file.write YAML.dump(hash)
54
+ end
55
+ end
56
+
57
+ def load
58
+ if File.exist? DOT_DIRNAME
59
+ settings = read_setting_file SETTINGS_FILENAME
60
+ ignores = read_setting_file IGNORES_FILENAME
61
+ keys = read_setting_file KEYS_FILENAME
62
+ schemas = read_setting_file SCHEMAS_FILENAME
63
+
64
+ if !keys.empty? && !schemas.empty?
65
+ ignores = ignores.split "\n"
66
+ keys = YAML.load keys
67
+ schemas = YAML.load schemas
68
+ keys.each do |app_name, key|
69
+ @@apps[app_name] = Setting.new app_name, key['app_id'], key['api_key'],
70
+ key['master_key'], schemas[app_name]
71
+ end
72
+ return true
73
+ end
74
+ end
75
+ false
76
+ end
77
+
78
+ def save
79
+ keys = {}
80
+ schemas = {}
81
+ @@apps.each do |app_name, setting|
82
+ keys[app_name] = {
83
+ 'app_id' => setting.app_id,
84
+ 'api_key' => setting.api_key,
85
+ 'master_key' => setting.master_key
86
+ }
87
+
88
+ schemas[app_name] = setting.schemas
89
+ end
90
+ write_setting_file KEYS_FILENAME, keys
91
+ write_setting_file SCHEMAS_FILENAME, schemas
92
+ end
93
+
94
+ def login email, password
95
+ @@apps = {}
96
+
97
+ login_page = @@agent.get LOGIN_URL
98
+ apps_page = login_page.form_with :id => 'new_user_session' do |form|
99
+ form['user_session[email]'] = email
100
+ form['user_session[password]'] = password
101
+ end.submit
102
+
103
+ if apps_page.filename == LOGIN_ERROR_FILENAME
104
+ puts 'login error'
105
+ return
106
+ end
107
+
108
+ apps_page.search(APPS_XPATH).each do |a|
109
+ href = a.attributes['href'].to_s
110
+ count_page = @@agent.get "#{href}/collections/count"
111
+ schema = JSON.parse count_page.content
112
+ edit_page = @@agent.get "#{href}/edit"
113
+ app_name = edit_page.search(APP_NAME_XPATH).first.attributes['value'].to_s
114
+ app_keys = edit_page.search('div.app_keys.window')
115
+ app_id = app_keys.search(APP_ID_XPATH).first.attributes['value'].to_s
116
+ api_key = app_keys.search(API_KEY_XPATH).first.attributes['value'].to_s
117
+ master_key = app_keys.search(MASTER_KEY_XPATH).first.attributes['value'].to_s
118
+
119
+ next if read_setting_file(IGNORES_FILENAME).split("\n").include? app_name
120
+
121
+ @@apps[app_name] = Setting.new app_name, app_id, api_key, master_key, schema
122
+ end
123
+
124
+ save
125
+ end
126
+
127
+ def logout
128
+ FileUtils.rm "#{DOT_DIRNAME}/#{KEYS_FILENAME}"
129
+ FileUtils.rm "#{DOT_DIRNAME}/#{SCHEMAS_FILENAME}"
130
+ @@apps.clear
131
+ @@current_app = nil
132
+ end
133
+
134
+ def app_names
135
+ @@apps.keys
136
+ end
137
+
138
+ def has_app? app_name
139
+ @@apps.has_key? app_name.to_s
140
+ end
141
+
142
+ def by_name app_name
143
+ @@apps[app_name.to_s]
144
+ end
145
+ alias [] by_name
146
+
147
+ def each &block
148
+ @@apps.each &block
149
+ end
150
+ end
151
+
152
+ attr_accessor :app_name, :app_id, :api_key, :master_key, :schemas
153
+
154
+ def initialize app_name, app_id, api_key, master_key, schemas
155
+ @app_name, @app_id, @api_key, @master_key, @schemas =
156
+ app_name, app_id, api_key, master_key, schemas
157
+ end
158
+
159
+ def set
160
+ Parse.credentials :application_id => @app_id, :api_key => @api_key, :master_key => @master_key
161
+ Parse::Client.default.application_id = @app_id
162
+ Parse::Client.default.api_key = @api_key
163
+ Parse::Client.default.master_key = @master_key
164
+
165
+ schemas['collection'].each do |e|
166
+ class_name = e['id']
167
+ next if class_name[0] == '_'
168
+
169
+ if Object.const_defined? class_name
170
+ puts "#{class_name.to_s} has already exist."
171
+ next
172
+ end
173
+ Parse::Object class_name
174
+ end
175
+ end
176
+
177
+ def reset
178
+ schemas['collection'].each do |e|
179
+ class_name = e['id']
180
+ next if class_name[0] == '_'
181
+
182
+ if Object.const_defined? class_name
183
+ klass = Object.const_get class_name
184
+ if klass < Parse::Object
185
+ Object.class_eval do
186
+ remove_const class_name
187
+ end
188
+ end
189
+ end
190
+ end
191
+
192
+ Parse.credentials :application_id => '', :api_key => '', :mater_key => ''
193
+ Parse::Client.default.application_id = nil
194
+ Parse::Client.default.api_key = nil
195
+ Parse::Client.default.master_key = nil
196
+ Parse::Client.default
197
+ end
198
+
199
+ def classes
200
+ schemas['collection'].map{|e| e['id']}.sort
201
+ end
202
+
203
+ def schema class_name
204
+ schms = schemas['collection'].select do |e|
205
+ e['id'] == class_name || e['display_name'] == class_name
206
+ end
207
+ schms.empty? ? [] : schms.first['schema']
208
+ end
209
+ end
210
+ end
@@ -0,0 +1,57 @@
1
+ module PryParsecom
2
+ class Table
3
+ def initialize heads, rows=[]
4
+ @heads = heads
5
+ @col_widths = Hash.new 0
6
+ @heads.each do |head|
7
+ @col_widths[head] = head.size
8
+ end
9
+ self.rows = rows
10
+ end
11
+
12
+ def rows= rows
13
+ @rows = []
14
+ rows.each do |row|
15
+ add_row row
16
+ end
17
+ end
18
+
19
+ def add_row row
20
+ cols = []
21
+ case row
22
+ when Hash
23
+ @heads.each do |head|
24
+ cols << row[head]
25
+ end
26
+ when Array
27
+ cols = row
28
+ else
29
+ cols = [row]
30
+ end
31
+
32
+ cols.each.with_index do |col, i|
33
+ if @col_widths[i] < col.size
34
+ @col_widths[i] = col.size
35
+ end
36
+ end
37
+ @rows << cols
38
+ end
39
+
40
+ def to_s
41
+ heads = @heads.map.with_index do |head, i|
42
+ head.center @col_widths[i]
43
+ end.join " | "
44
+ ret = heads
45
+ ret += "\n"
46
+ ret += '=' * heads.size
47
+ ret += "\n"
48
+ @rows.each do |row|
49
+ ret += row.map.with_index { |col, i|
50
+ col.ljust @col_widths[i]
51
+ }.join " | "
52
+ ret += "\n"
53
+ end
54
+ ret
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,5 @@
1
+ # encoding: UTF-8
2
+
3
+ module PryParsecom
4
+ VERSION = "0.0.3"
5
+ end
@@ -0,0 +1,27 @@
1
+ require 'pry'
2
+ require 'pry-parsecom/version'
3
+
4
+ if ENV['ENABLE_PRY_PARSECOM']
5
+ require 'io/console'
6
+ require 'parsecom'
7
+ require 'mechanize'
8
+ require 'json'
9
+ require 'yaml'
10
+ require 'pry-parsecom/setting'
11
+ require 'pry-parsecom/commands'
12
+ require 'pry-parsecom/table'
13
+ require 'pry-parsecom/model_formatter'
14
+
15
+ module PryParsecom
16
+ module_function
17
+
18
+ def ask_email_and_password
19
+ print 'Input parse.com email: '
20
+ email = gets
21
+ print 'Input parse.com password: '
22
+ password = STDIN.noecho(&:gets)
23
+ puts
24
+ [email.strip, password.strip]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pry-parsecom/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "pry-parsecom"
8
+ gem.version = PryParsecom::VERSION
9
+ gem.authors = ["Ando Yasushi"]
10
+ gem.email = ["andyjpn@gmail.com"]
11
+ gem.description = %q{CLI for parse.com}
12
+ gem.summary = %q{CLI for parse.com}
13
+ gem.homepage = ""
14
+ gem.license = "MIT"
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+
21
+ gem.add_dependency "pry"
22
+ gem.add_dependency "parsecom"
23
+ gem.add_dependency "mechanize"
24
+ end
data/todo.txt ADDED
@@ -0,0 +1,6 @@
1
+ - show-schema [appname]
2
+ - show-credentials [appname]
3
+ - show-classes [appname]
4
+ - display cache timestamp
5
+ - handle login failure
6
+ - parse object formatter
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pry-parsecom
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ando Yasushi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-11-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pry
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: parsecom
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
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: mechanize
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
+ description: CLI for parse.com
63
+ email:
64
+ - andyjpn@gmail.com
65
+ executables:
66
+ - pry-parsecom
67
+ extensions: []
68
+ extra_rdoc_files: []
69
+ files:
70
+ - .gitignore
71
+ - Gemfile
72
+ - LICENSE.txt
73
+ - README.md
74
+ - Rakefile
75
+ - bin/pry-parsecom
76
+ - lib/pry-parsecom.rb
77
+ - lib/pry-parsecom/commands.rb
78
+ - lib/pry-parsecom/commands/login_parsecom.rb
79
+ - lib/pry-parsecom/commands/logout_parsecom.rb
80
+ - lib/pry-parsecom/commands/show_applications.rb
81
+ - lib/pry-parsecom/commands/show_classes.rb
82
+ - lib/pry-parsecom/commands/show_credentials.rb
83
+ - lib/pry-parsecom/commands/show_schema.rb
84
+ - lib/pry-parsecom/commands/use_application.rb
85
+ - lib/pry-parsecom/model_formatter.rb
86
+ - lib/pry-parsecom/setting.rb
87
+ - lib/pry-parsecom/table.rb
88
+ - lib/pry-parsecom/version.rb
89
+ - pry-parsecom.gemspec
90
+ - todo.txt
91
+ homepage: ''
92
+ licenses:
93
+ - MIT
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 1.8.23
113
+ signing_key:
114
+ specification_version: 3
115
+ summary: CLI for parse.com
116
+ test_files: []