qrcode_pix_ruby 0.4.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4286f32be5f071b29e6f504834595f8f5dbc0ef1fdced824b76cfef429763c15
4
- data.tar.gz: 24c12240f5df73f9dff448f1521401e990b0b2f7d3b78b4131a6e5294e14f61e
3
+ metadata.gz: 43111a8d138179416cd393edf5b747f3f7a171a4668a9130192b7f295b9b67b9
4
+ data.tar.gz: 2c55f8ac2b7e52eb0faec98bdf56b64cf9081137de9341fb6afaa8da7ad653f0
5
5
  SHA512:
6
- metadata.gz: 71a8669277a170358742ffbb6bbfbb7dc6c0a4d6050640050ae793d329e6af5b535756672f27b156bd9dc22c0c1a465e371cdd0393097e09fdb2074101221f5c
7
- data.tar.gz: 93e4f118bd2df45b4ed2f56a012808a0d63e40e40e9c5283ad34baf4550684997d434694f14b7227b52f0bdfda42933f5e862763a66be2dd355013d3d154d5c7
6
+ metadata.gz: e1b002697b5de3cf6c688a29d06f8df6d90b2cc32502bdcb6409e7b177debe190321c48227175506255076e539337513b1526a870de12b9938ca982e4fda7c05
7
+ data.tar.gz: eb34d9eff0e6c22f9108fd00bf5ef5afaf8758815251e40c73331ef7caf5e50721e8cfb56d1ecbe2a48174868f4da0764b2987bc70477cbbd977e34f4e067e44
@@ -0,0 +1,27 @@
1
+ version: 2
2
+ mergeable:
3
+ - when: pull_request.opened
4
+ validate: []
5
+ pass:
6
+ - do: comment
7
+ payload:
8
+ body: Thanks for creating a pull request! A maintainer will review your changes shortly.
9
+ - when: pull_request.*
10
+ validate:
11
+ - do: description
12
+ no_empty:
13
+ enabled: true
14
+ message: Please, provide for us an awesome description to your PR 🤝
15
+ - do: dependent
16
+ changed:
17
+ file: '*'
18
+ required: ['CHANGELOG.md']
19
+ - when: schedule.repository
20
+ validate:
21
+ - do: stale
22
+ days: 3
23
+ type: pull_request, issues
24
+ pass:
25
+ - do: comment
26
+ payload:
27
+ body: It looks old 🕰️
@@ -18,7 +18,7 @@ jobs:
18
18
  runs-on: ubuntu-latest
19
19
  strategy:
20
20
  matrix:
21
- ruby-version: [2.3, 2.4, 2.5, 2.6, 2.7, 3.0]
21
+ ruby-version: [2.6, 2.7, 3.0]
22
22
  env:
23
23
  CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
24
24
  steps:
@@ -29,6 +29,9 @@ jobs:
29
29
  with:
30
30
  ruby-version: ${{ matrix.ruby-version }}
31
31
 
32
+ - name: Update rubygems
33
+ run: gem update --system
34
+
32
35
  - name: Install dependencies
33
36
  run: bundle install
34
37
 
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- NewCops: enable
2
+ NewCops: disable
3
3
  SuggestExtensions: false
4
4
  Exclude:
5
5
  - spec/*
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  ## [Unreleased]
2
2
 
3
+ - ...
4
+
5
+ ## [0.6.0]- 2023-04-14
6
+
7
+ - Fixed CI
8
+ - Fixed CRC16 algorithm with rjust with 4 digits
9
+
10
+ ## [0.5.0] - 2021-07-13
11
+
12
+ - Add option to pass Pix informations directly in initializer
13
+ - CI speedup
14
+ - Specs reorganization
15
+
3
16
  ## [0.4.0] - 2021-07-10
4
17
 
5
18
  - Add URL option for PIX, in order to generate dynamic QR Codes
data/Dockerfile CHANGED
@@ -1,5 +1,4 @@
1
- FROM ruby:3.0.0-alpine
2
- RUN apk update && apk add git
1
+ FROM ruby:3.0.0
3
2
  WORKDIR /app
4
3
  COPY . .
5
4
  RUN bundle install
data/README.md CHANGED
@@ -31,27 +31,45 @@ Or install it yourself as:
31
31
 
32
32
  ## Usage (examples)
33
33
 
34
+ ### Available parameters
35
+
36
+ - pix_key/url
37
+ - repeatable
38
+ - currency
39
+ - country_code
40
+ - description
41
+ - postal_code
42
+ - merchant_name
43
+ - merchant_city
44
+ - transaction_id
45
+ - amount
46
+
34
47
  ### Static QR Code
35
48
 
36
49
  ```ruby
37
50
  require 'qrcode_pix_ruby'
38
51
 
39
- pix = QrcodePixRuby::Payload.new
40
- pix.pix_key = 'minhachavedopix'
41
- pix.description = 'Pagamento do pedido 123456'
42
- pix.merchant_name = 'Fulano de Tal'
43
- pix.merchant_city = 'SAO PAULO'
44
- pix.transaction_id = 'TID12345'
45
- pix.amount = '100.00'
46
- pix.currency = '986'
47
- pix.country_code = 'BR'
48
- pix.postal_code = '01131010'
49
- pix.repeatable = false
52
+ pix = QrcodePixRuby::Payload.new(
53
+ pix_key: 'minhachavedopix',
54
+ description: 'Pagamento do pedido 123456',
55
+ merchant_name: 'Fulano de Tal',
56
+ merchant_city: 'SAO PAULO',
57
+ transaction_id: 'TID12345',
58
+ amount: '100.00',
59
+ currency: '986',
60
+ country_code: 'BR',
61
+ postal_code: '01131010',
62
+ repeatable: false
63
+ )
64
+
65
+ # If needed, change the attributes value later
66
+ pix.pix_key = 'minhaoutrachavepix'
67
+ pix.merchant_city = 'BRASILIA'
50
68
 
51
69
  # QRCode copia-e-cola
52
70
  puts pix.payload
53
71
 
54
- # QRCode para uso em imagens
72
+ # QRCode for images
55
73
  puts pix.base64
56
74
  ```
57
75
 
@@ -60,13 +78,18 @@ puts pix.base64
60
78
  ```ruby
61
79
  require 'qrcode_pix_ruby'
62
80
 
63
- pix = QrcodePixRuby::Payload.new
64
- pix.url = 'https://example.com'
65
- pix.merchant_name = 'Fulano de Tal'
66
- pix.merchant_city = 'SAO PAULO'
67
- pix.amount = '100.00'
68
- pix.transaction_id = 'TID12345'
69
- pix.repeatable = false
81
+ pix = QrcodePixRuby::Payload.new(
82
+ url: 'https://example.com',
83
+ merchant_name: 'Fulano de Tal',
84
+ merchant_city: 'SAO PAULO',
85
+ amount: '100.00',
86
+ transaction_id: 'TID12345',
87
+ repeatable: false
88
+ )
89
+
90
+ # If needed, change the attributes value later
91
+ pix.url = 'https://another-example.com'
92
+ pix.amount = 1.50
70
93
 
71
94
  # QRCode copia-e-cola
72
95
  puts pix.payload
@@ -77,7 +100,7 @@ puts pix.base64
77
100
 
78
101
  🚨 Important note: BACEN (Banco Central do Brasil) sets a variety of rules for each field in QRCode Payload (maximum number of characters, invalid values, mandatory and optional fields, and so on). So, pay attention that a QRCode payload+base64 generated by the gem can be valid, theorically, but may not be accepted in banking apps because of these restrictions (that are out of scope of gem).
79
102
 
80
- ## Execute tests/specs
103
+ ## Execute tests/specs locally
81
104
 
82
105
  To execute gem tests locally, use Docker with the commands below:
83
106
 
@@ -92,13 +115,18 @@ docker build -t qrcode_pix_ruby_specs .
92
115
  docker run -v $(pwd):/app/ -it qrcode_pix_ruby_specs
93
116
  ```
94
117
 
95
- ## Demo
118
+ ## Execute demo locally
96
119
 
97
- It's provided a simple demo app, in Heroku, that uses the gem always in latest commit. You can check and test your QRCodes here:
120
+ To execute demo locally, use Docker with the commands below:
98
121
 
99
- https://qrcode-pix-ruby.herokuapp.com
122
+ ```bash
123
+ git clone https://github.com/pedrofurtado/qrcode_pix_ruby
124
+ cd qrcode_pix_ruby/demo/
125
+ docker build -t qrcode_pix_ruby_demo .
100
126
 
101
- 🚨 Important note: The first page load can be slow, because of Heroku free tier. But don't worry, the demo works well 🤓
127
+ # Then, access http://localhost:3000 the see demo in action.
128
+ docker run -p 3000:3000 -it qrcode_pix_ruby_demo
129
+ ```
102
130
 
103
131
  ## Useful links
104
132
 
@@ -125,6 +153,9 @@ https://qrcode-pix-ruby.herokuapp.com
125
153
  * https://github.com/EnssureIT/faz-um-pix
126
154
  * https://github.com/jesobreira/pixkey
127
155
  * https://github.com/pedrinholemes/pix-br
156
+ * https://github.com/ceciliadeveza/gerarqrcodepix
157
+ * https://www.bcb.gov.br/content/estabilidadefinanceira/SiteAssets/Manual%20do%20BR%20Code.pdf
158
+ * https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf
128
159
 
129
160
  ## Contributing
130
161
 
data/Rakefile CHANGED
@@ -3,6 +3,6 @@
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
5
  require 'rubocop/rake_task'
6
- RSpec::Core::RakeTask.new(:spec)
7
6
  RuboCop::RakeTask.new
8
- task default: %i[spec rubocop]
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ task default: %i[rubocop spec]
data/demo/Dockerfile ADDED
@@ -0,0 +1,7 @@
1
+ FROM ruby:3.0.0-alpine
2
+ RUN apk update && apk add git
3
+ WORKDIR /app
4
+ COPY Gemfile Gemfile
5
+ COPY config.ru config.ru
6
+ RUN bundle install && bundle add webrick
7
+ CMD bundle exec rackup -p 3000 --host 0.0.0.0
data/demo/Gemfile CHANGED
@@ -3,3 +3,4 @@
3
3
  source 'https://rubygems.org'
4
4
  gem 'qrcode_pix_ruby', github: 'pedrofurtado/qrcode_pix_ruby', branch: 'master'
5
5
  gem 'rack'
6
+ gem 'rackup'
data/demo/config.ru CHANGED
@@ -4,22 +4,15 @@ require 'qrcode_pix_ruby'
4
4
 
5
5
  def generate_html_with(env)
6
6
  qrcode_data = Rack::Request.new(env).params
7
- payload = ''
8
- data_uri = ''
9
- pix = QrcodePixRuby::Payload.new
7
+ payload = ''
8
+ data_uri = ''
9
+ pix = QrcodePixRuby::Payload.new
10
10
 
11
11
  unless qrcode_data.empty?
12
- pix.pix_key = qrcode_data['pix_key'] unless qrcode_data['pix_key'].nil?
13
- pix.url = qrcode_data['url'] unless qrcode_data['url'].nil?
14
- pix.description = qrcode_data['description'] unless qrcode_data['description'].nil?
15
- pix.merchant_name = qrcode_data['merchant_name'] unless qrcode_data['merchant_name'].nil?
16
- pix.merchant_city = qrcode_data['merchant_city'] unless qrcode_data['merchant_city'].nil?
17
- pix.transaction_id = qrcode_data['transaction_id'] unless qrcode_data['transaction_id'].nil?
18
- pix.amount = qrcode_data['amount'] unless qrcode_data['amount'].nil?
19
- pix.currency = qrcode_data['currency'] unless qrcode_data['currency'].nil?
20
- pix.country_code = qrcode_data['country_code'] unless qrcode_data['country_code'].nil?
21
- pix.postal_code = qrcode_data['postal_code'] unless qrcode_data['postal_code'].nil?
22
- pix.repeatable = qrcode_data['repeatable'] == 't' unless qrcode_data['repeatable'].nil?
12
+ qrcode_data.keys.each do |key|
13
+ v = qrcode_data[key]
14
+ pix.public_send("#{key}=", key == 'repeatable' ? v == 't' : v) unless v.empty? || v.nil?
15
+ end
23
16
 
24
17
  payload = <<-HTML
25
18
  <label for='payload'>Payload</label>
@@ -29,7 +22,7 @@ def generate_html_with(env)
29
22
  </div>
30
23
  HTML
31
24
 
32
- data_uri = "<img style='max-width: 100%;' src='#{pix.base64}'>"
25
+ data_uri = "<img style='max-width: 100%; display: block; margin: 0 auto;' src='#{pix.base64}'>"
33
26
  end
34
27
 
35
28
  StringIO.new <<-HTML
@@ -61,60 +54,81 @@ def generate_html_with(env)
61
54
  <strong>QRCode informations</strong>
62
55
  <br>
63
56
  <br>
64
- <form action='https://qrcode-pix-ruby.herokuapp.com' method='post'>
57
+ <form action='/' method='post'>
65
58
  <div class='mb-3'>
66
- <label for='pix_key'>Pix key</label>
59
+ <div class='form-text'>
60
+ For static Pix, please fill the 'Pix key' field.<br>
61
+ For dynamic Pix, fill the 'URL' field.<br>
62
+ Do not fill both fields.
63
+ </div>
64
+ </div>
65
+ <div class='mb-3'>
66
+ <label for='pix_key'>* Pix key</label>
67
67
  <input type='text' class='form-control' id='pix_key' value='#{qrcode_data["pix_key"]}' name='pix_key'>
68
+ <div class='form-text'>
69
+ Formats of Pix keys:<br>
70
+ CPF: 12345678910 (only numbers)<br>
71
+ Phone: +5511912345678 (+55 + DDD + phone, only numbers)<br>
72
+ Email: example@mail.com<br>
73
+ Random: a6hf7jdk3nc8iK (generated by bank)
74
+ </div>
68
75
  </div>
76
+ <div class='mb-3 text-center'> or</div>
69
77
  <div class='mb-3'>
70
- <label for='url'>URL</label>
71
- <input type='text' class='form-control' id='url' value='#{qrcode_data["url"]}' name='url'>
78
+ <label for='url'>* URL</label>
79
+ <input type='url' pattern='https?:\/\/.+' class='form-control' id='url' value='#{qrcode_data["url"]}' name='url'>
72
80
  </div>
81
+ <hr>
73
82
  <div class='mb-3'>
74
- <label for='description'>Description</label>
75
- <input required type='text' class='form-control' id='description' value='#{qrcode_data["description"]}' name='description'>
83
+ <label for='merchant_name'>* Merchant name</label>
84
+ <input required maxlength='10' type='text' class='form-control' id='merchant_name' value='#{qrcode_data["merchant_name"]}' name='merchant_name'>
76
85
  </div>
77
86
  <div class='mb-3'>
78
- <label for='merchant_name'>Merchant name</label>
79
- <input required type='text' class='form-control' id='merchant_name' value='#{qrcode_data["merchant_name"]}' name='merchant_name'>
87
+ <label for='merchant_city'>* Merchant city</label>
88
+ <input required maxlength='10' type='text' class='form-control' id='merchant_city' value='#{qrcode_data["merchant_city"]}' name='merchant_city'>
80
89
  </div>
81
90
  <div class='mb-3'>
82
- <label for='merchant_city'>Merchant city</label>
83
- <input required type='text' class='form-control' id='merchant_city' value='#{qrcode_data["merchant_city"]}' name='merchant_city'>
91
+ <label for='country_code'>* Country</label>
92
+ <select required id='country_code' name='country_code' class='form-select'>
93
+ <option></option>
94
+ <option value='BR' #{qrcode_data['country_code'] == 'BR' ? 'selected' : ''}>Brazil</option>
95
+ </select>
84
96
  </div>
85
97
  <div class='mb-3'>
86
- <label for='transaction_id'>Transaction ID</label>
87
- <input required type='text' class='form-control' id='transaction_id' value='#{qrcode_data["transaction_id"]}' name='transaction_id'>
98
+ <label for='currency'>* Currency</label>
99
+ <select required id='currency' name='currency' class='form-select'>
100
+ <option></option>
101
+ <option value='986' #{qrcode_data['currency'] == '986' ? 'selected' : ''}>Brazilian Real (R$)</option>
102
+ </select>
88
103
  </div>
89
104
  <div class='mb-3'>
90
- <label for='amount'>Amount</label>
91
- <input required type='text' class='form-control' id='amount' value='#{qrcode_data["amount"]}' name='amount'>
105
+ <label for='description'>Description</label>
106
+ <input maxlength='10' type='text' class='form-control' id='description' value='#{qrcode_data["description"]}' name='description'>
92
107
  </div>
93
108
  <div class='mb-3'>
94
- <label for='currency'>Currency</label>
95
- <select required id='currency' name='currency' class='form-select'>
96
- <option value='986' selected>Brazilian Real (R$)</option>
97
- </select>
109
+ <label for='transaction_id'>Transaction ID</label>
110
+ <input maxlength='10' pattern='[a-zA-z0-9]*' type='text' class='form-control' id='transaction_id' value='#{qrcode_data["transaction_id"]}' name='transaction_id'>
111
+ <div class='form-text'>Only numbers and simple characters, without whitespaces.</div>
98
112
  </div>
99
113
  <div class='mb-3'>
100
- <label for='country_code'>Country</label>
101
- <select required id='country_code' name='country_code' class='form-select'>
102
- <option value='BR' selected>Brazil</option>
103
- </select>
114
+ <label for='amount'>Amount</label>
115
+ <input type='number' step='0.01' pattern='[0-9]{1,}\.[0-9][0-9]' class='form-control' id='amount' value='#{qrcode_data["amount"]}' name='amount'>
116
+ <div class='form-text'>Only numbers with 2 decimal places.</div>
104
117
  </div>
105
118
  <div class='mb-3'>
106
119
  <label for='postal_code'>Postal code</label>
107
- <input type='text' class='form-control' id='postal_code' value='#{qrcode_data["postal_code"]}' name='postal_code'>
120
+ <input maxlength='8' pattern='[0-9]{8}' type='tel' class='form-control' id='postal_code' value='#{qrcode_data["postal_code"]}' name='postal_code'>
121
+ <div class='form-text'>Only numbers.</div>
108
122
  </div>
109
123
  <div class='mb-3'>
110
- <label for='repeatable'>Repeatable?</label>
124
+ <label for='repeatable'>Can be paid multiple times?</label>
111
125
  <select required id='repeatable' name='repeatable' class='form-select'>
112
- <option selected></option>
113
- <option value='t'>Yes</option>
114
- <option value='f'>No</option>
126
+ <option></option>
127
+ <option value='t' #{qrcode_data['repeatable'] == 't' ? 'selected' : ''}>Yes</option>
128
+ <option value='f' #{qrcode_data['repeatable'] == 'f' ? 'selected' : ''}>No</option>
115
129
  </select>
116
130
  </div>
117
- <div class='d-grid gap-2'>
131
+ <div class='d-grid gap-2' style='padding-bottom: 20px;'>
118
132
  <button type='submit' class='btn btn-lg btn-primary'>Generate</button>
119
133
  </div>
120
134
  </form>
@@ -124,8 +138,6 @@ def generate_html_with(env)
124
138
  <br>
125
139
  <br>
126
140
  #{payload}
127
- <br>
128
- <br>
129
141
  #{data_uri}
130
142
  </div>
131
143
  </div>
@@ -3,6 +3,8 @@
3
3
  require 'rqrcode'
4
4
 
5
5
  module QrcodePixRuby
6
+ class PayloadArgumentError < ArgumentError; end
7
+
6
8
  class Payload
7
9
  ID_PAYLOAD_FORMAT_INDICATOR = '00'
8
10
  ID_POINT_OF_INITIATION_METHOD = '01'
@@ -22,17 +24,17 @@ module QrcodePixRuby
22
24
  ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID = '05'
23
25
  ID_CRC16 = '63'
24
26
 
25
- attr_accessor :pix_key,
26
- :url,
27
- :repeatable,
28
- :currency,
29
- :country_code,
30
- :description,
31
- :postal_code,
32
- :merchant_name,
33
- :merchant_city,
34
- :transaction_id,
35
- :amount
27
+ ATTRIBUTES = %i[pix_key url repeatable currency country_code description postal_code
28
+ merchant_name merchant_city transaction_id amount].freeze
29
+
30
+ def initialize(**kwargs)
31
+ verify_kwargs(kwargs.keys)
32
+
33
+ ATTRIBUTES.each do |attribute|
34
+ singleton_class.class_eval { attr_accessor attribute }
35
+ instance_variable_set("@#{attribute}", kwargs[attribute])
36
+ end
37
+ end
36
38
 
37
39
  def payload
38
40
  p = ''
@@ -68,6 +70,14 @@ module QrcodePixRuby
68
70
 
69
71
  private
70
72
 
73
+ def verify_kwargs(keys)
74
+ unknowns = keys - ATTRIBUTES
75
+
76
+ return unless unknowns.any?
77
+
78
+ raise QrcodePixRuby::PayloadArgumentError, "Unknown attributes: #{unknowns.join(', ')}"
79
+ end
80
+
71
81
  def emv(id, value)
72
82
  size = value.to_s.length.to_s.rjust(2, '0')
73
83
  "#{id}#{size}#{value}"
@@ -114,7 +124,7 @@ module QrcodePixRuby
114
124
  end
115
125
  end
116
126
 
117
- "#{ID_CRC16}04#{result.to_s(16).upcase}"
127
+ "#{ID_CRC16}04#{result.to_s(16).upcase.rjust(4, '0')}"
118
128
  end
119
129
  end
120
130
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module QrcodePixRuby
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.1'
5
5
  end
@@ -3,5 +3,4 @@
3
3
  require_relative 'qrcode_pix_ruby/version'
4
4
  require_relative 'qrcode_pix_ruby/payload'
5
5
 
6
- module QrcodePixRuby
7
- end
6
+ module QrcodePixRuby end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qrcode_pix_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Furtado
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2021-07-10 00:00:00.000000000 Z
14
+ date: 2023-04-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rqrcode
@@ -80,8 +80,8 @@ executables: []
80
80
  extensions: []
81
81
  extra_rdoc_files: []
82
82
  files:
83
+ - ".github/mergeable.yml"
83
84
  - ".github/workflows/ci.yml"
84
- - ".github/workflows/heroku.yml"
85
85
  - ".github/workflows/rubygems.yml"
86
86
  - ".gitignore"
87
87
  - ".rspec"
@@ -95,6 +95,7 @@ files:
95
95
  - Rakefile
96
96
  - bin/console
97
97
  - bin/setup
98
+ - demo/Dockerfile
98
99
  - demo/Gemfile
99
100
  - demo/config.ru
100
101
  - lib/qrcode_pix_ruby.rb
@@ -124,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
125
  - !ruby/object:Gem::Version
125
126
  version: '0'
126
127
  requirements: []
127
- rubygems_version: 3.2.22
128
+ rubygems_version: 3.4.10
128
129
  signing_key:
129
130
  specification_version: 4
130
131
  summary: Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro -
@@ -1,50 +0,0 @@
1
- name: Publish to Heroku
2
-
3
- on:
4
- push:
5
- branches: [master]
6
-
7
- jobs:
8
- deploy:
9
- runs-on: ubuntu-latest
10
- steps:
11
- - uses: actions/checkout@v2
12
-
13
- - name: Install Ruby
14
- uses: ruby/setup-ruby@v1
15
- with:
16
- ruby-version: 3.0
17
-
18
- - name: Install dependencies
19
- run: |
20
- cd demo/
21
- bundle install
22
- bundle update qrcode_pix_ruby
23
- cd ../
24
-
25
- - name: Define Heroku credentials
26
- run: |
27
- cat > ~/.netrc <<EOF
28
- machine api.heroku.com
29
- login $HEROKU_EMAIL
30
- password $HEROKU_API_KEY
31
- machine git.heroku.com
32
- login $HEROKU_EMAIL
33
- password $HEROKU_API_KEY
34
- EOF
35
- env:
36
- HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
37
- HEROKU_EMAIL: ${{ secrets.HEROKU_EMAIL }}
38
-
39
- - name: Define Heroku git remote
40
- run: heroku git:remote --app $HEROKU_APP_NAME
41
- env:
42
- HEROKU_APP_NAME: ${{ secrets.HEROKU_APP_NAME }}
43
-
44
- - name: Publish to Heroku
45
- run: |
46
- git config user.name 'Pedro Furtado'
47
- git config user.email 'pedro.felipe.azevedo.furtado@gmail.com'
48
- git add --all
49
- git commit -m 'Publish to Heroku'
50
- git push heroku `git subtree split --prefix demo master`:master --force