stripe-cli 0.0.1 → 1.0.2
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.
- checksums.yaml +7 -0
- data/README.md +182 -15
- data/example.conf +9 -0
- data/example.png +0 -0
- data/lib/stripe/cli/command.rb +60 -13
- data/lib/stripe/cli/commands/balance.rb +14 -0
- data/lib/stripe/cli/commands/charges.rb +20 -25
- data/lib/stripe/cli/commands/coupons.rb +57 -0
- data/lib/stripe/cli/commands/customers.rb +46 -5
- data/lib/stripe/cli/commands/events.rb +4 -4
- data/lib/stripe/cli/commands/invoices.rb +36 -0
- data/lib/stripe/cli/commands/plans.rb +23 -5
- data/lib/stripe/cli/commands/recipients.rb +67 -0
- data/lib/stripe/cli/commands/tokens.rb +70 -0
- data/lib/stripe/cli/commands/transactions.rb +24 -0
- data/lib/stripe/cli/commands/transfers.rb +47 -0
- data/lib/stripe/cli/commands.rb +7 -0
- data/lib/stripe/cli/runner.rb +11 -4
- data/lib/stripe/cli/version.rb +1 -1
- data/output.png +0 -0
- data/spec/command_spec.rb +54 -0
- data/stripe-cli.gemspec +6 -4
- metadata +59 -37
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5923ebb4d766facc1a20aa141bbb9b2fa4c20414
|
4
|
+
data.tar.gz: ad96a4646bedecc024a25c32d7aa02a227621557
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7d1277e104b7f9c6dd41077715252cad28cc17f200773425167497a479a1609314142c8fd9aad06d156da384c43e5fb78b1938f3fdd4f93cf6193247687a2c43
|
7
|
+
data.tar.gz: 2752a182355bde4ba24a4f782ecada84f5911802ff0578761465fcbfcb0976fdcc7e22a3dd5373b812ed2158ae5f9eec2853066ab8ce45382b9aae7094c65411
|
data/README.md
CHANGED
@@ -1,29 +1,196 @@
|
|
1
|
-
# Stripe::
|
1
|
+
# Stripe::CLI
|
2
2
|
|
3
|
-
|
3
|
+
stripe-cli is a command line interface to [Stripe](https://stripe.com).
|
4
|
+
|
5
|
+
Uses [AwesomePrint](https://github.com/michaeldv/awesome_print) to provide very readable output on your command line.
|
6
|
+
|
7
|
+

|
8
|
+
|
9
|
+
Note that all JSON-style epoch timestamps have been converted to **real life** DateTime stamps, your welcome!
|
4
10
|
|
5
11
|
## Installation
|
6
12
|
|
7
|
-
|
13
|
+
$ gem install stripe-cli
|
8
14
|
|
9
|
-
|
15
|
+
Actually, the gem version is extremely stale right now. I hope to be able to update it soon. Until then, there are a couple of <strike>hacks</strike> options available.
|
10
16
|
|
11
|
-
|
17
|
+
1) clone the repo and build the gem locally yourself
|
12
18
|
|
13
|
-
|
19
|
+
$ git clone https://github.com/stripe-contrib/stripe-cli.git
|
20
|
+
$ cd ./stripe-cli
|
21
|
+
$ gem build stripe-cli.gemspec
|
22
|
+
$ gem install stripe-cli
|
14
23
|
|
15
|
-
|
24
|
+
> because RubyGems looks **first** at the **current directory** before moving on to [rubygems.org](https://rubygems.org), that last step will install the local gem you just built.
|
16
25
|
|
17
|
-
|
26
|
+
|
27
|
+
or
|
28
|
+
|
29
|
+
2) bundler can be used to automate this same procedure
|
30
|
+
|
31
|
+
> in a Gemfile, write:
|
32
|
+
|
33
|
+
gem 'stripe-cli', :git => 'git@github.com:stripe-contrib/stripe-cli.git'
|
34
|
+
|
35
|
+
|
36
|
+
## Configuration
|
37
|
+
|
38
|
+
For authentication, pass your secret key using the `-k` or `--key` option
|
39
|
+
|
40
|
+
$ stripe events list -k XXXXXXXXXXXXXXXXXXXXXX
|
41
|
+
|
42
|
+
To use a specific api version, pass in the `-v` or `--version` option
|
43
|
+
|
44
|
+
$ stripe balance_transactions list -v "2013-08-13"
|
45
|
+
|
46
|
+
You may also store default configurations in a `~/.stripecli` file that conforms to the following example
|
47
|
+
|
48
|
+

|
49
|
+
|
50
|
+
You may also overide the default environment setting in your config file by passing in the `-e` or `--env` option
|
51
|
+
|
52
|
+
$ stripe customers find cust_123 --env=live
|
18
53
|
|
19
54
|
## Usage
|
20
55
|
|
21
|
-
|
56
|
+
$ stripe
|
57
|
+
|
58
|
+
Commands:
|
59
|
+
stripe balance # show currently available and pending balance amounts
|
60
|
+
stripe charges # find, list, create, capture, & refund charges
|
61
|
+
stripe coupons # find, list, create, & delete coupons
|
62
|
+
stripe customers # find, list, create, & delete customers
|
63
|
+
stripe events # find & list events
|
64
|
+
stripe invoices # find, list, pay, and close invoices
|
65
|
+
stripe plans # find, list, create, & delete plans
|
66
|
+
stripe recipients # find, list, create & delete recipients
|
67
|
+
stripe tokens # find & create tokens for bank accounts & credit cards
|
68
|
+
stripe transactions # find & list balance transactions
|
69
|
+
stripe transfers # find, list, & create transfers
|
70
|
+
|
71
|
+
|
72
|
+
Any parameters accepted by the [stripe api](https://stripe.com/docs/api) are acceptable options to pass into commands
|
73
|
+
|
74
|
+
$ stripe charges create [--amount=AMOUNT][--description=DESC][--card_number=NUM][--card_cvc=CVC][--card_exp_month=MM][--card_exp_year=YYYY]
|
75
|
+
|
76
|
+
or
|
77
|
+
|
78
|
+
$ stripe charges create [--amount=AMOUNT][--card=TOKEN_ID]
|
79
|
+
|
80
|
+
or
|
81
|
+
|
82
|
+
$ stripe charges create [--amount=AMOUNT][--customer=CUST_ID]
|
83
|
+
|
84
|
+
## uniform behavior
|
85
|
+
|
86
|
+
The Stripe API is very consistant. Consistency makes using the api intuitive. This utility strives to maintain Stripe's consistency. Depending on which [C.R.U.D.](http://wikipedia.org/wiki/Create,_read,_update_and_delete) operation you are after, you can pretty much count on a few standard options to be available.
|
87
|
+
|
88
|
+
### stripe (subcommand) list ...
|
89
|
+
|
90
|
+
specify how many results, between 1 and 100, should be returned (default is 10)
|
91
|
+
|
92
|
+
... list [--count=COUNT]
|
93
|
+
|
94
|
+
specify the starting index for this result set, relative to the entire result set (usefull in combination with `--count` for paginating results)
|
95
|
+
|
96
|
+
... list [--offset=OFFSET]
|
97
|
+
|
98
|
+
Passing NO (or partial) arguments, will trigger an interactive menu
|
99
|
+
|
100
|
+
$ stripe charges create
|
101
|
+
Amount in dollars: __
|
102
|
+
|
103
|
+
or
|
104
|
+
|
105
|
+
$ stripe charges create [--amount=AMOUNT]
|
106
|
+
Name on Card: __
|
107
|
+
|
108
|
+
### Charges
|
109
|
+
|
110
|
+
$ stripe charges list
|
111
|
+
$ stripe charge find ch_123
|
112
|
+
$ stripe charge refund ch_123
|
113
|
+
$ stripe charge capture ch_123
|
114
|
+
$ stripe charge create
|
115
|
+
|
116
|
+
### Tokens
|
117
|
+
|
118
|
+
$ stripe token find tok_123
|
119
|
+
$ stripe token create TYPE (bank_account or credit_card)
|
120
|
+
|
121
|
+
### Customers
|
122
|
+
|
123
|
+
$ stripe customers list
|
124
|
+
$ stripe customer find cust_123
|
125
|
+
$ stripe customer delete cust_123
|
126
|
+
$ stripe customer create
|
127
|
+
|
128
|
+
### Invoices
|
129
|
+
|
130
|
+
$ stripe invoices list [--customer=CUST_ID]
|
131
|
+
$ stripe invoice find inv_123
|
132
|
+
$ stripe invoice close inv_123
|
133
|
+
$ stripe invoice pay inv_123
|
134
|
+
$ stripe invoice upcoming cust_123
|
135
|
+
|
136
|
+
### Plans
|
137
|
+
|
138
|
+
$ stripe plans list
|
139
|
+
$ stripe plan find custom_plan_id
|
140
|
+
$ stripe plan delete custom_plan_id
|
141
|
+
$ stripe plan create
|
142
|
+
|
143
|
+
### Coupons
|
144
|
+
|
145
|
+
$ stripe coupons list
|
146
|
+
$ stripe coupon find 25_off
|
147
|
+
$ stripe coupon delete 25_off
|
148
|
+
$ stripe coupon create
|
149
|
+
|
150
|
+
### Events
|
151
|
+
|
152
|
+
$ stripe events list
|
153
|
+
$ stripe event find ev_123
|
154
|
+
|
155
|
+
### BalanceTransactions
|
156
|
+
|
157
|
+
$ stripe transactions list [--type=TYPE][--source=SOURCE_ID]
|
158
|
+
$ stripe transaction find trx_123
|
159
|
+
|
160
|
+
### Recipients
|
161
|
+
|
162
|
+
$ stripe recipients list [--verified]
|
163
|
+
$ stripe recipient find recip_123
|
164
|
+
$ stripe recipient delete recip_123
|
165
|
+
$ stripe recipient create
|
166
|
+
|
167
|
+
### Transfers
|
168
|
+
|
169
|
+
$ stripe transfers list [--recipient=RECIPIENT_ID][--status=STATUS]
|
170
|
+
$ stripe transfer find trans_id
|
171
|
+
$ stripe transfer create
|
172
|
+
|
173
|
+
#### Easter Egg Alert!
|
174
|
+
|
175
|
+
You can pass the `--balance` flag into `transfer create` to automatically set transfer `amount` equal to your currently available balance.
|
176
|
+
|
177
|
+
example:
|
178
|
+
|
179
|
+
$ stripe transfer create --balance --recipient=self
|
180
|
+
|
181
|
+
> No, its not magic. The `--balance` flag just triggers a 'preflight' api call to retrieve your current balance and assigns that to the `--amount` option
|
182
|
+
|
183
|
+
## Road Map
|
184
|
+
|
185
|
+
1. test coverage, test coverage, test coverage!
|
186
|
+
1. `--date` filters for all `list` operations
|
187
|
+
1. `update` command operations
|
188
|
+
1. support for `disputes` & dispute handling
|
189
|
+
1. support creating/updating config file through cli
|
190
|
+
1. plug-able output formating for use in scripts and such
|
191
|
+
1. request a feature you would like via the issue tracker
|
192
|
+
|
22
193
|
|
23
|
-
|
194
|
+
pull requests welcome
|
24
195
|
|
25
|
-
|
26
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
-
5. Create new Pull Request
|
196
|
+
report issues in the issues tracker
|
data/example.conf
ADDED
data/example.png
ADDED
Binary file
|
data/lib/stripe/cli/command.rb
CHANGED
@@ -4,47 +4,94 @@ module Stripe
|
|
4
4
|
module CLI
|
5
5
|
class Command < Thor
|
6
6
|
class_option :key, :aliases => :k
|
7
|
-
|
7
|
+
class_option :env, :aliases => :e
|
8
|
+
class_option :version, :aliases => :v
|
8
9
|
protected
|
9
10
|
|
10
11
|
def api_key
|
11
|
-
@api_key ||= options[:key] ||
|
12
|
+
@api_key ||= options[:key] || stored_api_option('key')
|
13
|
+
end
|
14
|
+
|
15
|
+
def api_version
|
16
|
+
@api_version ||= options.delete(:version) || stored_api_option('version')
|
12
17
|
end
|
13
18
|
|
14
|
-
def
|
19
|
+
def environment
|
20
|
+
@env ||= options.delete(:env) || config['default']
|
21
|
+
end
|
22
|
+
|
23
|
+
def stored_api_option option
|
15
24
|
if File.exists?(config_file)
|
16
|
-
|
25
|
+
if environment
|
26
|
+
config[environment][option.to_s]
|
27
|
+
else
|
28
|
+
config[option.to_s]
|
29
|
+
end
|
17
30
|
end
|
18
31
|
end
|
19
32
|
|
33
|
+
def config
|
34
|
+
ParseConfig.new(config_file) if File.exists?(config_file)
|
35
|
+
end
|
36
|
+
|
20
37
|
def config_file
|
21
38
|
File.expand_path('~/.stripecli')
|
22
39
|
end
|
23
40
|
|
24
|
-
def
|
41
|
+
def list klass, options
|
42
|
+
Stripe.api_version = api_version unless api_version.nil?
|
43
|
+
output klass.all( options, api_key )
|
44
|
+
end
|
45
|
+
|
46
|
+
def find klass, id
|
47
|
+
Stripe.api_version = api_version unless api_version.nil?
|
48
|
+
output klass.retrieve( id, api_key )
|
49
|
+
end
|
50
|
+
|
51
|
+
def delete klass, id
|
52
|
+
Stripe.api_version = api_version unless api_version.nil?
|
53
|
+
output klass.new( id, api_key ).delete
|
54
|
+
end
|
55
|
+
|
56
|
+
def create klass, options
|
57
|
+
Stripe.api_version = api_version unless api_version.nil?
|
58
|
+
output klass.create( options, api_key )
|
59
|
+
end
|
60
|
+
|
61
|
+
def special klass, method, options
|
62
|
+
Stripe.api_version = api_version unless api_version.nil?
|
63
|
+
output klass.new( options, api_key ).send( method )
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def output objects
|
69
|
+
ap inspect( objects ), :indent => -2
|
70
|
+
end
|
71
|
+
|
72
|
+
def inspect object
|
25
73
|
case object
|
26
74
|
when Array
|
27
75
|
object.map {|o| inspect(o) }
|
28
76
|
when Hash
|
29
77
|
object.inject({}) do |hash, (key, value)|
|
30
|
-
hash[key] = inspect(value)
|
78
|
+
hash[key] = inspect( value )
|
31
79
|
hash
|
32
80
|
end
|
33
81
|
when Stripe::ListObject
|
34
82
|
inspect object.data
|
35
83
|
when Stripe::StripeObject
|
36
84
|
inspect object.to_hash
|
85
|
+
when Numeric
|
86
|
+
if object > 1000000000
|
87
|
+
Time.at object
|
88
|
+
else
|
89
|
+
object
|
90
|
+
end
|
37
91
|
else
|
38
92
|
object
|
39
93
|
end
|
40
94
|
end
|
41
|
-
|
42
|
-
def output(objects)
|
43
|
-
ap(
|
44
|
-
inspect(objects),
|
45
|
-
:indent => -2
|
46
|
-
)
|
47
|
-
end
|
48
95
|
end
|
49
96
|
end
|
50
97
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Stripe
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Balance < Command
|
5
|
+
desc "current", "show currently available and pending balance figures"
|
6
|
+
def current
|
7
|
+
output Stripe::Balance.retrieve(api_key)
|
8
|
+
end
|
9
|
+
|
10
|
+
default_command :current
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -7,25 +7,26 @@ module Stripe
|
|
7
7
|
option :customer
|
8
8
|
option :offset
|
9
9
|
def list
|
10
|
-
|
10
|
+
super Stripe::Charge, options
|
11
11
|
end
|
12
12
|
|
13
13
|
desc "find ID", "Find a charge"
|
14
|
-
def find
|
15
|
-
|
14
|
+
def find charge_id
|
15
|
+
super Stripe::Charge, charge_id
|
16
16
|
end
|
17
17
|
|
18
18
|
desc "refund ID", "Refund a charge"
|
19
|
-
def refund
|
20
|
-
|
19
|
+
def refund charge_id
|
20
|
+
special Stripe::Charge, :refund, charge_id
|
21
21
|
end
|
22
22
|
|
23
23
|
desc "capture ID", "Capture a charge"
|
24
|
-
def capture
|
25
|
-
|
24
|
+
def capture charge_id
|
25
|
+
special Stripe::Charge, :capture, charge_id
|
26
26
|
end
|
27
27
|
|
28
28
|
desc "create", "Create a charge"
|
29
|
+
option :customer
|
29
30
|
option :card
|
30
31
|
option :card_number
|
31
32
|
option :card_exp_month
|
@@ -35,35 +36,29 @@ module Stripe
|
|
35
36
|
option :amount, :type => :numeric
|
36
37
|
option :currency, :default => 'usd'
|
37
38
|
option :description
|
38
|
-
option :capture, :type => :boolean
|
39
|
+
option :capture, :type => :boolean, :default => true
|
39
40
|
|
40
41
|
def create
|
41
42
|
options[:amount] ||= ask('Amount in dollars:')
|
42
43
|
options[:amount] = (Float(options[:amount]) * 100).to_i
|
43
44
|
|
44
|
-
unless options[:card]
|
45
|
+
unless options[:card] || options[:customer]
|
46
|
+
options[:card_name] ||= ask('Name on Card:')
|
45
47
|
options[:card_number] ||= ask('Card number:')
|
46
|
-
options[:
|
47
|
-
options[:
|
48
|
-
options[:
|
49
|
-
options[:card_name] ||= ask('Card name:')
|
48
|
+
options[:card_cvc] ||= ask('CVC code:')
|
49
|
+
options[:card_exp_month] ||= ask('expiration month:')
|
50
|
+
options[:card_exp_year] ||= ask('expiration year:')
|
50
51
|
|
51
52
|
options[:card] = {
|
52
|
-
:number => options
|
53
|
-
:exp_month => options
|
54
|
-
:exp_year => options
|
55
|
-
:cvc => options
|
56
|
-
:name => options
|
53
|
+
:number => options.delete(:card_number),
|
54
|
+
:exp_month => options.delete(:card_exp_month),
|
55
|
+
:exp_year => options.delete(:card_exp_year),
|
56
|
+
:cvc => options.delete(:card_cvc),
|
57
|
+
:name => options.delete(:card_name)
|
57
58
|
}
|
58
|
-
|
59
|
-
options.delete(:card_number)
|
60
|
-
options.delete(:card_exp_month)
|
61
|
-
options.delete(:card_exp_year)
|
62
|
-
options.delete(:card_cvc)
|
63
|
-
options.delete(:card_name)
|
64
59
|
end
|
65
60
|
|
66
|
-
|
61
|
+
super Stripe::Charge, options
|
67
62
|
end
|
68
63
|
end
|
69
64
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'chronic'
|
2
|
+
module Stripe
|
3
|
+
module CLI
|
4
|
+
module Commands
|
5
|
+
class Coupons < Command
|
6
|
+
desc "list", "List coupons"
|
7
|
+
option :count
|
8
|
+
option :offset
|
9
|
+
|
10
|
+
def list
|
11
|
+
super Stripe::Coupon, options
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "find ID", "Find a coupon"
|
15
|
+
def find coupon_id
|
16
|
+
super Stripe::Coupon, coupon_id
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "delete ID", "Delete a coupon"
|
20
|
+
def delete coupon_id
|
21
|
+
super Stripe::Coupon, coupon_id
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "create", "Create a new Coupon"
|
25
|
+
option :id
|
26
|
+
option :percent_off, :type => :numeric
|
27
|
+
option :amount_off, :type => :numeric
|
28
|
+
option :duration, :enum => [ :forever, :once, :repeating ]
|
29
|
+
option :redeem_by, :type => :numeric, :default => nil
|
30
|
+
option :max_redemptions, :type => :numeric
|
31
|
+
option :duration_in_months
|
32
|
+
option :currency, :default => 'usd'
|
33
|
+
|
34
|
+
def create
|
35
|
+
unless options[:percent_off] || options[:amount_off]
|
36
|
+
discount = ask('(e.g. 25% or $10) specify discount:')
|
37
|
+
if discount.end_with?( '%' )
|
38
|
+
options[:percent_off] = discount.gsub(/[^\d]/,"").to_i
|
39
|
+
else
|
40
|
+
options[:amount_off] = discount.gsub(/[^\d]/,"").to_i
|
41
|
+
end
|
42
|
+
end
|
43
|
+
options[:id] ||= ask('Coupon ID:')
|
44
|
+
options[:duration] ||= ask('(`forever`,`once`, or `repeating`) duration:')
|
45
|
+
options[:duration_in_months] ||= ask('for how many months?') if options[:duration] == "repeating"
|
46
|
+
options[:redeem_by] ||= ask('expire on:')
|
47
|
+
if options[:redeem_by].empty?
|
48
|
+
options.delete(:redeem_by)
|
49
|
+
else
|
50
|
+
options[:redeem_by] = Chronic.parse(options[:redeem_by]).to_i.to_s
|
51
|
+
end
|
52
|
+
super Stripe::Coupon, options
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -7,17 +7,58 @@ module Stripe
|
|
7
7
|
option :offset
|
8
8
|
|
9
9
|
def list
|
10
|
-
|
10
|
+
super Stripe::Customer, options
|
11
11
|
end
|
12
12
|
|
13
13
|
desc "find ID", "Find a customer"
|
14
|
-
def find
|
15
|
-
|
14
|
+
def find customer_id
|
15
|
+
super Stripe::Customer, customer_id
|
16
16
|
end
|
17
17
|
|
18
18
|
desc "delete ID", "Delete a customer"
|
19
|
-
def delete
|
20
|
-
|
19
|
+
def delete customer_id
|
20
|
+
super Stripe::Customer, customer_id
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "create", "Create a new customer"
|
24
|
+
option :description
|
25
|
+
option :email
|
26
|
+
option :plan
|
27
|
+
option :coupon
|
28
|
+
option :quantity
|
29
|
+
option :trial_end
|
30
|
+
option :account_balance
|
31
|
+
option :card
|
32
|
+
option :card_number
|
33
|
+
option :card_exp_month
|
34
|
+
option :card_exp_year
|
35
|
+
option :card_cvc
|
36
|
+
option :card_name
|
37
|
+
|
38
|
+
def create
|
39
|
+
say('All of the following are OPTIONAL parameters...')
|
40
|
+
options[:email] ||= ask('Customer\'s Email:')
|
41
|
+
options[:description] ||= ask('Provide a description:')
|
42
|
+
options[:plan] ||= ask('Assign a plan:')
|
43
|
+
options[:coupon] ||= ask('Apply a coupon:')
|
44
|
+
|
45
|
+
if options[:plan]
|
46
|
+
options[:card_name] ||= ask('Name on Card:')
|
47
|
+
options[:card_number] ||= ask('Card number:')
|
48
|
+
options[:card_cvc] ||= ask('CVC code:')
|
49
|
+
options[:card_exp_month] ||= ask('expiration month:')
|
50
|
+
options[:card_exp_year] ||= ask('expiration year:')
|
51
|
+
|
52
|
+
options[:card] = {
|
53
|
+
:number => options.delete(:card_number),
|
54
|
+
:exp_month => options.delete(:card_exp_month),
|
55
|
+
:exp_year => options.delete(:card_exp_year),
|
56
|
+
:cvc => options.delete(:card_cvc),
|
57
|
+
:name => options.delete(:card_name)
|
58
|
+
}
|
59
|
+
end unless options[:card]
|
60
|
+
|
61
|
+
super Stripe::Customer, options
|
21
62
|
end
|
22
63
|
end
|
23
64
|
end
|
@@ -7,12 +7,12 @@ module Stripe
|
|
7
7
|
option :offset
|
8
8
|
|
9
9
|
def list
|
10
|
-
|
10
|
+
super Stripe::Event, options
|
11
11
|
end
|
12
12
|
|
13
|
-
desc "find ID", "Find a event
|
14
|
-
def find
|
15
|
-
|
13
|
+
desc "find ID", "Find a event"
|
14
|
+
def find event_id
|
15
|
+
super Stripe::Event, event_id
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Stripe
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Invoices < Command
|
5
|
+
desc "list", "List invoices"
|
6
|
+
option :count
|
7
|
+
option :customer
|
8
|
+
option :offset
|
9
|
+
|
10
|
+
def list
|
11
|
+
super Stripe::Invoice, options
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "find ID", "Find an invoice"
|
15
|
+
def find invoice_id
|
16
|
+
super Stripe::Invoice, invoice_id
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "close ID", "close an unpaid invoice"
|
20
|
+
def close invoice_id
|
21
|
+
special Stripe::Invoice, :close, invoice_id
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "pay ID", "trigger an open invoice to be paid immediately"
|
25
|
+
def pay invoice_id
|
26
|
+
special Stripe::Invoice, :pay, invoice_id
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "upcoming CUSTOMER", "find the upcoming invoice for CUSTOMER"
|
30
|
+
def upcoming customer_id
|
31
|
+
special Stripe::Invoice, :upcoming, {:customer => customer_id}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -7,17 +7,35 @@ module Stripe
|
|
7
7
|
option :offset
|
8
8
|
|
9
9
|
def list
|
10
|
-
|
10
|
+
super Stripe::Plan, options
|
11
11
|
end
|
12
12
|
|
13
13
|
desc "find ID", "Find a plan"
|
14
|
-
def find
|
15
|
-
|
14
|
+
def find plan_id
|
15
|
+
super Stripe::Plan, plan_id
|
16
16
|
end
|
17
17
|
|
18
18
|
desc "delete ID", "Delete a plan"
|
19
|
-
def delete
|
20
|
-
|
19
|
+
def delete plan_id
|
20
|
+
super Stripe::Plan, plan_id
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "create", "Create a new plan"
|
24
|
+
option :name
|
25
|
+
option :id
|
26
|
+
option :amount, :type => :numeric
|
27
|
+
option :interval, :default => 'month'
|
28
|
+
option :interval_count, :type => :numeric, :default => 1
|
29
|
+
option :currency, :default => 'usd'
|
30
|
+
option :trial_period_days, :type => :numeric, :default => 0
|
31
|
+
|
32
|
+
def create
|
33
|
+
options[:amount] ||= ask('Amount in dollars:')
|
34
|
+
options[:amount] = (Float(options[:amount]) * 100).to_i
|
35
|
+
options[:name] ||= ask('Plan name:')
|
36
|
+
options[:id] ||= ask('Plan id:')
|
37
|
+
|
38
|
+
super Stripe::Plan, options
|
21
39
|
end
|
22
40
|
end
|
23
41
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Stripe
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Recipients < Command
|
5
|
+
desc "list", "List recipients"
|
6
|
+
option :count
|
7
|
+
option :offset
|
8
|
+
option :verified => :boolean
|
9
|
+
|
10
|
+
def list
|
11
|
+
super Stripe::Recipient, options
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "find ID", "Find a recipient"
|
15
|
+
def find recipient_id
|
16
|
+
super Stripe::Recipient, recipient_id
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "delete ID", "delete a recipient"
|
20
|
+
def delete recipient_id
|
21
|
+
super Stripe::Recipient, recipient_id
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "create", "create a new recipient"
|
25
|
+
option :name
|
26
|
+
option :type, :enum => %w( individual corporation )
|
27
|
+
option :individual, :type => :boolean, :aliases => :i
|
28
|
+
option :corporation, :type => :boolean, :aliases => :c
|
29
|
+
option :tax_id, :type => :numeric
|
30
|
+
option :email
|
31
|
+
option :description
|
32
|
+
option :bank_account
|
33
|
+
option :country
|
34
|
+
option :account_number
|
35
|
+
option :routing_number
|
36
|
+
|
37
|
+
def create
|
38
|
+
options[:name] ||= ask('Recipient\'s Name:')
|
39
|
+
options[:email] ||= ask('Recipient\'s Email:')
|
40
|
+
options[:type] ||= if options.delete(:individual) then 'individual'
|
41
|
+
elsif options.delete(:corporation) then 'corporation'
|
42
|
+
else ask('Corporation? (Y/n)').downcase.start_with?('y') ? 'corporation' : 'individual'
|
43
|
+
end
|
44
|
+
options[:tax_id] ||= case options[:type]
|
45
|
+
when 'individual' then ask('Tax ID (SSN):')
|
46
|
+
when 'corporation' then ask('Tax ID (EIN):')
|
47
|
+
end
|
48
|
+
options[:tax_id].gsub!(/[^\d]/,"")
|
49
|
+
|
50
|
+
unless options[:bank_account]
|
51
|
+
options[:country] ||= 'US'
|
52
|
+
options[:account_number] ||= ask('Bank Account Number:')
|
53
|
+
options[:routing_number] ||= ask('Bank Routing Number:')
|
54
|
+
|
55
|
+
options[:bank_account] = {
|
56
|
+
:country => options.delete(:country),
|
57
|
+
:account_number => options.delete(:account_number),
|
58
|
+
:routing_number => options.delete(:routing_number)
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
super Stripe::Recipient, options
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Stripe
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Tokens < Command
|
5
|
+
|
6
|
+
desc "find ID", "Find a Token"
|
7
|
+
def find event_id
|
8
|
+
super Stripe::Event, event_id
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "create TYPE", "create a new token of type TYPE(card or account)"
|
12
|
+
option :card, :type => :hash
|
13
|
+
option :card_name
|
14
|
+
option :card_number
|
15
|
+
option :card_cvc
|
16
|
+
option :card_exp_month
|
17
|
+
option :card_exp_year
|
18
|
+
option :bank_account, :type => :hash
|
19
|
+
option :country
|
20
|
+
option :routing_number
|
21
|
+
option :account_number
|
22
|
+
def create type
|
23
|
+
case type
|
24
|
+
when 'card', 'credit_card'
|
25
|
+
unless options[:card]
|
26
|
+
options[:card_name] ||= ask('Name on Card:')
|
27
|
+
options[:card_number] ||= ask('Card number:')
|
28
|
+
options[:card_cvc] ||= ask('CVC code:')
|
29
|
+
options[:card_exp_month] ||= ask('expiration month:')
|
30
|
+
options[:card_exp_year] ||= ask('expiration year:')
|
31
|
+
|
32
|
+
options[:card] = {
|
33
|
+
:number => options.delete(:card_number),
|
34
|
+
:exp_month => options.delete(:card_exp_month),
|
35
|
+
:exp_year => options.delete(:card_exp_year),
|
36
|
+
:cvc => options.delete(:card_cvc),
|
37
|
+
:name => options.delete(:card_name)
|
38
|
+
}
|
39
|
+
options.delete(:bank_account)
|
40
|
+
options.delete(:country)
|
41
|
+
options.delete(:routing_number)
|
42
|
+
options.delete(:account_number)
|
43
|
+
end
|
44
|
+
when 'account', 'bank_account'
|
45
|
+
unless options[:bank_account]
|
46
|
+
options[:account_number] ||= ask('Account Number:')
|
47
|
+
options[:routing_number] ||= ask('Routing Number:')
|
48
|
+
options[:country] ||= 'US'
|
49
|
+
|
50
|
+
options[:bank_account] = {
|
51
|
+
:account_number => options.delete(:account_number),
|
52
|
+
:routing_number => options.delete(:routing_number),
|
53
|
+
:country => options.delete(:country)
|
54
|
+
}
|
55
|
+
options.delete(:card)
|
56
|
+
options.delete(:card_name)
|
57
|
+
options.delete(:card_number)
|
58
|
+
options.delete(:card_cvc)
|
59
|
+
options.delete(:card_exp_month)
|
60
|
+
options.delete(:card_exp_year)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
super Stripe::Token, options
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Stripe
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Transactions < Command
|
5
|
+
desc "list [TYPE]", "List transactions, optionaly filter by type: ( charges, refunds, adjustments, application_fees, application_fee_refunds, transfers, transfer_failures )"
|
6
|
+
method_options [:count, :offset, :type, :source]
|
7
|
+
option :count
|
8
|
+
option :offset
|
9
|
+
option :type, :enum => %w( charge refund adjustment application_fee application_fee_refund transfer transfer_failure )
|
10
|
+
option :source
|
11
|
+
|
12
|
+
def list type = 'all'
|
13
|
+
options[:type] = type.sub(/s$/,'') unless type == 'all'
|
14
|
+
super Stripe::BalanceTransaction, options
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "find ID", "Find a transaction"
|
18
|
+
def find transaction_id
|
19
|
+
super Stripe::BalanceTransaction, transaction_id
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Stripe
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Transfers < Command
|
5
|
+
desc "list", "List transfers"
|
6
|
+
option :count
|
7
|
+
option :offset
|
8
|
+
option :recipient
|
9
|
+
option :status, :enum => %w( pending paid failed )
|
10
|
+
|
11
|
+
def list
|
12
|
+
super Stripe::Transfer, options
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "find ID", "Find a transfer"
|
16
|
+
def find transfer_id
|
17
|
+
super Stripe::Transfer, transfer_id
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "create", "create a new outgoing money transfer"
|
21
|
+
option :amount
|
22
|
+
option :recipient
|
23
|
+
option :currency, :default => 'usd'
|
24
|
+
option :description
|
25
|
+
option :statement_descriptor
|
26
|
+
option :balance, :type => :boolean
|
27
|
+
def create
|
28
|
+
if options.delete(:balance) == true
|
29
|
+
options[:amount] = Stripe::Balance.retrieve(api_key).available.first.amount
|
30
|
+
else
|
31
|
+
options[:amount] ||= ask('Amount in Dollars:')
|
32
|
+
options[:amount] = (Float(options[:amount]) * 100).to_i
|
33
|
+
end
|
34
|
+
options[:recipient] ||= ask('Recipient ID or self:')
|
35
|
+
options[:recipient] = create_recipient[:id] if options[:recipient] == ""
|
36
|
+
super Stripe::Transfer, options
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def create_recipient
|
42
|
+
Stripe::CLI::Runner.start [ "recipients", "create" ]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/stripe/cli/commands.rb
CHANGED
@@ -3,8 +3,15 @@ module Stripe
|
|
3
3
|
module Commands
|
4
4
|
autoload :Charges, 'stripe/cli/commands/charges'
|
5
5
|
autoload :Customers, 'stripe/cli/commands/customers'
|
6
|
+
autoload :Tokens, 'stripe/cli/commands/tokens'
|
6
7
|
autoload :Plans, 'stripe/cli/commands/plans'
|
8
|
+
autoload :Coupons, 'stripe/cli/commands/coupons'
|
7
9
|
autoload :Events, 'stripe/cli/commands/events'
|
10
|
+
autoload :Invoices, 'stripe/cli/commands/invoices'
|
11
|
+
autoload :Transactions, 'stripe/cli/commands/transactions'
|
12
|
+
autoload :Balance, 'stripe/cli/commands/balance'
|
13
|
+
autoload :Recipients, 'stripe/cli/commands/recipients'
|
14
|
+
autoload :Transfers, 'stripe/cli/commands/transfers'
|
8
15
|
end
|
9
16
|
end
|
10
17
|
end
|
data/lib/stripe/cli/runner.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
module Stripe
|
2
2
|
module CLI
|
3
3
|
class Runner < Thor
|
4
|
-
register Commands::Charges, 'charges', 'charges', '
|
5
|
-
register Commands::Customers, 'customers', 'customers', '
|
6
|
-
register Commands::
|
7
|
-
register Commands::
|
4
|
+
register Commands::Charges, 'charges', 'charges', 'find, list, create, capture, & refund charges'
|
5
|
+
register Commands::Customers, 'customers', 'customers', 'find, list, create, & delete customers'
|
6
|
+
register Commands::Tokens, 'tokens', 'tokens', 'find & create tokens for bank accounts & credit cards'
|
7
|
+
register Commands::Plans, 'plans', 'plans', 'find, list, create, & delete plans'
|
8
|
+
register Commands::Coupons, 'coupons', 'coupons', 'find, list, create, & delete coupons'
|
9
|
+
register Commands::Events, 'events', 'events', 'find & list events'
|
10
|
+
register Commands::Invoices, 'invoices', 'invoices', 'find, list, pay, and close invoices'
|
11
|
+
register Commands::Transactions, 'transactions', 'transactions', 'find & list balance transactions'
|
12
|
+
register Commands::Balance, 'balance', 'balance', 'show currently available and pending balance amounts'
|
13
|
+
register Commands::Recipients, 'recipients', 'recipients', 'find, list, create & delete recipients'
|
14
|
+
register Commands::Transfers, 'transfers', 'transfers', 'find, list, & create transfers'
|
8
15
|
end
|
9
16
|
end
|
10
17
|
end
|
data/lib/stripe/cli/version.rb
CHANGED
data/output.png
ADDED
Binary file
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require_relative '../lib/stripe/cli.rb'
|
3
|
+
|
4
|
+
Stripe::CLI::Command.class_eval do
|
5
|
+
protected
|
6
|
+
def api_key
|
7
|
+
"stripe-key"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
describe Stripe::CLI::Command do
|
13
|
+
let(:_id_) { "random-id-string" }
|
14
|
+
|
15
|
+
describe "#find" do
|
16
|
+
it "calls super, passing in `Stripe::Charge` and an `id`" do
|
17
|
+
Stripe::Charge.should_receive(:retrieve).with( _id_, "stripe-key" )
|
18
|
+
|
19
|
+
Stripe::CLI::Runner.start ["charges", "find", _id_]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "calls super, passing in `Stripe::Plan` and an `id`" do
|
23
|
+
Stripe::Plan.should_receive(:retrieve).with( _id_, "stripe-key" )
|
24
|
+
|
25
|
+
Stripe::CLI::Runner.start ["plans", "find", _id_]
|
26
|
+
end
|
27
|
+
|
28
|
+
it "calls super, passing in `Stripe::Invoice` and an `id`" do
|
29
|
+
Stripe::Invoice.should_receive(:retrieve).with( _id_, "stripe-key" )
|
30
|
+
|
31
|
+
Stripe::CLI::Runner.start ["invoices", "find", _id_]
|
32
|
+
end
|
33
|
+
|
34
|
+
it "calls super, passing in `Stripe::Coupon` and an `id`" do
|
35
|
+
Stripe::Coupon.should_receive(:retrieve).with( _id_, "stripe-key" )
|
36
|
+
|
37
|
+
Stripe::CLI::Runner.start ["coupons", "find", _id_]
|
38
|
+
end
|
39
|
+
|
40
|
+
it "calls super, passing in `Stripe::Customer` and an `id`" do
|
41
|
+
Stripe::Customer.should_receive(:retrieve).with( _id_, "stripe-key" )
|
42
|
+
|
43
|
+
Stripe::CLI::Runner.start ["customers", "find", _id_]
|
44
|
+
end
|
45
|
+
|
46
|
+
it "calls super, passing in `Stripe::BalanceTransaction` and an `id`" do
|
47
|
+
Stripe::BalanceTransaction.should_receive(:retrieve).with( _id_, "stripe-key" )
|
48
|
+
|
49
|
+
Stripe::CLI::Runner.start ["transactions", "find", _id_]
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/stripe-cli.gemspec
CHANGED
@@ -6,9 +6,9 @@ require 'stripe/cli/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "stripe-cli"
|
8
8
|
spec.version = Stripe::CLI::VERSION
|
9
|
-
spec.authors = ["Alex MacCaw"]
|
10
|
-
spec.email = ["alex@stripe.com"]
|
11
|
-
spec.description = %q{Command line
|
9
|
+
spec.authors = ["Alex MacCaw", "Andy Cohen"]
|
10
|
+
spec.email = ["alex@stripe.com", "outlawandy@gmail.com"]
|
11
|
+
spec.description = %q{A `GIT style` Command line utility for accessing the Stripe API}
|
12
12
|
spec.summary = %q{Command line interface to Stripe}
|
13
13
|
spec.homepage = "https://stripe.com"
|
14
14
|
spec.license = "MIT"
|
@@ -22,7 +22,9 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
spec.add_dependency "thor", "~> 0.18.1"
|
25
|
-
spec.add_dependency "stripe", "~> 1.8.
|
25
|
+
spec.add_dependency "stripe", "~> 1.8.6"
|
26
26
|
spec.add_dependency "awesome_print"
|
27
27
|
spec.add_dependency "parseconfig"
|
28
|
+
spec.add_dependency "chronic"
|
29
|
+
spec.add_development_dependency "rspec"
|
28
30
|
end
|
metadata
CHANGED
@@ -1,20 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stripe-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alex MacCaw
|
8
|
+
- Andy Cohen
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
17
|
requirements:
|
19
18
|
- - ~>
|
20
19
|
- !ruby/object:Gem::Version
|
@@ -22,7 +21,6 @@ dependencies:
|
|
22
21
|
type: :development
|
23
22
|
prerelease: false
|
24
23
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
24
|
requirements:
|
27
25
|
- - ~>
|
28
26
|
- !ruby/object:Gem::Version
|
@@ -30,23 +28,20 @@ dependencies:
|
|
30
28
|
- !ruby/object:Gem::Dependency
|
31
29
|
name: rake
|
32
30
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
31
|
requirements:
|
35
|
-
- -
|
32
|
+
- - '>='
|
36
33
|
- !ruby/object:Gem::Version
|
37
34
|
version: '0'
|
38
35
|
type: :development
|
39
36
|
prerelease: false
|
40
37
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
38
|
requirements:
|
43
|
-
- -
|
39
|
+
- - '>='
|
44
40
|
- !ruby/object:Gem::Version
|
45
41
|
version: '0'
|
46
42
|
- !ruby/object:Gem::Dependency
|
47
43
|
name: thor
|
48
44
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
45
|
requirements:
|
51
46
|
- - ~>
|
52
47
|
- !ruby/object:Gem::Version
|
@@ -54,7 +49,6 @@ dependencies:
|
|
54
49
|
type: :runtime
|
55
50
|
prerelease: false
|
56
51
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
52
|
requirements:
|
59
53
|
- - ~>
|
60
54
|
- !ruby/object:Gem::Version
|
@@ -62,54 +56,77 @@ dependencies:
|
|
62
56
|
- !ruby/object:Gem::Dependency
|
63
57
|
name: stripe
|
64
58
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
59
|
requirements:
|
67
60
|
- - ~>
|
68
61
|
- !ruby/object:Gem::Version
|
69
|
-
version: 1.8.
|
62
|
+
version: 1.8.6
|
70
63
|
type: :runtime
|
71
64
|
prerelease: false
|
72
65
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
66
|
requirements:
|
75
67
|
- - ~>
|
76
68
|
- !ruby/object:Gem::Version
|
77
|
-
version: 1.8.
|
69
|
+
version: 1.8.6
|
78
70
|
- !ruby/object:Gem::Dependency
|
79
71
|
name: awesome_print
|
80
72
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
73
|
requirements:
|
83
|
-
- -
|
74
|
+
- - '>='
|
84
75
|
- !ruby/object:Gem::Version
|
85
76
|
version: '0'
|
86
77
|
type: :runtime
|
87
78
|
prerelease: false
|
88
79
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
80
|
requirements:
|
91
|
-
- -
|
81
|
+
- - '>='
|
92
82
|
- !ruby/object:Gem::Version
|
93
83
|
version: '0'
|
94
84
|
- !ruby/object:Gem::Dependency
|
95
85
|
name: parseconfig
|
96
86
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
87
|
requirements:
|
99
|
-
- -
|
88
|
+
- - '>='
|
100
89
|
- !ruby/object:Gem::Version
|
101
90
|
version: '0'
|
102
91
|
type: :runtime
|
103
92
|
prerelease: false
|
104
93
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
94
|
requirements:
|
107
|
-
- -
|
95
|
+
- - '>='
|
108
96
|
- !ruby/object:Gem::Version
|
109
97
|
version: '0'
|
110
|
-
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: chronic
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rspec
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: A `GIT style` Command line utility for accessing the Stripe API
|
111
127
|
email:
|
112
128
|
- alex@stripe.com
|
129
|
+
- outlawandy@gmail.com
|
113
130
|
executables:
|
114
131
|
- stripe
|
115
132
|
extensions: []
|
@@ -121,45 +138,50 @@ files:
|
|
121
138
|
- README.md
|
122
139
|
- Rakefile
|
123
140
|
- bin/stripe
|
141
|
+
- example.conf
|
142
|
+
- example.png
|
124
143
|
- lib/stripe/cli.rb
|
125
144
|
- lib/stripe/cli/command.rb
|
126
145
|
- lib/stripe/cli/commands.rb
|
146
|
+
- lib/stripe/cli/commands/balance.rb
|
127
147
|
- lib/stripe/cli/commands/charges.rb
|
148
|
+
- lib/stripe/cli/commands/coupons.rb
|
128
149
|
- lib/stripe/cli/commands/customers.rb
|
129
150
|
- lib/stripe/cli/commands/events.rb
|
151
|
+
- lib/stripe/cli/commands/invoices.rb
|
130
152
|
- lib/stripe/cli/commands/plans.rb
|
153
|
+
- lib/stripe/cli/commands/recipients.rb
|
154
|
+
- lib/stripe/cli/commands/tokens.rb
|
155
|
+
- lib/stripe/cli/commands/transactions.rb
|
156
|
+
- lib/stripe/cli/commands/transfers.rb
|
131
157
|
- lib/stripe/cli/runner.rb
|
132
158
|
- lib/stripe/cli/version.rb
|
159
|
+
- output.png
|
160
|
+
- spec/command_spec.rb
|
133
161
|
- stripe-cli.gemspec
|
134
162
|
homepage: https://stripe.com
|
135
163
|
licenses:
|
136
164
|
- MIT
|
165
|
+
metadata: {}
|
137
166
|
post_install_message:
|
138
167
|
rdoc_options: []
|
139
168
|
require_paths:
|
140
169
|
- lib
|
141
170
|
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
-
none: false
|
143
171
|
requirements:
|
144
|
-
- -
|
172
|
+
- - '>='
|
145
173
|
- !ruby/object:Gem::Version
|
146
174
|
version: '0'
|
147
|
-
segments:
|
148
|
-
- 0
|
149
|
-
hash: 68450767898144623
|
150
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
176
|
requirements:
|
153
|
-
- -
|
177
|
+
- - '>='
|
154
178
|
- !ruby/object:Gem::Version
|
155
179
|
version: '0'
|
156
|
-
segments:
|
157
|
-
- 0
|
158
|
-
hash: 68450767898144623
|
159
180
|
requirements: []
|
160
181
|
rubyforge_project:
|
161
|
-
rubygems_version: 1.
|
182
|
+
rubygems_version: 2.1.3
|
162
183
|
signing_key:
|
163
|
-
specification_version:
|
184
|
+
specification_version: 4
|
164
185
|
summary: Command line interface to Stripe
|
165
|
-
test_files:
|
186
|
+
test_files:
|
187
|
+
- spec/command_spec.rb
|