rvgp 0.3.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.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rubocop.yml +23 -0
  4. data/LICENSE +504 -0
  5. data/README.md +223 -0
  6. data/Rakefile +32 -0
  7. data/bin/rvgp +8 -0
  8. data/lib/rvgp/application/config.rb +159 -0
  9. data/lib/rvgp/application/descendant_registry.rb +122 -0
  10. data/lib/rvgp/application/status_output.rb +139 -0
  11. data/lib/rvgp/application.rb +170 -0
  12. data/lib/rvgp/base/command.rb +457 -0
  13. data/lib/rvgp/base/grid.rb +531 -0
  14. data/lib/rvgp/base/reader.rb +29 -0
  15. data/lib/rvgp/base/reconciler.rb +434 -0
  16. data/lib/rvgp/base/validation.rb +261 -0
  17. data/lib/rvgp/commands/cashflow.rb +160 -0
  18. data/lib/rvgp/commands/grid.rb +70 -0
  19. data/lib/rvgp/commands/ireconcile.rb +95 -0
  20. data/lib/rvgp/commands/new_project.rb +296 -0
  21. data/lib/rvgp/commands/plot.rb +41 -0
  22. data/lib/rvgp/commands/publish_gsheets.rb +83 -0
  23. data/lib/rvgp/commands/reconcile.rb +58 -0
  24. data/lib/rvgp/commands/rotate_year.rb +202 -0
  25. data/lib/rvgp/commands/validate_journal.rb +59 -0
  26. data/lib/rvgp/commands/validate_system.rb +44 -0
  27. data/lib/rvgp/commands.rb +160 -0
  28. data/lib/rvgp/dashboard.rb +252 -0
  29. data/lib/rvgp/fakers/fake_feed.rb +245 -0
  30. data/lib/rvgp/fakers/fake_journal.rb +57 -0
  31. data/lib/rvgp/fakers/fake_reconciler.rb +88 -0
  32. data/lib/rvgp/fakers/faker_helpers.rb +25 -0
  33. data/lib/rvgp/gem.rb +80 -0
  34. data/lib/rvgp/journal/commodity.rb +453 -0
  35. data/lib/rvgp/journal/complex_commodity.rb +214 -0
  36. data/lib/rvgp/journal/currency.rb +101 -0
  37. data/lib/rvgp/journal/journal.rb +141 -0
  38. data/lib/rvgp/journal/posting.rb +156 -0
  39. data/lib/rvgp/journal/pricer.rb +267 -0
  40. data/lib/rvgp/journal.rb +24 -0
  41. data/lib/rvgp/plot/gnuplot.rb +478 -0
  42. data/lib/rvgp/plot/google-drive/output_csv.rb +44 -0
  43. data/lib/rvgp/plot/google-drive/output_google_sheets.rb +434 -0
  44. data/lib/rvgp/plot/google-drive/sheet.rb +67 -0
  45. data/lib/rvgp/plot.rb +293 -0
  46. data/lib/rvgp/pta/hledger.rb +237 -0
  47. data/lib/rvgp/pta/ledger.rb +308 -0
  48. data/lib/rvgp/pta.rb +311 -0
  49. data/lib/rvgp/reconcilers/csv_reconciler.rb +424 -0
  50. data/lib/rvgp/reconcilers/journal_reconciler.rb +41 -0
  51. data/lib/rvgp/reconcilers/shorthand/finance_gem_hacks.rb +48 -0
  52. data/lib/rvgp/reconcilers/shorthand/international_atm.rb +152 -0
  53. data/lib/rvgp/reconcilers/shorthand/investment.rb +144 -0
  54. data/lib/rvgp/reconcilers/shorthand/mortgage.rb +195 -0
  55. data/lib/rvgp/utilities/grid_query.rb +190 -0
  56. data/lib/rvgp/utilities/yaml.rb +131 -0
  57. data/lib/rvgp/utilities.rb +44 -0
  58. data/lib/rvgp/validations/balance_validation.rb +68 -0
  59. data/lib/rvgp/validations/duplicate_tags_validation.rb +48 -0
  60. data/lib/rvgp/validations/uncategorized_validation.rb +15 -0
  61. data/lib/rvgp.rb +66 -0
  62. data/resources/README.MD/2022-cashflow-google.png +0 -0
  63. data/resources/README.MD/2022-cashflow.png +0 -0
  64. data/resources/README.MD/all-wealth-growth-google.png +0 -0
  65. data/resources/README.MD/all-wealth-growth.png +0 -0
  66. data/resources/gnuplot/default.yml +80 -0
  67. data/resources/i18n/en.yml +192 -0
  68. data/resources/iso-4217-currencies.json +171 -0
  69. data/resources/skel/Rakefile +5 -0
  70. data/resources/skel/app/grids/cashflow_grid.rb +27 -0
  71. data/resources/skel/app/grids/monthly_income_and_expenses_grid.rb +25 -0
  72. data/resources/skel/app/grids/wealth_growth_grid.rb +35 -0
  73. data/resources/skel/app/plots/cashflow.yml +33 -0
  74. data/resources/skel/app/plots/monthly-income-and-expenses.yml +17 -0
  75. data/resources/skel/app/plots/wealth-growth.yml +20 -0
  76. data/resources/skel/config/csv-format-acme-checking.yml +9 -0
  77. data/resources/skel/config/google-secrets.yml +5 -0
  78. data/resources/skel/config/rvgp.yml +0 -0
  79. data/resources/skel/journals/prices.db +0 -0
  80. data/rvgp.gemspec +6 -0
  81. data/test/assets/ledger_total_monthly_liabilities_with_empty.xml +383 -0
  82. data/test/assets/ledger_total_monthly_liabilities_with_empty2.xml +428 -0
  83. data/test/test_command_base.rb +61 -0
  84. data/test/test_commodity.rb +270 -0
  85. data/test/test_csv_reconciler.rb +60 -0
  86. data/test/test_currency.rb +24 -0
  87. data/test/test_fake_feed.rb +228 -0
  88. data/test/test_fake_journal.rb +98 -0
  89. data/test/test_fake_reconciler.rb +60 -0
  90. data/test/test_journal_parse.rb +545 -0
  91. data/test/test_ledger.rb +102 -0
  92. data/test/test_plot.rb +133 -0
  93. data/test/test_posting.rb +50 -0
  94. data/test/test_pricer.rb +139 -0
  95. data/test/test_pta_adapter.rb +575 -0
  96. data/test/test_utilities.rb +45 -0
  97. metadata +268 -0
metadata ADDED
@@ -0,0 +1,268 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rvgp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ platform: ruby
6
+ authors:
7
+ - Chris DeRose
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 5.16.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.16.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: yard
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.34
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.34
41
+ - !ruby/object:Gem::Dependency
42
+ name: redcarpet
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.6.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.6.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: open3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.1.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: shellwords
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: google-apis-sheets_v4
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.28.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.28.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: faker
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 3.2.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 3.2.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: finance
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 2.0.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 2.0.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: tty-table
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.12.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.12.0
139
+ description:
140
+ email: chris@chrisderose.com
141
+ executables:
142
+ - rvgp
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".rubocop.yml"
148
+ - LICENSE
149
+ - README.md
150
+ - Rakefile
151
+ - bin/rvgp
152
+ - lib/rvgp.rb
153
+ - lib/rvgp/application.rb
154
+ - lib/rvgp/application/config.rb
155
+ - lib/rvgp/application/descendant_registry.rb
156
+ - lib/rvgp/application/status_output.rb
157
+ - lib/rvgp/base/command.rb
158
+ - lib/rvgp/base/grid.rb
159
+ - lib/rvgp/base/reader.rb
160
+ - lib/rvgp/base/reconciler.rb
161
+ - lib/rvgp/base/validation.rb
162
+ - lib/rvgp/commands.rb
163
+ - lib/rvgp/commands/cashflow.rb
164
+ - lib/rvgp/commands/grid.rb
165
+ - lib/rvgp/commands/ireconcile.rb
166
+ - lib/rvgp/commands/new_project.rb
167
+ - lib/rvgp/commands/plot.rb
168
+ - lib/rvgp/commands/publish_gsheets.rb
169
+ - lib/rvgp/commands/reconcile.rb
170
+ - lib/rvgp/commands/rotate_year.rb
171
+ - lib/rvgp/commands/validate_journal.rb
172
+ - lib/rvgp/commands/validate_system.rb
173
+ - lib/rvgp/dashboard.rb
174
+ - lib/rvgp/fakers/fake_feed.rb
175
+ - lib/rvgp/fakers/fake_journal.rb
176
+ - lib/rvgp/fakers/fake_reconciler.rb
177
+ - lib/rvgp/fakers/faker_helpers.rb
178
+ - lib/rvgp/gem.rb
179
+ - lib/rvgp/journal.rb
180
+ - lib/rvgp/journal/commodity.rb
181
+ - lib/rvgp/journal/complex_commodity.rb
182
+ - lib/rvgp/journal/currency.rb
183
+ - lib/rvgp/journal/journal.rb
184
+ - lib/rvgp/journal/posting.rb
185
+ - lib/rvgp/journal/pricer.rb
186
+ - lib/rvgp/plot.rb
187
+ - lib/rvgp/plot/gnuplot.rb
188
+ - lib/rvgp/plot/google-drive/output_csv.rb
189
+ - lib/rvgp/plot/google-drive/output_google_sheets.rb
190
+ - lib/rvgp/plot/google-drive/sheet.rb
191
+ - lib/rvgp/pta.rb
192
+ - lib/rvgp/pta/hledger.rb
193
+ - lib/rvgp/pta/ledger.rb
194
+ - lib/rvgp/reconcilers/csv_reconciler.rb
195
+ - lib/rvgp/reconcilers/journal_reconciler.rb
196
+ - lib/rvgp/reconcilers/shorthand/finance_gem_hacks.rb
197
+ - lib/rvgp/reconcilers/shorthand/international_atm.rb
198
+ - lib/rvgp/reconcilers/shorthand/investment.rb
199
+ - lib/rvgp/reconcilers/shorthand/mortgage.rb
200
+ - lib/rvgp/utilities.rb
201
+ - lib/rvgp/utilities/grid_query.rb
202
+ - lib/rvgp/utilities/yaml.rb
203
+ - lib/rvgp/validations/balance_validation.rb
204
+ - lib/rvgp/validations/duplicate_tags_validation.rb
205
+ - lib/rvgp/validations/uncategorized_validation.rb
206
+ - resources/README.MD/2022-cashflow-google.png
207
+ - resources/README.MD/2022-cashflow.png
208
+ - resources/README.MD/all-wealth-growth-google.png
209
+ - resources/README.MD/all-wealth-growth.png
210
+ - resources/gnuplot/default.yml
211
+ - resources/i18n/en.yml
212
+ - resources/iso-4217-currencies.json
213
+ - resources/skel/Rakefile
214
+ - resources/skel/app/grids/cashflow_grid.rb
215
+ - resources/skel/app/grids/monthly_income_and_expenses_grid.rb
216
+ - resources/skel/app/grids/wealth_growth_grid.rb
217
+ - resources/skel/app/plots/cashflow.yml
218
+ - resources/skel/app/plots/monthly-income-and-expenses.yml
219
+ - resources/skel/app/plots/wealth-growth.yml
220
+ - resources/skel/config/csv-format-acme-checking.yml
221
+ - resources/skel/config/google-secrets.yml
222
+ - resources/skel/config/rvgp.yml
223
+ - resources/skel/journals/prices.db
224
+ - rvgp.gemspec
225
+ - test/assets/ledger_total_monthly_liabilities_with_empty.xml
226
+ - test/assets/ledger_total_monthly_liabilities_with_empty2.xml
227
+ - test/test_command_base.rb
228
+ - test/test_commodity.rb
229
+ - test/test_csv_reconciler.rb
230
+ - test/test_currency.rb
231
+ - test/test_fake_feed.rb
232
+ - test/test_fake_journal.rb
233
+ - test/test_fake_reconciler.rb
234
+ - test/test_journal_parse.rb
235
+ - test/test_ledger.rb
236
+ - test/test_plot.rb
237
+ - test/test_posting.rb
238
+ - test/test_pricer.rb
239
+ - test/test_pta_adapter.rb
240
+ - test/test_utilities.rb
241
+ homepage: https://github.com/brighton36/rvgp
242
+ licenses:
243
+ - LGPL-2.0
244
+ metadata:
245
+ source_code_uri: https://github.com/brighton36/rvgp
246
+ documentation_uri: https://www.rubydoc.info/gems/rvgp/0.3.2
247
+ post_install_message:
248
+ rdoc_options: []
249
+ require_paths:
250
+ - lib
251
+ required_ruby_version: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: 3.0.0
256
+ required_rubygems_version: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ requirements: []
262
+ rubygems_version: 3.3.25
263
+ signing_key:
264
+ specification_version: 4
265
+ summary: 'A workflow tool to: reconcile bank-downloaded csv''s into categorized pta
266
+ journals. Run finance validations on those journals. And generate csvs and plots
267
+ on the output.'
268
+ test_files: []