pry-parsecom 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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: []