ynab_convert 2.0.0 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/publish.yml +36 -0
- data/.github/workflows/test.yml +31 -0
- data/Gemfile.lock +3 -3
- data/README.md +8 -4
- data/lib/ynab_convert/api_clients/currency_api.rb +1 -1
- data/lib/ynab_convert/version.rb +1 -1
- data/lib/ynab_convert.rb +19 -1
- metadata +5 -4
- data/.travis.yml +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6fb40d39bcae5a21d257b552d80d5c71b501980001957c669b9e8acb08bfdb2
|
4
|
+
data.tar.gz: b63d021d9863957894ec818bc325c91dce46137c05baf281902ec63e7d7deecb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 785a31e077df3ee9e4e0343144ecc87d185b0cc345272723eced2661d29cce2489560192d6e7efd12fdf361327ea5ad7e876cd5ec10e40025be052b9fed6fa3f
|
7
|
+
data.tar.gz: 0f97b6358e6280e8a40aefdae8a7349e9cf0e512df491cfdb86e5c3eb6c6d384753f6af18d6d2667e5d661025c6e7bd334de63da1d6d4d31738973c04f92d1bf
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
name: ruby
|
3
|
+
|
4
|
+
on:
|
5
|
+
push:
|
6
|
+
branches: [master]
|
7
|
+
|
8
|
+
permissions:
|
9
|
+
contents: read
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
publish:
|
13
|
+
name: Build + Publish
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
permissions:
|
16
|
+
packages: write
|
17
|
+
contents: read
|
18
|
+
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v3
|
21
|
+
- name: Set up Ruby
|
22
|
+
uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
25
|
+
- name: Run tests
|
26
|
+
run: bundle exec rake ci
|
27
|
+
- name: Publish to RubyGems
|
28
|
+
run: |
|
29
|
+
mkdir -p $HOME/.gem
|
30
|
+
touch $HOME/.gem/credentials
|
31
|
+
chmod 0600 $HOME/.gem/credentials
|
32
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
33
|
+
gem build *.gemspec
|
34
|
+
gem push *.gem
|
35
|
+
env:
|
36
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
---
|
2
|
+
name: ruby
|
3
|
+
|
4
|
+
on:
|
5
|
+
push:
|
6
|
+
branches: [master]
|
7
|
+
pull_request:
|
8
|
+
branches: [master]
|
9
|
+
|
10
|
+
permissions:
|
11
|
+
contents: read
|
12
|
+
|
13
|
+
jobs:
|
14
|
+
test:
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
strategy:
|
17
|
+
matrix:
|
18
|
+
ruby-version: ["2.6", "2.7"]
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v3
|
22
|
+
- name: Set up Ruby
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
25
|
+
# uses: ruby/setup-ruby@v1
|
26
|
+
uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: ${{ matrix.ruby-version }}
|
29
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
30
|
+
- name: Run tests
|
31
|
+
run: bundle exec rake ci
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ynab_convert (2.0.
|
4
|
+
ynab_convert (2.0.4)
|
5
5
|
i18n
|
6
6
|
slop
|
7
7
|
timecop
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
backport (1.1.2)
|
16
16
|
byebug (11.0.1)
|
17
17
|
coderay (1.1.2)
|
18
|
-
concurrent-ruby (1.1.
|
18
|
+
concurrent-ruby (1.1.10)
|
19
19
|
crack (0.4.5)
|
20
20
|
rexml
|
21
21
|
diff-lcs (1.3)
|
@@ -114,7 +114,7 @@ GEM
|
|
114
114
|
json (>= 1.8, < 3)
|
115
115
|
simplecov-html (~> 0.10.0)
|
116
116
|
simplecov-html (0.10.2)
|
117
|
-
slop (4.9.
|
117
|
+
slop (4.9.2)
|
118
118
|
solargraph (0.37.2)
|
119
119
|
backport (~> 1.1)
|
120
120
|
bundler (>= 1.17.2)
|
data/README.md
CHANGED
@@ -28,7 +28,6 @@ latest one on 2019-12-01.
|
|
28
28
|
---|---|---|---
|
29
29
|
`example` | Example Bank | N/A | Reference processor implementation, not a real institution
|
30
30
|
`n26` | N26 | [n26.com](n26.com) | N26 CSV statements, will convert EUR amounts to CHF (hardcoded for now)
|
31
|
-
`revolut` | Revolut Ltd | [revolut.com](https://www.revolut.com/) | The processor isn't aware of currencies. Make sure the statements processed with `revolut` are in the same currency that your YNAB is in
|
32
31
|
`ubs_chequing` | UBS Switzerland (private banking) | [ubs.ch](https://ubs.ch) | Private chequing and joint accounts
|
33
32
|
`ubs_credit` | UBS Switzerland (credit cards) | [ubs.ch](https://ubs.ch) | Both MasterCard and Visa
|
34
33
|
`wise` | Wise (Transferwise) cards | [wise.com](https://wise.com) | Performs currency conversion (hardcoded to CHF for now)
|
@@ -124,9 +123,14 @@ Or add `byebug` or `pry` statements in the code (works with guard and with rspec
|
|
124
123
|
If there is no processor for your financial institution, you can contribute one
|
125
124
|
to the project.
|
126
125
|
|
127
|
-
|
128
|
-
|
129
|
-
|
126
|
+
Looking at the other, real-world processors in `lib/processors` is helpful.
|
127
|
+
|
128
|
+
Note that if the processor name's case cannot be camel cased from its lowercase
|
129
|
+
string, it will need to be added manually in `lib/ynab_convert.rb` in the
|
130
|
+
`processor_class_name` method. For instance, the USB Chequing processor is
|
131
|
+
called with `-i ubs_chequing` from the command line. That makes the gem try to
|
132
|
+
use `Processors::UbsChequing` as the processor class, but it's actually called
|
133
|
+
`Processors::UBSChequing`.
|
130
134
|
|
131
135
|
Be sure to add tests to your processor as well before you make a PR.
|
132
136
|
|
@@ -8,7 +8,7 @@ module APIClients
|
|
8
8
|
class CurrencyAPI < APIClient
|
9
9
|
# The days that are missing from the API's otherwise normally available
|
10
10
|
# range
|
11
|
-
MISSING_DAYS = { '2021-09-14' => true }.freeze
|
11
|
+
MISSING_DAYS = { '2021-09-14' => true, '2022-05-01' => true }.freeze
|
12
12
|
|
13
13
|
def initialize
|
14
14
|
api_base_path = 'https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/'
|
data/lib/ynab_convert/version.rb
CHANGED
data/lib/ynab_convert.rb
CHANGED
@@ -6,6 +6,9 @@ require 'ynab_convert/logger'
|
|
6
6
|
require 'core_extensions/string'
|
7
7
|
require 'byebug' if ENV['YNAB_CONVERT_DEBUG']
|
8
8
|
|
9
|
+
# FIXME: The architecture in here is not the greatest... It should be
|
10
|
+
# redesigned entirely.
|
11
|
+
|
9
12
|
# The application
|
10
13
|
module YnabConvert
|
11
14
|
# Metadata about the gem
|
@@ -99,7 +102,22 @@ module YnabConvert
|
|
99
102
|
end
|
100
103
|
|
101
104
|
def processor_class_name
|
102
|
-
|
105
|
+
# Processor class names don't always match camelcasing the `-i` argument
|
106
|
+
# from the command line. For those classes that don't, a lookup is
|
107
|
+
# performed to find the proper class name.
|
108
|
+
institution = @options[:institution].to_sym
|
109
|
+
institution_to_classname = {
|
110
|
+
ubs_chequing: 'UBSChequing',
|
111
|
+
ubs_credit: 'UBSCredit'
|
112
|
+
}
|
113
|
+
|
114
|
+
classname = institution_to_classname.fetch(institution) do |el|
|
115
|
+
# If the class name is "regular", it will be found by camelcasing the
|
116
|
+
# name passed as the `-i` argument from the command line.
|
117
|
+
el.to_s.camel_case
|
118
|
+
end
|
119
|
+
|
120
|
+
"Processors::#{classname}"
|
103
121
|
end
|
104
122
|
|
105
123
|
def processor
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ynab_convert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- coaxial
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -261,13 +261,14 @@ executables:
|
|
261
261
|
extensions: []
|
262
262
|
extra_rdoc_files: []
|
263
263
|
files:
|
264
|
+
- ".github/workflows/publish.yml"
|
265
|
+
- ".github/workflows/test.yml"
|
264
266
|
- ".gitignore"
|
265
267
|
- ".rspec"
|
266
268
|
- ".rubocop.yml"
|
267
269
|
- ".ruby-gemset"
|
268
270
|
- ".ruby-version"
|
269
271
|
- ".solargraph.yml"
|
270
|
-
- ".travis.yml"
|
271
272
|
- Gemfile
|
272
273
|
- Gemfile.lock
|
273
274
|
- Guardfile
|
@@ -342,7 +343,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
342
343
|
- !ruby/object:Gem::Version
|
343
344
|
version: '0'
|
344
345
|
requirements: []
|
345
|
-
rubygems_version: 3.0.
|
346
|
+
rubygems_version: 3.0.3
|
346
347
|
signing_key:
|
347
348
|
specification_version: 4
|
348
349
|
summary: Convert online banking CSV files to YNAB 4 format.
|
data/.travis.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
---
|
2
|
-
language: ruby
|
3
|
-
cache: bundler
|
4
|
-
rvm:
|
5
|
-
- 2.6
|
6
|
-
- 2.7
|
7
|
-
before_install: gem install bundler
|
8
|
-
|
9
|
-
jobs:
|
10
|
-
include:
|
11
|
-
- stage: test
|
12
|
-
script: echo "Running tests for $(ruby -v)..." && bundle exec rake ci
|
13
|
-
- stage: gem release
|
14
|
-
rvm: 2.6
|
15
|
-
script: echo "Publishing to rubygems.org..."
|
16
|
-
deploy:
|
17
|
-
provider: rubygems
|
18
|
-
gem: ynab_convert
|
19
|
-
api_key: $RUBYGEMS_API_KEY
|
20
|
-
on: master
|