aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--.openapi-generator-ignore (renamed from ynab-api/.openapi-generator-ignore)0
-rw-r--r--.openapi-generator/VERSION (renamed from ynab-api/.openapi-generator/VERSION)0
-rw-r--r--.travis.yml (renamed from ynab-api/.travis.yml)0
-rw-r--r--Cargo.lock1927
-rw-r--r--Cargo.toml24
-rw-r--r--README.md (renamed from ynab-api/README.md)5
-rwxr-xr-xbin/regen-ynab-api27
-rw-r--r--data/openapi.yaml2
-rw-r--r--docs/Account.md (renamed from ynab-api/docs/Account.md)0
-rw-r--r--docs/AccountResponse.md (renamed from ynab-api/docs/AccountResponse.md)0
-rw-r--r--docs/AccountResponseData.md (renamed from ynab-api/docs/AccountResponseData.md)0
-rw-r--r--docs/AccountsApi.md (renamed from ynab-api/docs/AccountsApi.md)0
-rw-r--r--docs/AccountsResponse.md (renamed from ynab-api/docs/AccountsResponse.md)0
-rw-r--r--docs/AccountsResponseData.md (renamed from ynab-api/docs/AccountsResponseData.md)0
-rw-r--r--docs/BudgetDetail.md (renamed from ynab-api/docs/BudgetDetail.md)0
-rw-r--r--docs/BudgetDetailAllOf.md (renamed from ynab-api/docs/BudgetDetailAllOf.md)0
-rw-r--r--docs/BudgetDetailResponse.md (renamed from ynab-api/docs/BudgetDetailResponse.md)0
-rw-r--r--docs/BudgetDetailResponseData.md (renamed from ynab-api/docs/BudgetDetailResponseData.md)0
-rw-r--r--docs/BudgetSettings.md (renamed from ynab-api/docs/BudgetSettings.md)0
-rw-r--r--docs/BudgetSettingsResponse.md (renamed from ynab-api/docs/BudgetSettingsResponse.md)0
-rw-r--r--docs/BudgetSettingsResponseData.md (renamed from ynab-api/docs/BudgetSettingsResponseData.md)0
-rw-r--r--docs/BudgetSummary.md (renamed from ynab-api/docs/BudgetSummary.md)0
-rw-r--r--docs/BudgetSummaryResponse.md (renamed from ynab-api/docs/BudgetSummaryResponse.md)0
-rw-r--r--docs/BudgetSummaryResponseData.md (renamed from ynab-api/docs/BudgetSummaryResponseData.md)0
-rw-r--r--docs/BudgetsApi.md (renamed from ynab-api/docs/BudgetsApi.md)0
-rw-r--r--docs/BulkResponse.md (renamed from ynab-api/docs/BulkResponse.md)0
-rw-r--r--docs/BulkResponseData.md (renamed from ynab-api/docs/BulkResponseData.md)0
-rw-r--r--docs/BulkResponseDataBulk.md (renamed from ynab-api/docs/BulkResponseDataBulk.md)0
-rw-r--r--docs/BulkTransactions.md (renamed from ynab-api/docs/BulkTransactions.md)0
-rw-r--r--docs/CategoriesApi.md (renamed from ynab-api/docs/CategoriesApi.md)0
-rw-r--r--docs/CategoriesResponse.md (renamed from ynab-api/docs/CategoriesResponse.md)0
-rw-r--r--docs/CategoriesResponseData.md (renamed from ynab-api/docs/CategoriesResponseData.md)0
-rw-r--r--docs/Category.md (renamed from ynab-api/docs/Category.md)0
-rw-r--r--docs/CategoryGroup.md (renamed from ynab-api/docs/CategoryGroup.md)0
-rw-r--r--docs/CategoryGroupWithCategories.md (renamed from ynab-api/docs/CategoryGroupWithCategories.md)0
-rw-r--r--docs/CategoryGroupWithCategoriesAllOf.md (renamed from ynab-api/docs/CategoryGroupWithCategoriesAllOf.md)0
-rw-r--r--docs/CategoryResponse.md (renamed from ynab-api/docs/CategoryResponse.md)0
-rw-r--r--docs/CategoryResponseData.md (renamed from ynab-api/docs/CategoryResponseData.md)0
-rw-r--r--docs/CurrencyFormat.md (renamed from ynab-api/docs/CurrencyFormat.md)0
-rw-r--r--docs/DateFormat.md (renamed from ynab-api/docs/DateFormat.md)0
-rw-r--r--docs/DeprecatedApi.md (renamed from ynab-api/docs/DeprecatedApi.md)0
-rw-r--r--docs/ErrorDetail.md (renamed from ynab-api/docs/ErrorDetail.md)0
-rw-r--r--docs/ErrorResponse.md (renamed from ynab-api/docs/ErrorResponse.md)0
-rw-r--r--docs/HybridTransaction.md (renamed from ynab-api/docs/HybridTransaction.md)0
-rw-r--r--docs/HybridTransactionAllOf.md (renamed from ynab-api/docs/HybridTransactionAllOf.md)0
-rw-r--r--docs/HybridTransactionsResponse.md (renamed from ynab-api/docs/HybridTransactionsResponse.md)0
-rw-r--r--docs/HybridTransactionsResponseData.md (renamed from ynab-api/docs/HybridTransactionsResponseData.md)0
-rw-r--r--docs/MonthDetail.md (renamed from ynab-api/docs/MonthDetail.md)0
-rw-r--r--docs/MonthDetailAllOf.md (renamed from ynab-api/docs/MonthDetailAllOf.md)0
-rw-r--r--docs/MonthDetailResponse.md (renamed from ynab-api/docs/MonthDetailResponse.md)0
-rw-r--r--docs/MonthDetailResponseData.md (renamed from ynab-api/docs/MonthDetailResponseData.md)0
-rw-r--r--docs/MonthSummariesResponse.md (renamed from ynab-api/docs/MonthSummariesResponse.md)0
-rw-r--r--docs/MonthSummariesResponseData.md (renamed from ynab-api/docs/MonthSummariesResponseData.md)0
-rw-r--r--docs/MonthSummary.md (renamed from ynab-api/docs/MonthSummary.md)0
-rw-r--r--docs/MonthsApi.md (renamed from ynab-api/docs/MonthsApi.md)0
-rw-r--r--docs/Payee.md (renamed from ynab-api/docs/Payee.md)0
-rw-r--r--docs/PayeeLocation.md (renamed from ynab-api/docs/PayeeLocation.md)0
-rw-r--r--docs/PayeeLocationResponse.md (renamed from ynab-api/docs/PayeeLocationResponse.md)0
-rw-r--r--docs/PayeeLocationResponseData.md (renamed from ynab-api/docs/PayeeLocationResponseData.md)0
-rw-r--r--docs/PayeeLocationsApi.md (renamed from ynab-api/docs/PayeeLocationsApi.md)0
-rw-r--r--docs/PayeeLocationsResponse.md (renamed from ynab-api/docs/PayeeLocationsResponse.md)0
-rw-r--r--docs/PayeeLocationsResponseData.md (renamed from ynab-api/docs/PayeeLocationsResponseData.md)0
-rw-r--r--docs/PayeeResponse.md (renamed from ynab-api/docs/PayeeResponse.md)0
-rw-r--r--docs/PayeeResponseData.md (renamed from ynab-api/docs/PayeeResponseData.md)0
-rw-r--r--docs/PayeesApi.md (renamed from ynab-api/docs/PayeesApi.md)0
-rw-r--r--docs/PayeesResponse.md (renamed from ynab-api/docs/PayeesResponse.md)0
-rw-r--r--docs/PayeesResponseData.md (renamed from ynab-api/docs/PayeesResponseData.md)0
-rw-r--r--docs/SaveCategoryResponse.md (renamed from ynab-api/docs/SaveCategoryResponse.md)0
-rw-r--r--docs/SaveCategoryResponseData.md (renamed from ynab-api/docs/SaveCategoryResponseData.md)0
-rw-r--r--docs/SaveMonthCategory.md (renamed from ynab-api/docs/SaveMonthCategory.md)0
-rw-r--r--docs/SaveMonthCategoryWrapper.md (renamed from ynab-api/docs/SaveMonthCategoryWrapper.md)0
-rw-r--r--docs/SaveTransaction.md (renamed from ynab-api/docs/SaveTransaction.md)0
-rw-r--r--docs/SaveTransactionWrapper.md (renamed from ynab-api/docs/SaveTransactionWrapper.md)0
-rw-r--r--docs/SaveTransactionsResponse.md (renamed from ynab-api/docs/SaveTransactionsResponse.md)0
-rw-r--r--docs/SaveTransactionsResponseData.md (renamed from ynab-api/docs/SaveTransactionsResponseData.md)0
-rw-r--r--docs/SaveTransactionsWrapper.md (renamed from ynab-api/docs/SaveTransactionsWrapper.md)0
-rw-r--r--docs/ScheduledSubTransaction.md (renamed from ynab-api/docs/ScheduledSubTransaction.md)0
-rw-r--r--docs/ScheduledTransactionDetail.md (renamed from ynab-api/docs/ScheduledTransactionDetail.md)0
-rw-r--r--docs/ScheduledTransactionDetailAllOf.md (renamed from ynab-api/docs/ScheduledTransactionDetailAllOf.md)0
-rw-r--r--docs/ScheduledTransactionResponse.md (renamed from ynab-api/docs/ScheduledTransactionResponse.md)0
-rw-r--r--docs/ScheduledTransactionResponseData.md (renamed from ynab-api/docs/ScheduledTransactionResponseData.md)0
-rw-r--r--docs/ScheduledTransactionSummary.md (renamed from ynab-api/docs/ScheduledTransactionSummary.md)0
-rw-r--r--docs/ScheduledTransactionsApi.md (renamed from ynab-api/docs/ScheduledTransactionsApi.md)0
-rw-r--r--docs/ScheduledTransactionsResponse.md (renamed from ynab-api/docs/ScheduledTransactionsResponse.md)0
-rw-r--r--docs/ScheduledTransactionsResponseData.md (renamed from ynab-api/docs/ScheduledTransactionsResponseData.md)0
-rw-r--r--docs/SubTransaction.md (renamed from ynab-api/docs/SubTransaction.md)0
-rw-r--r--docs/TransactionDetail.md (renamed from ynab-api/docs/TransactionDetail.md)0
-rw-r--r--docs/TransactionDetailAllOf.md (renamed from ynab-api/docs/TransactionDetailAllOf.md)0
-rw-r--r--docs/TransactionResponse.md (renamed from ynab-api/docs/TransactionResponse.md)0
-rw-r--r--docs/TransactionResponseData.md (renamed from ynab-api/docs/TransactionResponseData.md)0
-rw-r--r--docs/TransactionSummary.md (renamed from ynab-api/docs/TransactionSummary.md)0
-rw-r--r--docs/TransactionsApi.md (renamed from ynab-api/docs/TransactionsApi.md)0
-rw-r--r--docs/TransactionsResponse.md (renamed from ynab-api/docs/TransactionsResponse.md)0
-rw-r--r--docs/TransactionsResponseData.md (renamed from ynab-api/docs/TransactionsResponseData.md)0
-rw-r--r--docs/UpdateTransaction.md (renamed from ynab-api/docs/UpdateTransaction.md)0
-rw-r--r--docs/UpdateTransactionWrapper.md (renamed from ynab-api/docs/UpdateTransactionWrapper.md)0
-rw-r--r--docs/UpdateTransactionsResponse.md (renamed from ynab-api/docs/UpdateTransactionsResponse.md)0
-rw-r--r--docs/UpdateTransactionsWrapper.md (renamed from ynab-api/docs/UpdateTransactionsWrapper.md)0
-rw-r--r--docs/User.md (renamed from ynab-api/docs/User.md)0
-rw-r--r--docs/UserApi.md (renamed from ynab-api/docs/UserApi.md)0
-rw-r--r--docs/UserResponse.md (renamed from ynab-api/docs/UserResponse.md)0
-rw-r--r--docs/UserResponseData.md (renamed from ynab-api/docs/UserResponseData.md)0
-rw-r--r--git_push.sh (renamed from ynab-api/git_push.sh)0
-rw-r--r--src/apis/accounts_api.rs (renamed from ynab-api/src/apis/accounts_api.rs)0
-rw-r--r--src/apis/budgets_api.rs (renamed from ynab-api/src/apis/budgets_api.rs)0
-rw-r--r--src/apis/categories_api.rs (renamed from ynab-api/src/apis/categories_api.rs)0
-rw-r--r--src/apis/client.rs (renamed from ynab-api/src/apis/client.rs)0
-rw-r--r--src/apis/configuration.rs (renamed from ynab-api/src/apis/configuration.rs)0
-rw-r--r--src/apis/deprecated_api.rs (renamed from ynab-api/src/apis/deprecated_api.rs)0
-rw-r--r--src/apis/mod.rs (renamed from ynab-api/src/apis/mod.rs)0
-rw-r--r--src/apis/months_api.rs (renamed from ynab-api/src/apis/months_api.rs)0
-rw-r--r--src/apis/payee_locations_api.rs (renamed from ynab-api/src/apis/payee_locations_api.rs)0
-rw-r--r--src/apis/payees_api.rs (renamed from ynab-api/src/apis/payees_api.rs)0
-rw-r--r--src/apis/scheduled_transactions_api.rs (renamed from ynab-api/src/apis/scheduled_transactions_api.rs)0
-rw-r--r--src/apis/transactions_api.rs (renamed from ynab-api/src/apis/transactions_api.rs)0
-rw-r--r--src/apis/user_api.rs (renamed from ynab-api/src/apis/user_api.rs)0
-rw-r--r--src/app.rs46
-rw-r--r--src/lib.rs (renamed from ynab-api/src/lib.rs)0
-rw-r--r--src/main.rs37
-rw-r--r--src/models/account.rs (renamed from ynab-api/src/models/account.rs)0
-rw-r--r--src/models/account_response.rs (renamed from ynab-api/src/models/account_response.rs)0
-rw-r--r--src/models/account_response_data.rs (renamed from ynab-api/src/models/account_response_data.rs)0
-rw-r--r--src/models/accounts_response.rs (renamed from ynab-api/src/models/accounts_response.rs)0
-rw-r--r--src/models/accounts_response_data.rs (renamed from ynab-api/src/models/accounts_response_data.rs)0
-rw-r--r--src/models/budget_detail.rs (renamed from ynab-api/src/models/budget_detail.rs)0
-rw-r--r--src/models/budget_detail_all_of.rs (renamed from ynab-api/src/models/budget_detail_all_of.rs)0
-rw-r--r--src/models/budget_detail_response.rs (renamed from ynab-api/src/models/budget_detail_response.rs)0
-rw-r--r--src/models/budget_detail_response_data.rs (renamed from ynab-api/src/models/budget_detail_response_data.rs)0
-rw-r--r--src/models/budget_settings.rs (renamed from ynab-api/src/models/budget_settings.rs)0
-rw-r--r--src/models/budget_settings_response.rs (renamed from ynab-api/src/models/budget_settings_response.rs)0
-rw-r--r--src/models/budget_settings_response_data.rs (renamed from ynab-api/src/models/budget_settings_response_data.rs)0
-rw-r--r--src/models/budget_summary.rs (renamed from ynab-api/src/models/budget_summary.rs)0
-rw-r--r--src/models/budget_summary_response.rs (renamed from ynab-api/src/models/budget_summary_response.rs)0
-rw-r--r--src/models/budget_summary_response_data.rs (renamed from ynab-api/src/models/budget_summary_response_data.rs)0
-rw-r--r--src/models/bulk_response.rs (renamed from ynab-api/src/models/bulk_response.rs)0
-rw-r--r--src/models/bulk_response_data.rs (renamed from ynab-api/src/models/bulk_response_data.rs)0
-rw-r--r--src/models/bulk_response_data_bulk.rs (renamed from ynab-api/src/models/bulk_response_data_bulk.rs)0
-rw-r--r--src/models/bulk_transactions.rs (renamed from ynab-api/src/models/bulk_transactions.rs)0
-rw-r--r--src/models/categories_response.rs (renamed from ynab-api/src/models/categories_response.rs)0
-rw-r--r--src/models/categories_response_data.rs (renamed from ynab-api/src/models/categories_response_data.rs)0
-rw-r--r--src/models/category.rs (renamed from ynab-api/src/models/category.rs)0
-rw-r--r--src/models/category_group.rs (renamed from ynab-api/src/models/category_group.rs)0
-rw-r--r--src/models/category_group_with_categories.rs (renamed from ynab-api/src/models/category_group_with_categories.rs)0
-rw-r--r--src/models/category_group_with_categories_all_of.rs (renamed from ynab-api/src/models/category_group_with_categories_all_of.rs)0
-rw-r--r--src/models/category_response.rs (renamed from ynab-api/src/models/category_response.rs)0
-rw-r--r--src/models/category_response_data.rs (renamed from ynab-api/src/models/category_response_data.rs)0
-rw-r--r--src/models/currency_format.rs (renamed from ynab-api/src/models/currency_format.rs)0
-rw-r--r--src/models/date_format.rs (renamed from ynab-api/src/models/date_format.rs)0
-rw-r--r--src/models/error_detail.rs (renamed from ynab-api/src/models/error_detail.rs)0
-rw-r--r--src/models/error_response.rs (renamed from ynab-api/src/models/error_response.rs)0
-rw-r--r--src/models/hybrid_transaction.rs (renamed from ynab-api/src/models/hybrid_transaction.rs)0
-rw-r--r--src/models/hybrid_transaction_all_of.rs (renamed from ynab-api/src/models/hybrid_transaction_all_of.rs)0
-rw-r--r--src/models/hybrid_transactions_response.rs (renamed from ynab-api/src/models/hybrid_transactions_response.rs)0
-rw-r--r--src/models/hybrid_transactions_response_data.rs (renamed from ynab-api/src/models/hybrid_transactions_response_data.rs)0
-rw-r--r--src/models/mod.rs (renamed from ynab-api/src/models/mod.rs)0
-rw-r--r--src/models/month_detail.rs (renamed from ynab-api/src/models/month_detail.rs)0
-rw-r--r--src/models/month_detail_all_of.rs (renamed from ynab-api/src/models/month_detail_all_of.rs)0
-rw-r--r--src/models/month_detail_response.rs (renamed from ynab-api/src/models/month_detail_response.rs)0
-rw-r--r--src/models/month_detail_response_data.rs (renamed from ynab-api/src/models/month_detail_response_data.rs)0
-rw-r--r--src/models/month_summaries_response.rs (renamed from ynab-api/src/models/month_summaries_response.rs)0
-rw-r--r--src/models/month_summaries_response_data.rs (renamed from ynab-api/src/models/month_summaries_response_data.rs)0
-rw-r--r--src/models/month_summary.rs (renamed from ynab-api/src/models/month_summary.rs)0
-rw-r--r--src/models/payee.rs (renamed from ynab-api/src/models/payee.rs)0
-rw-r--r--src/models/payee_location.rs (renamed from ynab-api/src/models/payee_location.rs)0
-rw-r--r--src/models/payee_location_response.rs (renamed from ynab-api/src/models/payee_location_response.rs)0
-rw-r--r--src/models/payee_location_response_data.rs (renamed from ynab-api/src/models/payee_location_response_data.rs)0
-rw-r--r--src/models/payee_locations_response.rs (renamed from ynab-api/src/models/payee_locations_response.rs)0
-rw-r--r--src/models/payee_locations_response_data.rs (renamed from ynab-api/src/models/payee_locations_response_data.rs)0
-rw-r--r--src/models/payee_response.rs (renamed from ynab-api/src/models/payee_response.rs)0
-rw-r--r--src/models/payee_response_data.rs (renamed from ynab-api/src/models/payee_response_data.rs)0
-rw-r--r--src/models/payees_response.rs (renamed from ynab-api/src/models/payees_response.rs)0
-rw-r--r--src/models/payees_response_data.rs (renamed from ynab-api/src/models/payees_response_data.rs)0
-rw-r--r--src/models/save_category_response.rs (renamed from ynab-api/src/models/save_category_response.rs)0
-rw-r--r--src/models/save_category_response_data.rs (renamed from ynab-api/src/models/save_category_response_data.rs)0
-rw-r--r--src/models/save_month_category.rs (renamed from ynab-api/src/models/save_month_category.rs)0
-rw-r--r--src/models/save_month_category_wrapper.rs (renamed from ynab-api/src/models/save_month_category_wrapper.rs)0
-rw-r--r--src/models/save_transaction.rs (renamed from ynab-api/src/models/save_transaction.rs)0
-rw-r--r--src/models/save_transaction_wrapper.rs (renamed from ynab-api/src/models/save_transaction_wrapper.rs)0
-rw-r--r--src/models/save_transactions_response.rs (renamed from ynab-api/src/models/save_transactions_response.rs)0
-rw-r--r--src/models/save_transactions_response_data.rs (renamed from ynab-api/src/models/save_transactions_response_data.rs)0
-rw-r--r--src/models/save_transactions_wrapper.rs (renamed from ynab-api/src/models/save_transactions_wrapper.rs)0
-rw-r--r--src/models/scheduled_sub_transaction.rs (renamed from ynab-api/src/models/scheduled_sub_transaction.rs)0
-rw-r--r--src/models/scheduled_transaction_detail.rs (renamed from ynab-api/src/models/scheduled_transaction_detail.rs)0
-rw-r--r--src/models/scheduled_transaction_detail_all_of.rs (renamed from ynab-api/src/models/scheduled_transaction_detail_all_of.rs)0
-rw-r--r--src/models/scheduled_transaction_response.rs (renamed from ynab-api/src/models/scheduled_transaction_response.rs)0
-rw-r--r--src/models/scheduled_transaction_response_data.rs (renamed from ynab-api/src/models/scheduled_transaction_response_data.rs)0
-rw-r--r--src/models/scheduled_transaction_summary.rs (renamed from ynab-api/src/models/scheduled_transaction_summary.rs)0
-rw-r--r--src/models/scheduled_transactions_response.rs (renamed from ynab-api/src/models/scheduled_transactions_response.rs)0
-rw-r--r--src/models/scheduled_transactions_response_data.rs (renamed from ynab-api/src/models/scheduled_transactions_response_data.rs)0
-rw-r--r--src/models/sub_transaction.rs (renamed from ynab-api/src/models/sub_transaction.rs)0
-rw-r--r--src/models/transaction_detail.rs (renamed from ynab-api/src/models/transaction_detail.rs)0
-rw-r--r--src/models/transaction_detail_all_of.rs (renamed from ynab-api/src/models/transaction_detail_all_of.rs)0
-rw-r--r--src/models/transaction_response.rs (renamed from ynab-api/src/models/transaction_response.rs)0
-rw-r--r--src/models/transaction_response_data.rs (renamed from ynab-api/src/models/transaction_response_data.rs)0
-rw-r--r--src/models/transaction_summary.rs (renamed from ynab-api/src/models/transaction_summary.rs)0
-rw-r--r--src/models/transactions_response.rs (renamed from ynab-api/src/models/transactions_response.rs)0
-rw-r--r--src/models/transactions_response_data.rs (renamed from ynab-api/src/models/transactions_response_data.rs)0
-rw-r--r--src/models/update_transaction.rs (renamed from ynab-api/src/models/update_transaction.rs)0
-rw-r--r--src/models/update_transaction_wrapper.rs (renamed from ynab-api/src/models/update_transaction_wrapper.rs)0
-rw-r--r--src/models/update_transactions_response.rs (renamed from ynab-api/src/models/update_transactions_response.rs)0
-rw-r--r--src/models/update_transactions_wrapper.rs (renamed from ynab-api/src/models/update_transactions_wrapper.rs)0
-rw-r--r--src/models/user.rs (renamed from ynab-api/src/models/user.rs)0
-rw-r--r--src/models/user_response.rs (renamed from ynab-api/src/models/user_response.rs)0
-rw-r--r--src/models/user_response_data.rs (renamed from ynab-api/src/models/user_response_data.rs)0
-rw-r--r--src/paths.rs56
-rw-r--r--src/views.rs5
-rw-r--r--src/views/txn_table.rs151
-rw-r--r--src/views/txn_tables.rs353
-rw-r--r--src/views/util.rs5
-rw-r--r--src/ynab.rs10
-rw-r--r--src/ynab/budget.rs216
-rw-r--r--src/ynab/client.rs76
-rw-r--r--src/ynab/transaction.rs101
-rw-r--r--src/ynab/util.rs6
-rw-r--r--ynab-api/.gitignore3
-rw-r--r--ynab-api/Cargo.toml13
217 files changed, 44 insertions, 3022 deletions
diff --git a/.gitignore b/.gitignore
index 53eaa21..6aa1064 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
-/target
+/target/
**/*.rs.bk
+Cargo.lock
diff --git a/ynab-api/.openapi-generator-ignore b/.openapi-generator-ignore
index 7484ee5..7484ee5 100644
--- a/ynab-api/.openapi-generator-ignore
+++ b/.openapi-generator-ignore
diff --git a/ynab-api/.openapi-generator/VERSION b/.openapi-generator/VERSION
index aa31e71..aa31e71 100644
--- a/ynab-api/.openapi-generator/VERSION
+++ b/.openapi-generator/VERSION
diff --git a/ynab-api/.travis.yml b/.travis.yml
index 22761ba..22761ba 100644
--- a/ynab-api/.travis.yml
+++ b/.travis.yml
diff --git a/Cargo.lock b/Cargo.lock
deleted file mode 100644
index 17dc685..0000000
--- a/Cargo.lock
+++ /dev/null
@@ -1,1927 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-[[package]]
-name = "adler32"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "aho-corasick"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "arc-swap"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "array-macro"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "arrayref"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "arrayvec"
-version = "0.4.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "autocfg"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "backtrace"
-version = "0.3.34"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)",
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "backtrace-sys"
-version = "0.1.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "base64"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "bitflags"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "blake2b_simd"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "byteorder"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "bytes"
-version = "0.4.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "c2-chacha"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "cc"
-version = "1.0.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "cfg-if"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "chrono"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "cloudabi"
-version = "0.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "constant_time_eq"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "cookie"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "cookie_store"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
- "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "core-foundation"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "crc32fast"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-channel"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-queue"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.6.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "cursive"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "enum-map 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "enumset 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "hashbrown 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "ncurses 5.99.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "signal-hook 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "xi-unicode 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "cursive_table_view"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cursive 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "darling"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "darling_macro 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "darling_core"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "darling_macro"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "directories"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "dirs-sys"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "doc-comment"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "dtoa"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "either"
-version = "1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "encoding_rs"
-version = "0.8.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "enum-map"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "enum-map-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "enum-map-internals 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "enum-map-derive"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "enum-map-internals"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "array-macro 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "enumset"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "enumset_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "enumset_derive"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "error-chain"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)",
- "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "failure"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)",
- "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "failure_derive"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
- "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "flate2"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "fnv"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "fuchsia-cprng"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "fuchsia-zircon"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "fuchsia-zircon-sys"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "futures"
-version = "0.1.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "futures-cpupool"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "h2"
-version = "0.1.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
- "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "http"
-version = "0.1.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "http-body"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "httparse"
-version = "1.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "hyper"
-version = "0.12.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
- "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "hyper-tls"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)",
- "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ident_case"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "idna"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "indexmap"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "iovec"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "itoa"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "kernel32-sys"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "libc"
-version = "0.2.62"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "lock_api"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "log"
-version = "0.4.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "maplit"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "matches"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "memchr"
-version = "2.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "memoffset"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "mime"
-version = "0.3.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "mime_guess"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "miniz_oxide"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "mio"
-version = "0.6.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "miow"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "native-tls"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ncurses"
-version = "5.99.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "net2"
-version = "0.2.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "nodrop"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "num"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "num-complex 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-complex"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-integer"
-version = "0.1.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-iter"
-version = "0.1.39"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-rational"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "openssl"
-version = "0.10.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.49"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "owning_ref"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "parking_lot"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "percent-encoding"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "pkg-config"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "ppv-lite86"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "proc-macro2"
-version = "0.4.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "publicsuffix"
-version = "1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "quote"
-version = "0.6.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand"
-version = "0.6.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "rand_core"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_isaac"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_jitter"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_os"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_pcg"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand_xorshift"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rdrand"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.1.56"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "redox_users"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
- "rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "remove_dir_all"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "reqwest"
-version = "0.9.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)",
- "flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
- "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)",
- "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rust-argon2"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rustc-demangle"
-version = "0.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "rustc_version"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ryu"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "schannel"
-version = "0.1.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "scopeguard"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "scopeguard"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "security-framework"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "semver"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "semver-parser"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "serde"
-version = "1.0.99"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.99"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "serde_urlencoded"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "signal-hook"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "signal-hook-registry"
-version = "1.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "arc-swap 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "slab"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "smallvec"
-version = "0.6.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "snafu"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)",
- "doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "snafu-derive 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "snafu-derive"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "stable_deref_trait"
-version = "1.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "string"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "strsim"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "syn"
-version = "0.15.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "synstructure"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tempfile"
-version = "3.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
- "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "term_size"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "thread_local"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "time"
-version = "0.1.42"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio"
-version = "0.1.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-buf"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-current-thread"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-executor"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-io"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-reactor"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-sync"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-tcp"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-threadpool"
-version = "0.1.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tokio-timer"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "toml"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "try-lock"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "try_from"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "unicase"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "unicode-bidi"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "unicode-normalization"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "unicode-segmentation"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "unicode-width"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "unicode-xid"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "url"
-version = "1.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "uuid"
-version = "0.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "vcpkg"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "version_check"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "want"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "wasi"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi"
-version = "0.2.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "winapi-build"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winreg"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ws2_32-sys"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "xi-unicode"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "ynab-api"
-version = "1.0.0"
-dependencies = [
- "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
- "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ynab-reimbursements"
-version = "0.1.0"
-dependencies = [
- "cursive 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cursive_table_view 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "snafu 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "ynab-api 1.0.0",
-]
-
-[metadata]
-"checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c"
-"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
-"checksum arc-swap 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "854ede29f7a0ce90519fb2439d030320c6201119b87dab0ee96044603e1130b9"
-"checksum array-macro 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7c4ff37a25fb442a1fecfd399be0dde685558bca30fb998420532889a36852d2"
-"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee"
-"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba"
-"checksum autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "22130e92352b948e7e82a49cdb0aa94f2211761117f29e052dd397c1ac33542b"
-"checksum backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)" = "b5164d292487f037ece34ec0de2fcede2faa162f085dd96d2385ab81b12765ba"
-"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b"
-"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
-"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd"
-"checksum blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "461f4b879a8eb70c1debf7d0788a9a5ff15f1ea9d25925fea264ef4258bed6b2"
-"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
-"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
-"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
-"checksum cc 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "b548a4ee81fccb95919d4e22cfea83c7693ebfd78f0495493178db20b3139da7"
-"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
-"checksum chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "77d81f58b7301084de3b958691458a53c3f7e0b1d702f77e550b6a88e3a88abe"
-"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
-"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
-"checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
-"checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c"
-"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d"
-"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
-"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
-"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa"
-"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71"
-"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9"
-"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
-"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
-"checksum cursive 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b7ecc7282b5361471b607c26f44148205607e26d48a2fc65bd16e7619b1ebb78"
-"checksum cursive_table_view 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9dd5f62c7bef9a9fbbe65b39c5a7453e394bfca01034b7c22ac07cc330005a03"
-"checksum darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6"
-"checksum darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6afc018370c3bff3eb51f89256a6bdb18b4fdcda72d577982a14954a7a0b402c"
-"checksum darling_macro 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c6d8dac1c6f1d29a41c4712b4400f878cb4fcc4c7628f298dd75038e024998d1"
-"checksum directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371c"
-"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b"
-"checksum doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97"
-"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e"
-"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b"
-"checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed"
-"checksum enum-map 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ccd9b2d5e0eb5c2ff851791e2af90ab4531b1168cfc239d1c0bf467e60ba3c89"
-"checksum enum-map-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6dfc5eff4193f33a536598aff7b77260c6ed1c353b2bb59a3e50636f47410bb0"
-"checksum enum-map-internals 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d2436d68e28d1ec1646f3e54003c6b4c4e192785532a687d52a3d2ba56c346bb"
-"checksum enumset 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cac0a22e173f6570a7d69a2ab9e3fe79cf0dcdd0fdb162bfc932b97158f2b2a7"
-"checksum enumset_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "01d93b926a992a4a526c2a14e2faf734fdef5bf9d0a52ba69a2ca7d4494c284b"
-"checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9"
-"checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2"
-"checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1"
-"checksum flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "2adaffba6388640136149e18ed080b77a78611c1e1d6de75aedcdf78df5d4682"
-"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
-"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
-"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
-"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
-"checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869"
-"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
-"checksum getrandom 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6171a6cc63fbabbe27c2b5ee268e8b7fe5dc1eb0dd2dfad537c1dfed6f69117e"
-"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462"
-"checksum hashbrown 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "29fba9abe4742d586dfd0c06ae4f7e73a1c2d86b856933509b269d82cdf06e18"
-"checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4"
-"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d"
-"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
-"checksum hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)" = "7cb44cbce9d8ee4fb36e4c0ad7b794ac44ebaad924b9c8291a63215bb44c2c8f"
-"checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f"
-"checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
-"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
-"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d"
-"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
-"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
-"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
-"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
-"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba"
-"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c"
-"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
-"checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43"
-"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
-"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
-"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f"
-"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425"
-"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599"
-"checksum miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7108aff85b876d06f22503dcce091e29f76733b2bfdd91eebce81f5e68203a10"
-"checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23"
-"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
-"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e"
-"checksum ncurses 5.99.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15699bee2f37e9f8828c7b35b2bc70d13846db453f2d507713b758fabe536b82"
-"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
-"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
-"checksum num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf4825417e1e1406b3782a8ce92f4d53f26ec055e3622e1881ca8e9f5f9e08db"
-"checksum num-complex 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fcb0cf31fb3ff77e6d2a6ebd6800df7fdcd106f2ad89113c9130bcd07f93dffc"
-"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
-"checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e"
-"checksum num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454"
-"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
-"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
-"checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15"
-"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
-"checksum openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f4fad9e54bd23bd4cbbe48fdc08a1b8091707ac869ef8508edea2fec77dcc884"
-"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13"
-"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
-"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
-"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
-"checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af"
-"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b"
-"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
-"checksum proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802"
-"checksum publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5afecba86dcf1e4fd610246f89899d1924fe12e1e89f555eb7c7f710f3c5ad1d"
-"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
-"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
-"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
-"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c"
-"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
-"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
-"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
-"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
-"checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca"
-"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
-"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
-"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
-"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
-"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
-"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
-"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
-"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
-"checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d"
-"checksum regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88c3d9193984285d544df4a30c23a4e62ead42edf70a4452ceb76dac1ce05c26"
-"checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f"
-"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
-"checksum reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0777154c2c3eb54f5c480db01de845652d941e47191277cc673634c3853939"
-"checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf"
-"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
-"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
-"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
-"checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339"
-"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
-"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
-"checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2"
-"checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56"
-"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
-"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
-"checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f"
-"checksum serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425"
-"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
-"checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a"
-"checksum signal-hook 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4f61c4d59f3aaa9f61bba6450a9b80ba48362fd7d651689e7a10c453b1f6dc68"
-"checksum signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1797d48f38f91643908bb14e35e79928f9f4b3cefb2420a564dde0991b4358dc"
-"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
-"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7"
-"checksum snafu 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b028158eb06caa8345bee10cccfb25fa632beccf0ef5308832b4fd4b78a7db48"
-"checksum snafu-derive 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf50aaef500c248a590e2696e8bf8c7620ca2235b9bb90a70363d82dd1abec6a"
-"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
-"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d"
-"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
-"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
-"checksum syn 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "158521e6f544e7e3dcfc370ac180794aa38cb34a1b1e07609376d4adcf429b93"
-"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
-"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
-"checksum term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e5b9a66db815dcfd2da92db471106457082577c3c278d4138ab3e3b4e189327"
-"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
-"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
-"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
-"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46"
-"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443"
-"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac"
-"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926"
-"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce"
-"checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7"
-"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119"
-"checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19"
-"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e"
-"checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724"
-"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
-"checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b"
-"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6"
-"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
-"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426"
-"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9"
-"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
-"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
-"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
-"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
-"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
-"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95"
-"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
-"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230"
-"checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7"
-"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
-"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
-"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
-"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-"checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9"
-"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
-"checksum xi-unicode 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "12ea8eda4b1eb72f02d148402e23832d56a33f55d8c1b2d5bcdde91d79d47cb1"
diff --git a/Cargo.toml b/Cargo.toml
index a153006..ee8992e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,13 +1,17 @@
[package]
-name = "ynab-reimbursements"
-version = "0.1.0"
-authors = ["Jesse Luehrs <doy@tozt.net>"]
-edition = "2018"
+name = "ynab-api"
+version = "1.0.0"
+authors = ["Jesse Luehrs <doy@tozt.net>", "You Need A Budget, LLC"]
+description = "OpenAPI-generated API bindings for the YNAB API"
+repository = "https://git.tozt.net/ynab-api"
+license = "Apache-2.0"
+
[dependencies]
-cursive = "0.12"
-# cursive = { version = "0.12", default-features = false, features = ["crossterm-backend"] }
-cursive_table_view = "0.10"
-directories = "2.0"
-snafu = "0.4"
-ynab-api = { path = "ynab-api" }
+serde = "^1.0"
+serde_derive = "^1.0"
+serde_json = "^1.0"
+url = "1.5"
+reqwest = "~0.9"
+
+[dev-dependencies]
diff --git a/ynab-api/README.md b/README.md
index 77efbeb..d7e64d9 100644
--- a/ynab-api/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Rust API client for openapi
+# Rust API client for ynab-api
Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body. API Documentation is at https://api.youneedabudget.com
@@ -152,3 +152,6 @@ cargo doc --open
+Jesse Luehrs <doy@tozt.net>
+
+Based on the OpenAPI spec found at https://github.com/ynab/ynab-sdk-js/blob/master/spec-v1-swagger.json by You Need A Budget, LLC
diff --git a/bin/regen-ynab-api b/bin/regen-ynab-api
index a252d23..2f7c8ac 100755
--- a/bin/regen-ynab-api
+++ b/bin/regen-ynab-api
@@ -1,15 +1,32 @@
#!/bin/sh
set -eu
+metadata=$(cat <<'EOF'
+authors = ["Jesse Luehrs <doy@tozt.net>", "You Need A Budget, LLC"]
+description = "OpenAPI-generated API bindings for the YNAB API"
+repository = "https://git.tozt.net/ynab-api"
+license = "Apache-2.0"
+EOF
+)
+
+extra_readme=$(cat <<'EOF'
+Jesse Luehrs <doy@tozt.net>
+
+Based on the OpenAPI spec found at https://github.com/ynab/ynab-sdk-js/blob/master/spec-v1-swagger.json by You Need A Budget, LLC
+EOF
+)
+
cd "$(dirname "$0")/.."
-rm -rf ynab-api
-mkdir ynab-api
-cd ynab-api
+rm -rf src docs
openapi-generator-cli \
generate \
-g rust \
--library reqwest \
- -i ../data/spec-v1-swagger.json
-sed -i 's/^name = "openapi"$/name = "ynab-api"/' Cargo.toml
+ -i data/spec-v1-swagger.json \
+ -c data/openapi.yaml \
+ --package-name ynab-api
+
+echo "$metadata" | perl -i -nlE'/^author/ ? print <STDIN> : print' Cargo.toml
+echo "$extra_readme" >> README.md
diff --git a/data/openapi.yaml b/data/openapi.yaml
new file mode 100644
index 0000000..a33d674
--- /dev/null
+++ b/data/openapi.yaml
@@ -0,0 +1,2 @@
+---
+packageVersion: "1.0.0"
diff --git a/ynab-api/docs/Account.md b/docs/Account.md
index 265294b..265294b 100644
--- a/ynab-api/docs/Account.md
+++ b/docs/Account.md
diff --git a/ynab-api/docs/AccountResponse.md b/docs/AccountResponse.md
index eb39808..eb39808 100644
--- a/ynab-api/docs/AccountResponse.md
+++ b/docs/AccountResponse.md
diff --git a/ynab-api/docs/AccountResponseData.md b/docs/AccountResponseData.md
index d437a2f..d437a2f 100644
--- a/ynab-api/docs/AccountResponseData.md
+++ b/docs/AccountResponseData.md
diff --git a/ynab-api/docs/AccountsApi.md b/docs/AccountsApi.md
index 98270b9..98270b9 100644
--- a/ynab-api/docs/AccountsApi.md
+++ b/docs/AccountsApi.md
diff --git a/ynab-api/docs/AccountsResponse.md b/docs/AccountsResponse.md
index 6dc10dd..6dc10dd 100644
--- a/ynab-api/docs/AccountsResponse.md
+++ b/docs/AccountsResponse.md
diff --git a/ynab-api/docs/AccountsResponseData.md b/docs/AccountsResponseData.md
index 968cad8..968cad8 100644
--- a/ynab-api/docs/AccountsResponseData.md
+++ b/docs/AccountsResponseData.md
diff --git a/ynab-api/docs/BudgetDetail.md b/docs/BudgetDetail.md
index 3dac64b..3dac64b 100644
--- a/ynab-api/docs/BudgetDetail.md
+++ b/docs/BudgetDetail.md
diff --git a/ynab-api/docs/BudgetDetailAllOf.md b/docs/BudgetDetailAllOf.md
index f5df347..f5df347 100644
--- a/ynab-api/docs/BudgetDetailAllOf.md
+++ b/docs/BudgetDetailAllOf.md
diff --git a/ynab-api/docs/BudgetDetailResponse.md b/docs/BudgetDetailResponse.md
index 97cc82e..97cc82e 100644
--- a/ynab-api/docs/BudgetDetailResponse.md
+++ b/docs/BudgetDetailResponse.md
diff --git a/ynab-api/docs/BudgetDetailResponseData.md b/docs/BudgetDetailResponseData.md
index 8697aae..8697aae 100644
--- a/ynab-api/docs/BudgetDetailResponseData.md
+++ b/docs/BudgetDetailResponseData.md
diff --git a/ynab-api/docs/BudgetSettings.md b/docs/BudgetSettings.md
index b0604b4..b0604b4 100644
--- a/ynab-api/docs/BudgetSettings.md
+++ b/docs/BudgetSettings.md
diff --git a/ynab-api/docs/BudgetSettingsResponse.md b/docs/BudgetSettingsResponse.md
index ee92163..ee92163 100644
--- a/ynab-api/docs/BudgetSettingsResponse.md
+++ b/docs/BudgetSettingsResponse.md
diff --git a/ynab-api/docs/BudgetSettingsResponseData.md b/docs/BudgetSettingsResponseData.md
index 3d2c4cc..3d2c4cc 100644
--- a/ynab-api/docs/BudgetSettingsResponseData.md
+++ b/docs/BudgetSettingsResponseData.md
diff --git a/ynab-api/docs/BudgetSummary.md b/docs/BudgetSummary.md
index f2e444b..f2e444b 100644
--- a/ynab-api/docs/BudgetSummary.md
+++ b/docs/BudgetSummary.md
diff --git a/ynab-api/docs/BudgetSummaryResponse.md b/docs/BudgetSummaryResponse.md
index 5b029dd..5b029dd 100644
--- a/ynab-api/docs/BudgetSummaryResponse.md
+++ b/docs/BudgetSummaryResponse.md
diff --git a/ynab-api/docs/BudgetSummaryResponseData.md b/docs/BudgetSummaryResponseData.md
index 2836bfa..2836bfa 100644
--- a/ynab-api/docs/BudgetSummaryResponseData.md
+++ b/docs/BudgetSummaryResponseData.md
diff --git a/ynab-api/docs/BudgetsApi.md b/docs/BudgetsApi.md
index 563b754..563b754 100644
--- a/ynab-api/docs/BudgetsApi.md
+++ b/docs/BudgetsApi.md
diff --git a/ynab-api/docs/BulkResponse.md b/docs/BulkResponse.md
index 009e60c..009e60c 100644
--- a/ynab-api/docs/BulkResponse.md
+++ b/docs/BulkResponse.md
diff --git a/ynab-api/docs/BulkResponseData.md b/docs/BulkResponseData.md
index 82fef82..82fef82 100644
--- a/ynab-api/docs/BulkResponseData.md
+++ b/docs/BulkResponseData.md
diff --git a/ynab-api/docs/BulkResponseDataBulk.md b/docs/BulkResponseDataBulk.md
index 97ff1dc..97ff1dc 100644
--- a/ynab-api/docs/BulkResponseDataBulk.md
+++ b/docs/BulkResponseDataBulk.md
diff --git a/ynab-api/docs/BulkTransactions.md b/docs/BulkTransactions.md
index dc990e4..dc990e4 100644
--- a/ynab-api/docs/BulkTransactions.md
+++ b/docs/BulkTransactions.md
diff --git a/ynab-api/docs/CategoriesApi.md b/docs/CategoriesApi.md
index 00294b8..00294b8 100644
--- a/ynab-api/docs/CategoriesApi.md
+++ b/docs/CategoriesApi.md
diff --git a/ynab-api/docs/CategoriesResponse.md b/docs/CategoriesResponse.md
index e760b74..e760b74 100644
--- a/ynab-api/docs/CategoriesResponse.md
+++ b/docs/CategoriesResponse.md
diff --git a/ynab-api/docs/CategoriesResponseData.md b/docs/CategoriesResponseData.md
index 766aae4..766aae4 100644
--- a/ynab-api/docs/CategoriesResponseData.md
+++ b/docs/CategoriesResponseData.md
diff --git a/ynab-api/docs/Category.md b/docs/Category.md
index 217979b..217979b 100644
--- a/ynab-api/docs/Category.md
+++ b/docs/Category.md
diff --git a/ynab-api/docs/CategoryGroup.md b/docs/CategoryGroup.md
index 498f3c5..498f3c5 100644
--- a/ynab-api/docs/CategoryGroup.md
+++ b/docs/CategoryGroup.md
diff --git a/ynab-api/docs/CategoryGroupWithCategories.md b/docs/CategoryGroupWithCategories.md
index c1355c2..c1355c2 100644
--- a/ynab-api/docs/CategoryGroupWithCategories.md
+++ b/docs/CategoryGroupWithCategories.md
diff --git a/ynab-api/docs/CategoryGroupWithCategoriesAllOf.md b/docs/CategoryGroupWithCategoriesAllOf.md
index 0a11fb9..0a11fb9 100644
--- a/ynab-api/docs/CategoryGroupWithCategoriesAllOf.md
+++ b/docs/CategoryGroupWithCategoriesAllOf.md
diff --git a/ynab-api/docs/CategoryResponse.md b/docs/CategoryResponse.md
index efe3d40..efe3d40 100644
--- a/ynab-api/docs/CategoryResponse.md
+++ b/docs/CategoryResponse.md
diff --git a/ynab-api/docs/CategoryResponseData.md b/docs/CategoryResponseData.md
index 187bf07..187bf07 100644
--- a/ynab-api/docs/CategoryResponseData.md
+++ b/docs/CategoryResponseData.md
diff --git a/ynab-api/docs/CurrencyFormat.md b/docs/CurrencyFormat.md
index 98cd6fd..98cd6fd 100644
--- a/ynab-api/docs/CurrencyFormat.md
+++ b/docs/CurrencyFormat.md
diff --git a/ynab-api/docs/DateFormat.md b/docs/DateFormat.md
index 53add08..53add08 100644
--- a/ynab-api/docs/DateFormat.md
+++ b/docs/DateFormat.md
diff --git a/ynab-api/docs/DeprecatedApi.md b/docs/DeprecatedApi.md
index 85bdc80..85bdc80 100644
--- a/ynab-api/docs/DeprecatedApi.md
+++ b/docs/DeprecatedApi.md
diff --git a/ynab-api/docs/ErrorDetail.md b/docs/ErrorDetail.md
index dd6d022..dd6d022 100644
--- a/ynab-api/docs/ErrorDetail.md
+++ b/docs/ErrorDetail.md
diff --git a/ynab-api/docs/ErrorResponse.md b/docs/ErrorResponse.md
index 382b263..382b263 100644
--- a/ynab-api/docs/ErrorResponse.md
+++ b/docs/ErrorResponse.md
diff --git a/ynab-api/docs/HybridTransaction.md b/docs/HybridTransaction.md
index c168944..c168944 100644
--- a/ynab-api/docs/HybridTransaction.md
+++ b/docs/HybridTransaction.md
diff --git a/ynab-api/docs/HybridTransactionAllOf.md b/docs/HybridTransactionAllOf.md
index af38160..af38160 100644
--- a/ynab-api/docs/HybridTransactionAllOf.md
+++ b/docs/HybridTransactionAllOf.md
diff --git a/ynab-api/docs/HybridTransactionsResponse.md b/docs/HybridTransactionsResponse.md
index df8437a..df8437a 100644
--- a/ynab-api/docs/HybridTransactionsResponse.md
+++ b/docs/HybridTransactionsResponse.md
diff --git a/ynab-api/docs/HybridTransactionsResponseData.md b/docs/HybridTransactionsResponseData.md
index 241e7b6..241e7b6 100644
--- a/ynab-api/docs/HybridTransactionsResponseData.md
+++ b/docs/HybridTransactionsResponseData.md
diff --git a/ynab-api/docs/MonthDetail.md b/docs/MonthDetail.md
index 1d7a22b..1d7a22b 100644
--- a/ynab-api/docs/MonthDetail.md
+++ b/docs/MonthDetail.md
diff --git a/ynab-api/docs/MonthDetailAllOf.md b/docs/MonthDetailAllOf.md
index 81da8f5..81da8f5 100644
--- a/ynab-api/docs/MonthDetailAllOf.md
+++ b/docs/MonthDetailAllOf.md
diff --git a/ynab-api/docs/MonthDetailResponse.md b/docs/MonthDetailResponse.md
index bfeaae8..bfeaae8 100644
--- a/ynab-api/docs/MonthDetailResponse.md
+++ b/docs/MonthDetailResponse.md
diff --git a/ynab-api/docs/MonthDetailResponseData.md b/docs/MonthDetailResponseData.md
index 83bab88..83bab88 100644
--- a/ynab-api/docs/MonthDetailResponseData.md
+++ b/docs/MonthDetailResponseData.md
diff --git a/ynab-api/docs/MonthSummariesResponse.md b/docs/MonthSummariesResponse.md
index fb7f315..fb7f315 100644
--- a/ynab-api/docs/MonthSummariesResponse.md
+++ b/docs/MonthSummariesResponse.md
diff --git a/ynab-api/docs/MonthSummariesResponseData.md b/docs/MonthSummariesResponseData.md
index f9907b3..f9907b3 100644
--- a/ynab-api/docs/MonthSummariesResponseData.md
+++ b/docs/MonthSummariesResponseData.md
diff --git a/ynab-api/docs/MonthSummary.md b/docs/MonthSummary.md
index a78cbfc..a78cbfc 100644
--- a/ynab-api/docs/MonthSummary.md
+++ b/docs/MonthSummary.md
diff --git a/ynab-api/docs/MonthsApi.md b/docs/MonthsApi.md
index 337c03c..337c03c 100644
--- a/ynab-api/docs/MonthsApi.md
+++ b/docs/MonthsApi.md
diff --git a/ynab-api/docs/Payee.md b/docs/Payee.md
index ff886e6..ff886e6 100644
--- a/ynab-api/docs/Payee.md
+++ b/docs/Payee.md
diff --git a/ynab-api/docs/PayeeLocation.md b/docs/PayeeLocation.md
index f73c3be..f73c3be 100644
--- a/ynab-api/docs/PayeeLocation.md
+++ b/docs/PayeeLocation.md
diff --git a/ynab-api/docs/PayeeLocationResponse.md b/docs/PayeeLocationResponse.md
index b34e691..b34e691 100644
--- a/ynab-api/docs/PayeeLocationResponse.md
+++ b/docs/PayeeLocationResponse.md
diff --git a/ynab-api/docs/PayeeLocationResponseData.md b/docs/PayeeLocationResponseData.md
index bba1cb7..bba1cb7 100644
--- a/ynab-api/docs/PayeeLocationResponseData.md
+++ b/docs/PayeeLocationResponseData.md
diff --git a/ynab-api/docs/PayeeLocationsApi.md b/docs/PayeeLocationsApi.md
index e51787a..e51787a 100644
--- a/ynab-api/docs/PayeeLocationsApi.md
+++ b/docs/PayeeLocationsApi.md
diff --git a/ynab-api/docs/PayeeLocationsResponse.md b/docs/PayeeLocationsResponse.md
index f118e8e..f118e8e 100644
--- a/ynab-api/docs/PayeeLocationsResponse.md
+++ b/docs/PayeeLocationsResponse.md
diff --git a/ynab-api/docs/PayeeLocationsResponseData.md b/docs/PayeeLocationsResponseData.md
index 4ad0748..4ad0748 100644
--- a/ynab-api/docs/PayeeLocationsResponseData.md
+++ b/docs/PayeeLocationsResponseData.md
diff --git a/ynab-api/docs/PayeeResponse.md b/docs/PayeeResponse.md
index 6a38dfd..6a38dfd 100644
--- a/ynab-api/docs/PayeeResponse.md
+++ b/docs/PayeeResponse.md
diff --git a/ynab-api/docs/PayeeResponseData.md b/docs/PayeeResponseData.md
index 9618470..9618470 100644
--- a/ynab-api/docs/PayeeResponseData.md
+++ b/docs/PayeeResponseData.md
diff --git a/ynab-api/docs/PayeesApi.md b/docs/PayeesApi.md
index 173c79d..173c79d 100644
--- a/ynab-api/docs/PayeesApi.md
+++ b/docs/PayeesApi.md
diff --git a/ynab-api/docs/PayeesResponse.md b/docs/PayeesResponse.md
index 18bd7d2..18bd7d2 100644
--- a/ynab-api/docs/PayeesResponse.md
+++ b/docs/PayeesResponse.md
diff --git a/ynab-api/docs/PayeesResponseData.md b/docs/PayeesResponseData.md
index c3a5518..c3a5518 100644
--- a/ynab-api/docs/PayeesResponseData.md
+++ b/docs/PayeesResponseData.md
diff --git a/ynab-api/docs/SaveCategoryResponse.md b/docs/SaveCategoryResponse.md
index 64a832f..64a832f 100644
--- a/ynab-api/docs/SaveCategoryResponse.md
+++ b/docs/SaveCategoryResponse.md
diff --git a/ynab-api/docs/SaveCategoryResponseData.md b/docs/SaveCategoryResponseData.md
index 941f72f..941f72f 100644
--- a/ynab-api/docs/SaveCategoryResponseData.md
+++ b/docs/SaveCategoryResponseData.md
diff --git a/ynab-api/docs/SaveMonthCategory.md b/docs/SaveMonthCategory.md
index 1c4abb9..1c4abb9 100644
--- a/ynab-api/docs/SaveMonthCategory.md
+++ b/docs/SaveMonthCategory.md
diff --git a/ynab-api/docs/SaveMonthCategoryWrapper.md b/docs/SaveMonthCategoryWrapper.md
index 1b7e38a..1b7e38a 100644
--- a/ynab-api/docs/SaveMonthCategoryWrapper.md
+++ b/docs/SaveMonthCategoryWrapper.md
diff --git a/ynab-api/docs/SaveTransaction.md b/docs/SaveTransaction.md
index dabee87..dabee87 100644
--- a/ynab-api/docs/SaveTransaction.md
+++ b/docs/SaveTransaction.md
diff --git a/ynab-api/docs/SaveTransactionWrapper.md b/docs/SaveTransactionWrapper.md
index a9f3fcc..a9f3fcc 100644
--- a/ynab-api/docs/SaveTransactionWrapper.md
+++ b/docs/SaveTransactionWrapper.md
diff --git a/ynab-api/docs/SaveTransactionsResponse.md b/docs/SaveTransactionsResponse.md
index 0458ef6..0458ef6 100644
--- a/ynab-api/docs/SaveTransactionsResponse.md
+++ b/docs/SaveTransactionsResponse.md
diff --git a/ynab-api/docs/SaveTransactionsResponseData.md b/docs/SaveTransactionsResponseData.md
index 8617702..8617702 100644
--- a/ynab-api/docs/SaveTransactionsResponseData.md
+++ b/docs/SaveTransactionsResponseData.md
diff --git a/ynab-api/docs/SaveTransactionsWrapper.md b/docs/SaveTransactionsWrapper.md
index d79e4ee..d79e4ee 100644
--- a/ynab-api/docs/SaveTransactionsWrapper.md
+++ b/docs/SaveTransactionsWrapper.md
diff --git a/ynab-api/docs/ScheduledSubTransaction.md b/docs/ScheduledSubTransaction.md
index 6178bab..6178bab 100644
--- a/ynab-api/docs/ScheduledSubTransaction.md
+++ b/docs/ScheduledSubTransaction.md
diff --git a/ynab-api/docs/ScheduledTransactionDetail.md b/docs/ScheduledTransactionDetail.md
index 5f45c7e..5f45c7e 100644
--- a/ynab-api/docs/ScheduledTransactionDetail.md
+++ b/docs/ScheduledTransactionDetail.md
diff --git a/ynab-api/docs/ScheduledTransactionDetailAllOf.md b/docs/ScheduledTransactionDetailAllOf.md
index 3c2757f..3c2757f 100644
--- a/ynab-api/docs/ScheduledTransactionDetailAllOf.md
+++ b/docs/ScheduledTransactionDetailAllOf.md
diff --git a/ynab-api/docs/ScheduledTransactionResponse.md b/docs/ScheduledTransactionResponse.md
index 28c4b7e..28c4b7e 100644
--- a/ynab-api/docs/ScheduledTransactionResponse.md
+++ b/docs/ScheduledTransactionResponse.md
diff --git a/ynab-api/docs/ScheduledTransactionResponseData.md b/docs/ScheduledTransactionResponseData.md
index bd05d93..bd05d93 100644
--- a/ynab-api/docs/ScheduledTransactionResponseData.md
+++ b/docs/ScheduledTransactionResponseData.md
diff --git a/ynab-api/docs/ScheduledTransactionSummary.md b/docs/ScheduledTransactionSummary.md
index 4b248b0..4b248b0 100644
--- a/ynab-api/docs/ScheduledTransactionSummary.md
+++ b/docs/ScheduledTransactionSummary.md
diff --git a/ynab-api/docs/ScheduledTransactionsApi.md b/docs/ScheduledTransactionsApi.md
index 48856a7..48856a7 100644
--- a/ynab-api/docs/ScheduledTransactionsApi.md
+++ b/docs/ScheduledTransactionsApi.md
diff --git a/ynab-api/docs/ScheduledTransactionsResponse.md b/docs/ScheduledTransactionsResponse.md
index b3dbffc..b3dbffc 100644
--- a/ynab-api/docs/ScheduledTransactionsResponse.md
+++ b/docs/ScheduledTransactionsResponse.md
diff --git a/ynab-api/docs/ScheduledTransactionsResponseData.md b/docs/ScheduledTransactionsResponseData.md
index f5bc860..f5bc860 100644
--- a/ynab-api/docs/ScheduledTransactionsResponseData.md
+++ b/docs/ScheduledTransactionsResponseData.md
diff --git a/ynab-api/docs/SubTransaction.md b/docs/SubTransaction.md
index 77bad7f..77bad7f 100644
--- a/ynab-api/docs/SubTransaction.md
+++ b/docs/SubTransaction.md
diff --git a/ynab-api/docs/TransactionDetail.md b/docs/TransactionDetail.md
index 3d23f44..3d23f44 100644
--- a/ynab-api/docs/TransactionDetail.md
+++ b/docs/TransactionDetail.md
diff --git a/ynab-api/docs/TransactionDetailAllOf.md b/docs/TransactionDetailAllOf.md
index 2db8459..2db8459 100644
--- a/ynab-api/docs/TransactionDetailAllOf.md
+++ b/docs/TransactionDetailAllOf.md
diff --git a/ynab-api/docs/TransactionResponse.md b/docs/TransactionResponse.md
index ac81dfa..ac81dfa 100644
--- a/ynab-api/docs/TransactionResponse.md
+++ b/docs/TransactionResponse.md
diff --git a/ynab-api/docs/TransactionResponseData.md b/docs/TransactionResponseData.md
index 81977f0..81977f0 100644
--- a/ynab-api/docs/TransactionResponseData.md
+++ b/docs/TransactionResponseData.md
diff --git a/ynab-api/docs/TransactionSummary.md b/docs/TransactionSummary.md
index fd93b15..fd93b15 100644
--- a/ynab-api/docs/TransactionSummary.md
+++ b/docs/TransactionSummary.md
diff --git a/ynab-api/docs/TransactionsApi.md b/docs/TransactionsApi.md
index 64ecb4b..64ecb4b 100644
--- a/ynab-api/docs/TransactionsApi.md
+++ b/docs/TransactionsApi.md
diff --git a/ynab-api/docs/TransactionsResponse.md b/docs/TransactionsResponse.md
index fec6f21..fec6f21 100644
--- a/ynab-api/docs/TransactionsResponse.md
+++ b/docs/TransactionsResponse.md
diff --git a/ynab-api/docs/TransactionsResponseData.md b/docs/TransactionsResponseData.md
index 2b64bf7..2b64bf7 100644
--- a/ynab-api/docs/TransactionsResponseData.md
+++ b/docs/TransactionsResponseData.md
diff --git a/ynab-api/docs/UpdateTransaction.md b/docs/UpdateTransaction.md
index 6d6ecb0..6d6ecb0 100644
--- a/ynab-api/docs/UpdateTransaction.md
+++ b/docs/UpdateTransaction.md
diff --git a/ynab-api/docs/UpdateTransactionWrapper.md b/docs/UpdateTransactionWrapper.md
index df6846f..df6846f 100644
--- a/ynab-api/docs/UpdateTransactionWrapper.md
+++ b/docs/UpdateTransactionWrapper.md
diff --git a/ynab-api/docs/UpdateTransactionsResponse.md b/docs/UpdateTransactionsResponse.md
index 77e6431..77e6431 100644
--- a/ynab-api/docs/UpdateTransactionsResponse.md
+++ b/docs/UpdateTransactionsResponse.md
diff --git a/ynab-api/docs/UpdateTransactionsWrapper.md b/docs/UpdateTransactionsWrapper.md
index f039804..f039804 100644
--- a/ynab-api/docs/UpdateTransactionsWrapper.md
+++ b/docs/UpdateTransactionsWrapper.md
diff --git a/ynab-api/docs/User.md b/docs/User.md
index 28cb9e0..28cb9e0 100644
--- a/ynab-api/docs/User.md
+++ b/docs/User.md
diff --git a/ynab-api/docs/UserApi.md b/docs/UserApi.md
index c2f9359..c2f9359 100644
--- a/ynab-api/docs/UserApi.md
+++ b/docs/UserApi.md
diff --git a/ynab-api/docs/UserResponse.md b/docs/UserResponse.md
index 31b0d2f..31b0d2f 100644
--- a/ynab-api/docs/UserResponse.md
+++ b/docs/UserResponse.md
diff --git a/ynab-api/docs/UserResponseData.md b/docs/UserResponseData.md
index 3aff41b..3aff41b 100644
--- a/ynab-api/docs/UserResponseData.md
+++ b/docs/UserResponseData.md
diff --git a/ynab-api/git_push.sh b/git_push.sh
index 8442b80..8442b80 100644
--- a/ynab-api/git_push.sh
+++ b/git_push.sh
diff --git a/ynab-api/src/apis/accounts_api.rs b/src/apis/accounts_api.rs
index 616476e..616476e 100644
--- a/ynab-api/src/apis/accounts_api.rs
+++ b/src/apis/accounts_api.rs
diff --git a/ynab-api/src/apis/budgets_api.rs b/src/apis/budgets_api.rs
index 663dc59..663dc59 100644
--- a/ynab-api/src/apis/budgets_api.rs
+++ b/src/apis/budgets_api.rs
diff --git a/ynab-api/src/apis/categories_api.rs b/src/apis/categories_api.rs
index 417a2d9..417a2d9 100644
--- a/ynab-api/src/apis/categories_api.rs
+++ b/src/apis/categories_api.rs
diff --git a/ynab-api/src/apis/client.rs b/src/apis/client.rs
index 2776f11..2776f11 100644
--- a/ynab-api/src/apis/client.rs
+++ b/src/apis/client.rs
diff --git a/ynab-api/src/apis/configuration.rs b/src/apis/configuration.rs
index 4378dfa..4378dfa 100644
--- a/ynab-api/src/apis/configuration.rs
+++ b/src/apis/configuration.rs
diff --git a/ynab-api/src/apis/deprecated_api.rs b/src/apis/deprecated_api.rs
index a148248..a148248 100644
--- a/ynab-api/src/apis/deprecated_api.rs
+++ b/src/apis/deprecated_api.rs
diff --git a/ynab-api/src/apis/mod.rs b/src/apis/mod.rs
index 910bd7e..910bd7e 100644
--- a/ynab-api/src/apis/mod.rs
+++ b/src/apis/mod.rs
diff --git a/ynab-api/src/apis/months_api.rs b/src/apis/months_api.rs
index 3bee3fe..3bee3fe 100644
--- a/ynab-api/src/apis/months_api.rs
+++ b/src/apis/months_api.rs
diff --git a/ynab-api/src/apis/payee_locations_api.rs b/src/apis/payee_locations_api.rs
index 88f12e1..88f12e1 100644
--- a/ynab-api/src/apis/payee_locations_api.rs
+++ b/src/apis/payee_locations_api.rs
diff --git a/ynab-api/src/apis/payees_api.rs b/src/apis/payees_api.rs
index 77db5bb..77db5bb 100644
--- a/ynab-api/src/apis/payees_api.rs
+++ b/src/apis/payees_api.rs
diff --git a/ynab-api/src/apis/scheduled_transactions_api.rs b/src/apis/scheduled_transactions_api.rs
index 8ab30a8..8ab30a8 100644
--- a/ynab-api/src/apis/scheduled_transactions_api.rs
+++ b/src/apis/scheduled_transactions_api.rs
diff --git a/ynab-api/src/apis/transactions_api.rs b/src/apis/transactions_api.rs
index a6386a0..a6386a0 100644
--- a/ynab-api/src/apis/transactions_api.rs
+++ b/src/apis/transactions_api.rs
diff --git a/ynab-api/src/apis/user_api.rs b/src/apis/user_api.rs
index 50c243e..50c243e 100644
--- a/ynab-api/src/apis/user_api.rs
+++ b/src/apis/user_api.rs
diff --git a/src/app.rs b/src/app.rs
deleted file mode 100644
index 22bf543..0000000
--- a/src/app.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-pub struct App {
- cursive: cursive::Cursive,
-}
-
-impl App {
- pub fn new(budget: crate::ynab::Budget) -> Self {
- let mut app = cursive::Cursive::default();
- let term_width = app.screen_size().x;
- app.set_theme(Self::theme());
- app.add_global_callback('q', |s| s.quit());
-
- let mut layout = cursive::views::LinearLayout::vertical();
- layout.add_child(cursive::views::TextView::new(format!(
- "Budget: {} ({})\n{}",
- budget.name(),
- budget.id(),
- "=".repeat(term_width),
- )));
-
- layout.add_child(crate::views::TxnTables::new("txn_tables", &budget));
-
- app.set_user_data(budget);
- app.add_fullscreen_layer(layout);
-
- Self { cursive: app }
- }
-
- pub fn run(&mut self) {
- self.cursive.run();
- }
-
- fn theme() -> cursive::theme::Theme {
- let mut palette = cursive::theme::Palette::default();
- palette[cursive::theme::PaletteColor::Background] =
- cursive::theme::Color::TerminalDefault;
- palette[cursive::theme::PaletteColor::View] =
- cursive::theme::Color::TerminalDefault;
- palette[cursive::theme::PaletteColor::Primary] =
- cursive::theme::Color::TerminalDefault;
- cursive::theme::Theme {
- shadow: false,
- borders: cursive::theme::BorderStyle::Simple,
- palette,
- }
- }
-}
diff --git a/ynab-api/src/lib.rs b/src/lib.rs
index c1dd666..c1dd666 100644
--- a/ynab-api/src/lib.rs
+++ b/src/lib.rs
diff --git a/src/main.rs b/src/main.rs
deleted file mode 100644
index d53ce1c..0000000
--- a/src/main.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-mod app;
-mod paths;
-mod views;
-mod ynab;
-
-use snafu::ResultExt;
-
-#[derive(Debug, snafu::Snafu)]
-pub enum Error {
- #[snafu(display("failed to get api key: {}", source))]
- GetApiKey { source: crate::paths::Error },
-
- #[snafu(display("failed to load budget: {}", source))]
- LoadBudget { source: crate::ynab::BudgetError },
-}
-
-pub type Result<T> = std::result::Result<T, Error>;
-
-fn run() -> Result<()> {
- let key = paths::read_api_key().context(GetApiKey)?;
- let budget = ynab::Budget::new(&key).context(LoadBudget)?;
-
- let mut app = app::App::new(budget);
- app.run();
-
- Ok(())
-}
-
-fn main() {
- match run() {
- Ok(_) => {}
- Err(e) => {
- eprintln!("ynab-reimbursements: {}", e);
- std::process::exit(1);
- }
- }
-}
diff --git a/ynab-api/src/models/account.rs b/src/models/account.rs
index 6ffa1d5..6ffa1d5 100644
--- a/ynab-api/src/models/account.rs
+++ b/src/models/account.rs
diff --git a/ynab-api/src/models/account_response.rs b/src/models/account_response.rs
index 633bacb..633bacb 100644
--- a/ynab-api/src/models/account_response.rs
+++ b/src/models/account_response.rs
diff --git a/ynab-api/src/models/account_response_data.rs b/src/models/account_response_data.rs
index 9340a0f..9340a0f 100644
--- a/ynab-api/src/models/account_response_data.rs
+++ b/src/models/account_response_data.rs
diff --git a/ynab-api/src/models/accounts_response.rs b/src/models/accounts_response.rs
index d2bd25d..d2bd25d 100644
--- a/ynab-api/src/models/accounts_response.rs
+++ b/src/models/accounts_response.rs
diff --git a/ynab-api/src/models/accounts_response_data.rs b/src/models/accounts_response_data.rs
index 1324953..1324953 100644
--- a/ynab-api/src/models/accounts_response_data.rs
+++ b/src/models/accounts_response_data.rs
diff --git a/ynab-api/src/models/budget_detail.rs b/src/models/budget_detail.rs
index 8553aad..8553aad 100644
--- a/ynab-api/src/models/budget_detail.rs
+++ b/src/models/budget_detail.rs
diff --git a/ynab-api/src/models/budget_detail_all_of.rs b/src/models/budget_detail_all_of.rs
index 90a621e..90a621e 100644
--- a/ynab-api/src/models/budget_detail_all_of.rs
+++ b/src/models/budget_detail_all_of.rs
diff --git a/ynab-api/src/models/budget_detail_response.rs b/src/models/budget_detail_response.rs
index 5fe15c9..5fe15c9 100644
--- a/ynab-api/src/models/budget_detail_response.rs
+++ b/src/models/budget_detail_response.rs
diff --git a/ynab-api/src/models/budget_detail_response_data.rs b/src/models/budget_detail_response_data.rs
index 301479d..301479d 100644
--- a/ynab-api/src/models/budget_detail_response_data.rs
+++ b/src/models/budget_detail_response_data.rs
diff --git a/ynab-api/src/models/budget_settings.rs b/src/models/budget_settings.rs
index 25985b5..25985b5 100644
--- a/ynab-api/src/models/budget_settings.rs
+++ b/src/models/budget_settings.rs
diff --git a/ynab-api/src/models/budget_settings_response.rs b/src/models/budget_settings_response.rs
index c5c0ee3..c5c0ee3 100644
--- a/ynab-api/src/models/budget_settings_response.rs
+++ b/src/models/budget_settings_response.rs
diff --git a/ynab-api/src/models/budget_settings_response_data.rs b/src/models/budget_settings_response_data.rs
index e484234..e484234 100644
--- a/ynab-api/src/models/budget_settings_response_data.rs
+++ b/src/models/budget_settings_response_data.rs
diff --git a/ynab-api/src/models/budget_summary.rs b/src/models/budget_summary.rs
index b380593..b380593 100644
--- a/ynab-api/src/models/budget_summary.rs
+++ b/src/models/budget_summary.rs
diff --git a/ynab-api/src/models/budget_summary_response.rs b/src/models/budget_summary_response.rs
index 422dfae..422dfae 100644
--- a/ynab-api/src/models/budget_summary_response.rs
+++ b/src/models/budget_summary_response.rs
diff --git a/ynab-api/src/models/budget_summary_response_data.rs b/src/models/budget_summary_response_data.rs
index f6bec05..f6bec05 100644
--- a/ynab-api/src/models/budget_summary_response_data.rs
+++ b/src/models/budget_summary_response_data.rs
diff --git a/ynab-api/src/models/bulk_response.rs b/src/models/bulk_response.rs
index bf98b29..bf98b29 100644
--- a/ynab-api/src/models/bulk_response.rs
+++ b/src/models/bulk_response.rs
diff --git a/ynab-api/src/models/bulk_response_data.rs b/src/models/bulk_response_data.rs
index e347af0..e347af0 100644
--- a/ynab-api/src/models/bulk_response_data.rs
+++ b/src/models/bulk_response_data.rs
diff --git a/ynab-api/src/models/bulk_response_data_bulk.rs b/src/models/bulk_response_data_bulk.rs
index 3993078..3993078 100644
--- a/ynab-api/src/models/bulk_response_data_bulk.rs
+++ b/src/models/bulk_response_data_bulk.rs
diff --git a/ynab-api/src/models/bulk_transactions.rs b/src/models/bulk_transactions.rs
index e80c1c3..e80c1c3 100644
--- a/ynab-api/src/models/bulk_transactions.rs
+++ b/src/models/bulk_transactions.rs
diff --git a/ynab-api/src/models/categories_response.rs b/src/models/categories_response.rs
index 08fbafd..08fbafd 100644
--- a/ynab-api/src/models/categories_response.rs
+++ b/src/models/categories_response.rs
diff --git a/ynab-api/src/models/categories_response_data.rs b/src/models/categories_response_data.rs
index 980505e..980505e 100644
--- a/ynab-api/src/models/categories_response_data.rs
+++ b/src/models/categories_response_data.rs
diff --git a/ynab-api/src/models/category.rs b/src/models/category.rs
index 1a62c6a..1a62c6a 100644
--- a/ynab-api/src/models/category.rs
+++ b/src/models/category.rs
diff --git a/ynab-api/src/models/category_group.rs b/src/models/category_group.rs
index 2f674e2..2f674e2 100644
--- a/ynab-api/src/models/category_group.rs
+++ b/src/models/category_group.rs
diff --git a/ynab-api/src/models/category_group_with_categories.rs b/src/models/category_group_with_categories.rs
index 38cfd88..38cfd88 100644
--- a/ynab-api/src/models/category_group_with_categories.rs
+++ b/src/models/category_group_with_categories.rs
diff --git a/ynab-api/src/models/category_group_with_categories_all_of.rs b/src/models/category_group_with_categories_all_of.rs
index f34d3bb..f34d3bb 100644
--- a/ynab-api/src/models/category_group_with_categories_all_of.rs
+++ b/src/models/category_group_with_categories_all_of.rs
diff --git a/ynab-api/src/models/category_response.rs b/src/models/category_response.rs
index 35f2f40..35f2f40 100644
--- a/ynab-api/src/models/category_response.rs
+++ b/src/models/category_response.rs
diff --git a/ynab-api/src/models/category_response_data.rs b/src/models/category_response_data.rs
index 4e81fbb..4e81fbb 100644
--- a/ynab-api/src/models/category_response_data.rs
+++ b/src/models/category_response_data.rs
diff --git a/ynab-api/src/models/currency_format.rs b/src/models/currency_format.rs
index 476856a..476856a 100644
--- a/ynab-api/src/models/currency_format.rs
+++ b/src/models/currency_format.rs
diff --git a/ynab-api/src/models/date_format.rs b/src/models/date_format.rs
index cf88395..cf88395 100644
--- a/ynab-api/src/models/date_format.rs
+++ b/src/models/date_format.rs
diff --git a/ynab-api/src/models/error_detail.rs b/src/models/error_detail.rs
index 4745cf3..4745cf3 100644
--- a/ynab-api/src/models/error_detail.rs
+++ b/src/models/error_detail.rs
diff --git a/ynab-api/src/models/error_response.rs b/src/models/error_response.rs
index c321726..c321726 100644
--- a/ynab-api/src/models/error_response.rs
+++ b/src/models/error_response.rs
diff --git a/ynab-api/src/models/hybrid_transaction.rs b/src/models/hybrid_transaction.rs
index 802813b..802813b 100644
--- a/ynab-api/src/models/hybrid_transaction.rs
+++ b/src/models/hybrid_transaction.rs
diff --git a/ynab-api/src/models/hybrid_transaction_all_of.rs b/src/models/hybrid_transaction_all_of.rs
index 42fd515..42fd515 100644
--- a/ynab-api/src/models/hybrid_transaction_all_of.rs
+++ b/src/models/hybrid_transaction_all_of.rs
diff --git a/ynab-api/src/models/hybrid_transactions_response.rs b/src/models/hybrid_transactions_response.rs
index 493582e..493582e 100644
--- a/ynab-api/src/models/hybrid_transactions_response.rs
+++ b/src/models/hybrid_transactions_response.rs
diff --git a/ynab-api/src/models/hybrid_transactions_response_data.rs b/src/models/hybrid_transactions_response_data.rs
index 8e329e4..8e329e4 100644
--- a/ynab-api/src/models/hybrid_transactions_response_data.rs
+++ b/src/models/hybrid_transactions_response_data.rs
diff --git a/ynab-api/src/models/mod.rs b/src/models/mod.rs
index ba8b351..ba8b351 100644
--- a/ynab-api/src/models/mod.rs
+++ b/src/models/mod.rs
diff --git a/ynab-api/src/models/month_detail.rs b/src/models/month_detail.rs
index a6f55d4..a6f55d4 100644
--- a/ynab-api/src/models/month_detail.rs
+++ b/src/models/month_detail.rs
diff --git a/ynab-api/src/models/month_detail_all_of.rs b/src/models/month_detail_all_of.rs
index 0f07326..0f07326 100644
--- a/ynab-api/src/models/month_detail_all_of.rs
+++ b/src/models/month_detail_all_of.rs
diff --git a/ynab-api/src/models/month_detail_response.rs b/src/models/month_detail_response.rs
index c144afb..c144afb 100644
--- a/ynab-api/src/models/month_detail_response.rs
+++ b/src/models/month_detail_response.rs
diff --git a/ynab-api/src/models/month_detail_response_data.rs b/src/models/month_detail_response_data.rs
index 0948763..0948763 100644
--- a/ynab-api/src/models/month_detail_response_data.rs
+++ b/src/models/month_detail_response_data.rs
diff --git a/ynab-api/src/models/month_summaries_response.rs b/src/models/month_summaries_response.rs
index 44d5d66..44d5d66 100644
--- a/ynab-api/src/models/month_summaries_response.rs
+++ b/src/models/month_summaries_response.rs
diff --git a/ynab-api/src/models/month_summaries_response_data.rs b/src/models/month_summaries_response_data.rs
index 6237601..6237601 100644
--- a/ynab-api/src/models/month_summaries_response_data.rs
+++ b/src/models/month_summaries_response_data.rs
diff --git a/ynab-api/src/models/month_summary.rs b/src/models/month_summary.rs
index 3c705d3..3c705d3 100644
--- a/ynab-api/src/models/month_summary.rs
+++ b/src/models/month_summary.rs
diff --git a/ynab-api/src/models/payee.rs b/src/models/payee.rs
index 13ad103..13ad103 100644
--- a/ynab-api/src/models/payee.rs
+++ b/src/models/payee.rs
diff --git a/ynab-api/src/models/payee_location.rs b/src/models/payee_location.rs
index afb050e..afb050e 100644
--- a/ynab-api/src/models/payee_location.rs
+++ b/src/models/payee_location.rs
diff --git a/ynab-api/src/models/payee_location_response.rs b/src/models/payee_location_response.rs
index e6d2608..e6d2608 100644
--- a/ynab-api/src/models/payee_location_response.rs
+++ b/src/models/payee_location_response.rs
diff --git a/ynab-api/src/models/payee_location_response_data.rs b/src/models/payee_location_response_data.rs
index 869c4ea..869c4ea 100644
--- a/ynab-api/src/models/payee_location_response_data.rs
+++ b/src/models/payee_location_response_data.rs
diff --git a/ynab-api/src/models/payee_locations_response.rs b/src/models/payee_locations_response.rs
index 916a19e..916a19e 100644
--- a/ynab-api/src/models/payee_locations_response.rs
+++ b/src/models/payee_locations_response.rs
diff --git a/ynab-api/src/models/payee_locations_response_data.rs b/src/models/payee_locations_response_data.rs
index ea46038..ea46038 100644
--- a/ynab-api/src/models/payee_locations_response_data.rs
+++ b/src/models/payee_locations_response_data.rs
diff --git a/ynab-api/src/models/payee_response.rs b/src/models/payee_response.rs
index 690913a..690913a 100644
--- a/ynab-api/src/models/payee_response.rs
+++ b/src/models/payee_response.rs
diff --git a/ynab-api/src/models/payee_response_data.rs b/src/models/payee_response_data.rs
index f19f7ea..f19f7ea 100644
--- a/ynab-api/src/models/payee_response_data.rs
+++ b/src/models/payee_response_data.rs
diff --git a/ynab-api/src/models/payees_response.rs b/src/models/payees_response.rs
index dba96f3..dba96f3 100644
--- a/ynab-api/src/models/payees_response.rs
+++ b/src/models/payees_response.rs
diff --git a/ynab-api/src/models/payees_response_data.rs b/src/models/payees_response_data.rs
index 4897b15..4897b15 100644
--- a/ynab-api/src/models/payees_response_data.rs
+++ b/src/models/payees_response_data.rs
diff --git a/ynab-api/src/models/save_category_response.rs b/src/models/save_category_response.rs
index 37744c1..37744c1 100644
--- a/ynab-api/src/models/save_category_response.rs
+++ b/src/models/save_category_response.rs
diff --git a/ynab-api/src/models/save_category_response_data.rs b/src/models/save_category_response_data.rs
index b61b206..b61b206 100644
--- a/ynab-api/src/models/save_category_response_data.rs
+++ b/src/models/save_category_response_data.rs
diff --git a/ynab-api/src/models/save_month_category.rs b/src/models/save_month_category.rs
index 40d1b2e..40d1b2e 100644
--- a/ynab-api/src/models/save_month_category.rs
+++ b/src/models/save_month_category.rs
diff --git a/ynab-api/src/models/save_month_category_wrapper.rs b/src/models/save_month_category_wrapper.rs
index ef67116..ef67116 100644
--- a/ynab-api/src/models/save_month_category_wrapper.rs
+++ b/src/models/save_month_category_wrapper.rs
diff --git a/ynab-api/src/models/save_transaction.rs b/src/models/save_transaction.rs
index c2fc6b7..c2fc6b7 100644
--- a/ynab-api/src/models/save_transaction.rs
+++ b/src/models/save_transaction.rs
diff --git a/ynab-api/src/models/save_transaction_wrapper.rs b/src/models/save_transaction_wrapper.rs
index 71bc7cd..71bc7cd 100644
--- a/ynab-api/src/models/save_transaction_wrapper.rs
+++ b/src/models/save_transaction_wrapper.rs
diff --git a/ynab-api/src/models/save_transactions_response.rs b/src/models/save_transactions_response.rs
index be0782c..be0782c 100644
--- a/ynab-api/src/models/save_transactions_response.rs
+++ b/src/models/save_transactions_response.rs
diff --git a/ynab-api/src/models/save_transactions_response_data.rs b/src/models/save_transactions_response_data.rs
index 0086874..0086874 100644
--- a/ynab-api/src/models/save_transactions_response_data.rs
+++ b/src/models/save_transactions_response_data.rs
diff --git a/ynab-api/src/models/save_transactions_wrapper.rs b/src/models/save_transactions_wrapper.rs
index ed49180..ed49180 100644
--- a/ynab-api/src/models/save_transactions_wrapper.rs
+++ b/src/models/save_transactions_wrapper.rs
diff --git a/ynab-api/src/models/scheduled_sub_transaction.rs b/src/models/scheduled_sub_transaction.rs
index dfc0aca..dfc0aca 100644
--- a/ynab-api/src/models/scheduled_sub_transaction.rs
+++ b/src/models/scheduled_sub_transaction.rs
diff --git a/ynab-api/src/models/scheduled_transaction_detail.rs b/src/models/scheduled_transaction_detail.rs
index d86ef25..d86ef25 100644
--- a/ynab-api/src/models/scheduled_transaction_detail.rs
+++ b/src/models/scheduled_transaction_detail.rs
diff --git a/ynab-api/src/models/scheduled_transaction_detail_all_of.rs b/src/models/scheduled_transaction_detail_all_of.rs
index cf7e6c7..cf7e6c7 100644
--- a/ynab-api/src/models/scheduled_transaction_detail_all_of.rs
+++ b/src/models/scheduled_transaction_detail_all_of.rs
diff --git a/ynab-api/src/models/scheduled_transaction_response.rs b/src/models/scheduled_transaction_response.rs
index 25286cd..25286cd 100644
--- a/ynab-api/src/models/scheduled_transaction_response.rs
+++ b/src/models/scheduled_transaction_response.rs
diff --git a/ynab-api/src/models/scheduled_transaction_response_data.rs b/src/models/scheduled_transaction_response_data.rs
index 70db916..70db916 100644
--- a/ynab-api/src/models/scheduled_transaction_response_data.rs
+++ b/src/models/scheduled_transaction_response_data.rs
diff --git a/ynab-api/src/models/scheduled_transaction_summary.rs b/src/models/scheduled_transaction_summary.rs
index 7966d2c..7966d2c 100644
--- a/ynab-api/src/models/scheduled_transaction_summary.rs
+++ b/src/models/scheduled_transaction_summary.rs
diff --git a/ynab-api/src/models/scheduled_transactions_response.rs b/src/models/scheduled_transactions_response.rs
index 8ff8378..8ff8378 100644
--- a/ynab-api/src/models/scheduled_transactions_response.rs
+++ b/src/models/scheduled_transactions_response.rs
diff --git a/ynab-api/src/models/scheduled_transactions_response_data.rs b/src/models/scheduled_transactions_response_data.rs
index 71e5c79..71e5c79 100644
--- a/ynab-api/src/models/scheduled_transactions_response_data.rs
+++ b/src/models/scheduled_transactions_response_data.rs
diff --git a/ynab-api/src/models/sub_transaction.rs b/src/models/sub_transaction.rs
index 633ae38..633ae38 100644
--- a/ynab-api/src/models/sub_transaction.rs
+++ b/src/models/sub_transaction.rs
diff --git a/ynab-api/src/models/transaction_detail.rs b/src/models/transaction_detail.rs
index 956eae9..956eae9 100644
--- a/ynab-api/src/models/transaction_detail.rs
+++ b/src/models/transaction_detail.rs
diff --git a/ynab-api/src/models/transaction_detail_all_of.rs b/src/models/transaction_detail_all_of.rs
index cead8f5..cead8f5 100644
--- a/ynab-api/src/models/transaction_detail_all_of.rs
+++ b/src/models/transaction_detail_all_of.rs
diff --git a/ynab-api/src/models/transaction_response.rs b/src/models/transaction_response.rs
index cc65780..cc65780 100644
--- a/ynab-api/src/models/transaction_response.rs
+++ b/src/models/transaction_response.rs
diff --git a/ynab-api/src/models/transaction_response_data.rs b/src/models/transaction_response_data.rs
index 5f96108..5f96108 100644
--- a/ynab-api/src/models/transaction_response_data.rs
+++ b/src/models/transaction_response_data.rs
diff --git a/ynab-api/src/models/transaction_summary.rs b/src/models/transaction_summary.rs
index 94ce164..94ce164 100644
--- a/ynab-api/src/models/transaction_summary.rs
+++ b/src/models/transaction_summary.rs
diff --git a/ynab-api/src/models/transactions_response.rs b/src/models/transactions_response.rs
index cda3c1f..cda3c1f 100644
--- a/ynab-api/src/models/transactions_response.rs
+++ b/src/models/transactions_response.rs
diff --git a/ynab-api/src/models/transactions_response_data.rs b/src/models/transactions_response_data.rs
index 4ac9438..4ac9438 100644
--- a/ynab-api/src/models/transactions_response_data.rs
+++ b/src/models/transactions_response_data.rs
diff --git a/ynab-api/src/models/update_transaction.rs b/src/models/update_transaction.rs
index 5e93837..5e93837 100644
--- a/ynab-api/src/models/update_transaction.rs
+++ b/src/models/update_transaction.rs
diff --git a/ynab-api/src/models/update_transaction_wrapper.rs b/src/models/update_transaction_wrapper.rs
index 5c34fbb..5c34fbb 100644
--- a/ynab-api/src/models/update_transaction_wrapper.rs
+++ b/src/models/update_transaction_wrapper.rs
diff --git a/ynab-api/src/models/update_transactions_response.rs b/src/models/update_transactions_response.rs
index c56d2b3..c56d2b3 100644
--- a/ynab-api/src/models/update_transactions_response.rs
+++ b/src/models/update_transactions_response.rs
diff --git a/ynab-api/src/models/update_transactions_wrapper.rs b/src/models/update_transactions_wrapper.rs
index 810d054..810d054 100644
--- a/ynab-api/src/models/update_transactions_wrapper.rs
+++ b/src/models/update_transactions_wrapper.rs
diff --git a/ynab-api/src/models/user.rs b/src/models/user.rs
index 8143284..8143284 100644
--- a/ynab-api/src/models/user.rs
+++ b/src/models/user.rs
diff --git a/ynab-api/src/models/user_response.rs b/src/models/user_response.rs
index e2427e0..e2427e0 100644
--- a/ynab-api/src/models/user_response.rs
+++ b/src/models/user_response.rs
diff --git a/ynab-api/src/models/user_response_data.rs b/src/models/user_response_data.rs
index 9fc30f8..9fc30f8 100644
--- a/ynab-api/src/models/user_response_data.rs
+++ b/src/models/user_response_data.rs
diff --git a/src/paths.rs b/src/paths.rs
deleted file mode 100644
index f53bef5..0000000
--- a/src/paths.rs
+++ /dev/null
@@ -1,56 +0,0 @@
-use snafu::{OptionExt, ResultExt};
-use std::io::Read;
-
-#[derive(Debug, snafu::Snafu)]
-pub enum Error {
- #[snafu(display("couldn't find config path for project {}", name))]
- FindConfigDir { name: String },
-
- #[snafu(display(
- "couldn't open file {}: {}",
- file.to_string_lossy(),
- source
- ))]
- OpenFile {
- file: std::path::PathBuf,
- source: std::io::Error,
- },
-
- #[snafu(display(
- "couldn't read file {}: {}",
- file.to_string_lossy(),
- source
- ))]
- ReadFile {
- file: std::path::PathBuf,
- source: std::io::Error,
- },
-}
-
-pub type Result<T> = std::result::Result<T, Error>;
-
-const PROJECT_NAME: &str = "ynab";
-
-pub fn api_key() -> Result<std::path::PathBuf> {
- Ok(directories::ProjectDirs::from("", "", PROJECT_NAME)
- .with_context(|| FindConfigDir {
- name: PROJECT_NAME.to_string(),
- })?
- .config_dir()
- .join("api-key"))
-}
-
-pub fn read_api_key() -> Result<String> {
- let mut key = String::new();
- let key_file = api_key()?;
- std::fs::File::open(key_file.clone())
- .with_context(|| OpenFile {
- file: key_file.clone(),
- })?
- .read_to_string(&mut key)
- .with_context(|| ReadFile {
- file: key_file.clone(),
- })?;
- let key = key.trim();
- Ok(key.to_string())
-}
diff --git a/src/views.rs b/src/views.rs
deleted file mode 100644
index 6129e53..0000000
--- a/src/views.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-mod txn_table;
-mod txn_tables;
-mod util;
-
-pub use txn_tables::TxnTables;
diff --git a/src/views/txn_table.rs b/src/views/txn_table.rs
deleted file mode 100644
index b71a92e..0000000
--- a/src/views/txn_table.rs
+++ /dev/null
@@ -1,151 +0,0 @@
-use cursive::view::{Identifiable, View, ViewWrapper};
-
-#[derive(Clone, Copy, Eq, Hash, PartialEq)]
-pub enum TxnColumn {
- Selected,
- Date,
- Account,
- Payee,
- Amount,
- TotalAmount,
-}
-
-pub type TxnTableView =
- cursive_table_view::TableView<crate::ynab::Transaction, TxnColumn>;
-pub struct TxnTable {
- view: super::util::FullView<TxnTableView>,
-}
-
-impl cursive::view::ViewWrapper for TxnTable {
- cursive::wrap_impl!(self.view: super::util::FullView<TxnTableView>);
-}
-
-impl TxnTable {
- pub fn new(
- txns: Vec<crate::ynab::Transaction>,
- id: &'static str,
- ) -> Self {
- let mut table = cursive_table_view::TableView::new()
- .column(TxnColumn::Selected, "Sel", |c| c.width(3))
- .column(TxnColumn::Date, "Date", |c| c.width(10))
- .column(TxnColumn::Account, "Account", |c| c.width(15))
- .column(TxnColumn::Payee, "Payee", |c| c)
- .column(TxnColumn::Amount, "Amount", |c| {
- c.align(cursive::align::HAlign::Right).width(10)
- })
- .column(TxnColumn::TotalAmount, "", |c| {
- c.align(cursive::align::HAlign::Right).width(10)
- })
- .default_column(TxnColumn::Date)
- .on_submit(|s, _, _| {
- s.on_event(cursive::event::Event::Key(
- cursive::event::Key::F0,
- ));
- });
- table.set_items(txns);
- let view = cursive::views::OnEventView::new(table)
- .on_event_inner(' ', |v: &mut TxnTableView, _| {
- if let Some(idx) = v.item() {
- let txn = v.borrow_item_mut(idx).unwrap();
- txn.selected = !txn.selected;
- }
- None
- })
- .on_event_inner('h', |v: &mut TxnTableView, _| {
- v.on_event(cursive::event::Event::Key(
- cursive::event::Key::Left,
- ));
- None
- })
- .on_event_inner('j', |v: &mut TxnTableView, _| {
- v.on_event(cursive::event::Event::Key(
- cursive::event::Key::Down,
- ));
- None
- })
- .on_event_inner('k', |v: &mut TxnTableView, _| {
- v.on_event(cursive::event::Event::Key(
- cursive::event::Key::Up,
- ));
- None
- })
- .on_event_inner('l', |v: &mut TxnTableView, _| {
- v.on_event(cursive::event::Event::Key(
- cursive::event::Key::Right,
- ));
- None
- })
- .on_event_inner('g', |v: &mut TxnTableView, _| {
- v.set_selected_row(0);
- None
- })
- .on_event_inner('G', |v: &mut TxnTableView, _| {
- v.set_selected_row(v.len() - 1);
- None
- })
- .with_id(id);
- TxnTable { view }
- }
-
- pub fn len(&self) -> usize {
- self.view
- .with_view(|v| v.with_view(|v| v.len()).unwrap())
- .unwrap()
- }
-
- // XXX why does borrow_items require &mut self?
- pub fn amount(&mut self) -> i64 {
- self.view
- .get_mut()
- .get_inner_mut()
- .borrow_items()
- .iter()
- .map(|t| t.amount)
- .sum()
- }
-}
-
-impl cursive_table_view::TableViewItem<TxnColumn>
- for crate::ynab::Transaction
-{
- fn to_column(&self, column: TxnColumn) -> String {
- match column {
- TxnColumn::Selected => {
- if self.selected {
- "[x]".to_string()
- } else {
- "[ ]".to_string()
- }
- }
- TxnColumn::Date => self.date.clone(),
- TxnColumn::Account => {
- self.account.clone().unwrap_or_else(|| "".to_string())
- }
- TxnColumn::Payee => {
- self.payee.clone().unwrap_or_else(|| "".to_string())
- }
- TxnColumn::Amount => crate::ynab::format_amount(self.amount),
- TxnColumn::TotalAmount => {
- if self.amount == self.total_amount {
- "".to_string()
- } else {
- crate::ynab::format_amount(self.total_amount)
- }
- }
- }
- }
-
- fn cmp(&self, other: &Self, column: TxnColumn) -> std::cmp::Ordering
- where
- Self: Sized,
- {
- match column {
- TxnColumn::Selected => std::cmp::Ordering::Equal,
- TxnColumn::Date => self.date.cmp(&other.date),
- TxnColumn::Account => self.account.cmp(&other.account),
- TxnColumn::Payee => self.payee.cmp(&other.payee),
- TxnColumn::Amount => self.amount.cmp(&other.amount),
- TxnColumn::TotalAmount => self.amount.cmp(&other.total_amount),
- }
- }
-}
diff --git a/src/views/txn_tables.rs b/src/views/txn_tables.rs
deleted file mode 100644
index 62539ac..0000000
--- a/src/views/txn_tables.rs
+++ /dev/null
@@ -1,353 +0,0 @@
-use cursive::view::{Identifiable, View};
-
-const SELECTED_TOTAL_ID: &str = "selected_total";
-const INFLOWS_TABLE_ID: &str = "inflows_table";
-const OUTFLOWS_TABLE_ID: &str = "outflows_table";
-
-pub struct TxnTables {
- view: super::util::FullView<cursive::views::LinearLayout>,
-}
-
-impl cursive::view::ViewWrapper for TxnTables {
- cursive::wrap_impl!(
- self.view: super::util::FullView<cursive::views::LinearLayout>
- );
-}
-
-impl TxnTables {
- pub fn new(id: &'static str, budget: &crate::ynab::Budget) -> Self {
- let mut layout = cursive::views::LinearLayout::vertical();
-
- layout.add_child(
- cursive::views::TextView::new("Selected: $0.00 (0 transactions)")
- .h_align(cursive::align::HAlign::Right)
- .with_id(SELECTED_TOTAL_ID),
- );
-
- let inflows = budget
- .reimbursables()
- .iter()
- .filter(|t| !t.reimbursed && t.amount > 0)
- .cloned()
- .collect();
- let mut inflows_table =
- super::txn_table::TxnTable::new(inflows, INFLOWS_TABLE_ID);
- layout.add_child(cursive::views::TextView::new(format!(
- "Inflows: {} ({} transaction{}",
- crate::ynab::format_amount(inflows_table.amount()),
- inflows_table.len(),
- if inflows_table.len() == 1 { ") " } else { "s)" }
- )));
- layout.add_child(cursive::views::CircularFocus::wrap_arrows(
- cursive::views::BoxView::with_min_height(
- std::cmp::min(std::cmp::max(inflows_table.len(), 1), 5) + 2,
- cursive::views::BoxView::with_full_width(inflows_table),
- ),
- ));
-
- layout.add_child(cursive::views::TextView::new(" "));
-
- let outflows = budget
- .reimbursables()
- .iter()
- .filter(|t| !t.reimbursed && t.amount <= 0)
- .cloned()
- .collect();
- let mut outflows_table =
- super::txn_table::TxnTable::new(outflows, OUTFLOWS_TABLE_ID);
- layout.add_child(cursive::views::TextView::new(format!(
- "Outflows: {} ({} transaction{}",
- crate::ynab::format_amount(outflows_table.amount()),
- outflows_table.len(),
- if outflows_table.len() == 1 {
- ") "
- } else {
- "s)"
- }
- )));
- layout.add_child(cursive::views::CircularFocus::wrap_arrows(
- cursive::views::BoxView::with_full_screen(outflows_table),
- ));
-
- let event_view = cursive::views::OnEventView::new(layout)
- .on_event(cursive::event::Key::F0, move |s| {
- submit(s);
- })
- .on_event('r', move |s| {
- refresh(s);
- })
- .on_pre_event_inner(' ', |v, _| select(v))
- .with_id(id);
-
- TxnTables { view: event_view }
- }
-}
-
-fn submit(s: &mut cursive::Cursive) {
- let inflows: Vec<_> = s
- .call_on_id(
- INFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- v.get_inner_mut()
- .borrow_items()
- .iter()
- .filter(|t| t.selected)
- .cloned()
- .collect()
- },
- )
- .unwrap();
- let outflows: Vec<_> = s
- .call_on_id(
- OUTFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- v.get_inner_mut()
- .borrow_items()
- .iter()
- .filter(|t| t.selected)
- .cloned()
- .collect()
- },
- )
- .unwrap();
- let total_inflow: i64 = inflows.iter().map(|t| t.amount).sum();
- let total_outflow: i64 = outflows.iter().map(|t| t.amount).sum();
- let total_amount = total_inflow + total_outflow;
- if total_amount == 0 && (inflows.len() + outflows.len() > 0) {
- let budget: &mut crate::ynab::Budget = s.user_data().unwrap();
- let txns: Vec<_> = inflows.iter().chain(outflows.iter()).collect();
- let err = budget.reconcile_transactions(&txns);
- if let Err(err) = err {
- s.add_layer(super::util::dialog(&format!("Error: {}", err)))
- } else {
- s.add_layer(super::util::dialog(&format!(
- "Successfully updated {} transactions",
- txns.len()
- )));
- s.call_on_id(
- INFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- let v = v.get_inner_mut();
- let all_txns = v.borrow_items_mut();
- for id in txns.iter().map(|t| t.id.clone()) {
- if let Some(idx) =
- all_txns.iter().position(|t| t.id == id)
- {
- all_txns.remove(idx);
- }
- }
- if let Some(row) = v.row() {
- if row >= v.len() {
- v.set_selected_row(v.len() - 1);
- }
- }
- },
- )
- .unwrap();
- s.call_on_id(
- OUTFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- let v = v.get_inner_mut();
- let all_txns = v.borrow_items_mut();
- for id in txns.iter().map(|t| t.id.clone()) {
- if let Some(idx) =
- all_txns.iter().position(|t| t.id == id)
- {
- all_txns.remove(idx);
- }
- }
- if let Some(row) = v.row() {
- if row >= v.len() {
- v.set_selected_row(v.len() - 1);
- }
- }
- },
- )
- .unwrap();
- }
- } else if total_amount != 0 {
- s.add_layer(super::util::dialog(&format!(
- "Selected amount is {}, must be 0",
- crate::ynab::format_amount(total_amount)
- )))
- }
-}
-
-fn refresh(s: &mut cursive::Cursive) {
- let budget: &mut crate::ynab::Budget = s.user_data().unwrap();
- let err = budget.refresh();
- if let Err(err) = err {
- s.add_layer(super::util::dialog(&format!("Error: {}", err)));
- return;
- }
-
- let mut inflows: Vec<_> = budget
- .reimbursables()
- .iter()
- .filter(|t| !t.reimbursed && t.amount > 0)
- .cloned()
- .collect();
- s.call_on_id(
- INFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- let v = v.get_inner_mut();
- let selected: std::collections::HashSet<_> = v
- .borrow_items()
- .iter()
- .filter(|t| t.selected)
- .map(|t| t.id.clone())
- .collect();
- let row = v
- .item()
- .and_then(|idx| v.borrow_item(idx).map(|t| t.id.clone()));
- for mut t in inflows.iter_mut() {
- if selected.contains(&t.id) {
- t.selected = true;
- }
- }
- let idx =
- row.and_then(|id| inflows.iter().position(|t| t.id == id));
- v.set_items(inflows);
- if let Some(idx) = idx {
- v.set_selected_item(idx);
- }
- },
- )
- .unwrap();
-
- let budget: &mut crate::ynab::Budget = s.user_data().unwrap();
- let mut outflows: Vec<_> = budget
- .reimbursables()
- .iter()
- .filter(|t| !t.reimbursed && t.amount <= 0)
- .cloned()
- .collect();
- s.call_on_id(
- OUTFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- let v = v.get_inner_mut();
- let selected: std::collections::HashSet<_> = v
- .borrow_items()
- .iter()
- .filter(|t| t.selected)
- .map(|t| t.id.clone())
- .collect();
- let row = v
- .item()
- .and_then(|idx| v.borrow_item(idx).map(|t| t.id.clone()));
- for mut t in outflows.iter_mut() {
- if selected.contains(&t.id) {
- t.selected = true;
- }
- }
- let idx =
- row.and_then(|id| outflows.iter().position(|t| t.id == id));
- v.set_items(outflows);
- if let Some(idx) = idx {
- v.set_selected_item(idx);
- }
- },
- )
- .unwrap();
-
- render_selected_total(s);
-}
-
-fn select(
- v: &mut cursive::views::LinearLayout,
-) -> Option<cursive::event::EventResult> {
- let idx = v.get_focus_index();
- let child = v.get_child_mut(idx).unwrap();
- child.call_on_any(
- &cursive::view::Selector::Id(INFLOWS_TABLE_ID),
- Box::new(|v| {
- v.downcast_mut::<cursive::views::IdView<
- cursive::views::OnEventView<super::txn_table::TxnTableView>,
- >>()
- .map(|v| v.on_event(cursive::event::Event::Char(' ')));
- }),
- );
- child.call_on_any(
- &cursive::view::Selector::Id(OUTFLOWS_TABLE_ID),
- Box::new(|v| {
- v.downcast_mut::<cursive::views::IdView<
- cursive::views::OnEventView<super::txn_table::TxnTableView>,
- >>()
- .map(|v| v.on_event(cursive::event::Event::Char(' ')));
- }),
- );
- Some(cursive::event::EventResult::with_cb(|s| {
- render_selected_total(s);
- }))
-}
-
-fn render_selected_total(s: &mut cursive::Cursive) {
- let inflows: Vec<_> = s
- .call_on_id(
- INFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- v.get_inner_mut()
- .borrow_items()
- .iter()
- .filter(|t| t.selected)
- .map(|t| t.amount)
- .collect()
- },
- )
- .unwrap();
- let outflows: Vec<_> = s
- .call_on_id(
- OUTFLOWS_TABLE_ID,
- |v: &mut cursive::views::OnEventView<
- super::txn_table::TxnTableView,
- >| {
- v.get_inner_mut()
- .borrow_items()
- .iter()
- .filter(|t| t.selected)
- .map(|t| t.amount)
- .collect()
- },
- )
- .unwrap();
- let outflow: i64 = outflows.iter().sum();
- let inflow: i64 = inflows.iter().sum();
- let amount = outflow + inflow;
- s.call_on_id(SELECTED_TOTAL_ID, |v: &mut cursive::views::TextView| {
- let mut sstr =
- cursive::utils::markup::StyledString::plain("Selected: ");
- let color = if amount == 0 && outflows.len() + inflows.len() != 0 {
- cursive::theme::Color::Dark(cursive::theme::BaseColor::Green)
- } else {
- cursive::theme::Color::TerminalDefault
- };
- sstr.append(cursive::utils::markup::StyledString::styled(
- crate::ynab::format_amount(amount),
- color,
- ));
- sstr.append(format!(
- " ({} transaction{}",
- outflows.len() + inflows.len(),
- if outflows.len() + inflows.len() == 1 {
- ") "
- } else {
- "s)"
- }
- ));
- v.set_content(sstr);
- });
-}
diff --git a/src/views/util.rs b/src/views/util.rs
deleted file mode 100644
index eb22976..0000000
--- a/src/views/util.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-pub type FullView<T> = cursive::views::IdView<cursive::views::OnEventView<T>>;
-
-pub fn dialog(s: &str) -> impl cursive::view::View {
- cursive::views::Panel::new(cursive::views::Dialog::info(s))
-}
diff --git a/src/ynab.rs b/src/ynab.rs
deleted file mode 100644
index f07d86e..0000000
--- a/src/ynab.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-mod budget;
-mod client;
-mod transaction;
-mod util;
-
-pub use budget::Budget;
-pub use budget::Error as BudgetError;
-pub use client::Client;
-pub use transaction::Transaction;
-pub use util::format_amount;
diff --git a/src/ynab/budget.rs b/src/ynab/budget.rs
deleted file mode 100644
index e3275bb..0000000
--- a/src/ynab/budget.rs
+++ /dev/null
@@ -1,216 +0,0 @@
-use snafu::{OptionExt, ResultExt};
-
-#[derive(Debug, snafu::Snafu)]
-pub enum Error {
- #[snafu(display("couldn't get default budget: {}", source))]
- GetBudget { source: super::client::Error },
-
- #[snafu(display("couldn't update transactions: {}", source))]
- UpdateTransactions { source: super::client::Error },
-
- #[snafu(display("couldn't find the reimbursables category"))]
- FindReimbursablesCategory,
-}
-
-pub type Result<T> = std::result::Result<T, Error>;
-
-pub struct Budget {
- client: super::client::Client,
- id: String,
- name: String,
- reimbursables: Vec<super::transaction::Transaction>,
-}
-
-impl Budget {
- pub fn new(key: &str) -> Result<Self> {
- let client = super::client::Client::new(key);
- let budget = client.default_budget().context(GetBudget)?;
- let reimbursables = Self::get_reimbursables(&budget)?;
- let budget = Self {
- client,
- id: budget.id.clone(),
- name: budget.name.clone(),
- reimbursables,
- };
- budget.check();
- Ok(budget)
- }
-
- #[must_use]
- pub fn refresh(&mut self) -> Result<()> {
- let budget = self.client.default_budget().context(GetBudget)?;
- self.id = budget.id.clone();
- self.name = budget.name.clone();
- self.reimbursables = Self::get_reimbursables(&budget)?;
- self.check();
- Ok(())
- }
-
- pub fn name(&self) -> String {
- self.name.clone()
- }
-
- pub fn id(&self) -> String {
- self.id.clone()
- }
-
- pub fn reimbursables(&self) -> &[super::transaction::Transaction] {
- &self.reimbursables
- }
-
- #[must_use]
- pub fn reconcile_transactions(
- &self,
- txns: &[&super::transaction::Transaction],
- ) -> Result<()> {
- let mut to_update =
- ynab_api::models::UpdateTransactionsWrapper::new();
- to_update.transactions = Some(
- txns.iter()
- .map(|t| {
- let mut ut = t.to_update_transaction();
- ut.flag_color = Some("green".to_string());
- ut
- })
- .collect(),
- );
- self.client
- .update_transactions(&self.id, to_update)
- .context(UpdateTransactions)?;
- Ok(())
- }
-
- fn get_reimbursables(
- budget: &ynab_api::models::BudgetDetail,
- ) -> Result<Vec<super::transaction::Transaction>> {
- let reimbursables_id = budget
- .categories
- .as_ref()
- .and_then(|categories| {
- categories
- .iter()
- .find(|c| c.name == "Reimbursables")
- .map(|c| c.id.clone())
- })
- .context(FindReimbursablesCategory)?;
-
- let mut payee_map = std::collections::HashMap::new();
- if let Some(payees) = &budget.payees {
- for p in payees {
- payee_map.insert(p.id.clone(), p.name.clone());
- }
- }
- let payee_map = payee_map;
-
- let mut account_map = std::collections::HashMap::new();
- if let Some(accounts) = &budget.accounts {
- for a in accounts {
- account_map.insert(a.id.clone(), a.name.clone());
- }
- }
- let account_map = account_map;
-
- let mut reimbursables = vec![];
-
- let mut transaction_map = std::collections::HashMap::new();
- if let Some(transactions) = &budget.transactions {
- for t in transactions {
- transaction_map.insert(t.id.clone(), t);
-
- if let Some(category_id) = &t.category_id {
- if category_id != &reimbursables_id {
- continue;
- }
- } else {
- continue;
- }
-
- let payee = t
- .payee_id
- .iter()
- .map(|payee_id| payee_map.get(payee_id).cloned())
- .next()
- .unwrap_or(None);
- let account = account_map.get(&t.account_id).cloned();
-
- let mut txn =
- super::transaction::Transaction::from_transaction(t);
- txn.payee = payee;
- txn.account = account;
- reimbursables.push(txn);
- }
- }
- let transaction_map = transaction_map;
-
- if let Some(subtransactions) = &budget.subtransactions {
- for st in subtransactions {
- if let Some(category_id) = &st.category_id {
- if category_id != &reimbursables_id {
- continue;
- }
- } else {
- continue;
- }
-
- let t = transaction_map[&st.transaction_id];
- let payee = st
- .payee_id
- .iter()
- .map(|payee_id| payee_map.get(payee_id).cloned())
- .next()
- .unwrap_or_else(|| {
- t.payee_id
- .iter()
- .map(|payee_id| payee_map.get(payee_id).cloned())
- .next()
- .unwrap_or(None)
- });
- let account = account_map.get(&t.account_id).cloned();
-
- let mut txn =
- super::transaction::Transaction::from_sub_transaction(
- t, st,
- );
- txn.payee = payee;
- txn.account = account;
- reimbursables.push(txn);
- }
- }
-
- reimbursables.sort_by_cached_key(|t| t.date.clone());
- Ok(reimbursables)
- }
-
- fn check(&self) {
- self.check_reconciled();
- self.check_has_inflows();
- }
-
- fn check_reconciled(&self) {
- let reconciled_amount: i64 = self
- .reimbursables()
- .iter()
- .filter(|t| t.reimbursed)
- .map(|t| t.amount)
- .sum();
- if reconciled_amount != 0 {
- eprintln!(
- "reconciled reimbursables don't sum to $0.00: ${}",
- crate::ynab::format_amount(reconciled_amount)
- );
- std::process::exit(1);
- }
- }
-
- fn check_has_inflows(&self) {
- let txns = self
- .reimbursables()
- .iter()
- .filter(|t| !t.reimbursed && t.amount > 0)
- .count();
- if txns == 0 {
- eprintln!("no transactions to reconcile");
- std::process::exit(1);
- }
- }
-}
diff --git a/src/ynab/client.rs b/src/ynab/client.rs
deleted file mode 100644
index 19b456b..0000000
--- a/src/ynab/client.rs
+++ /dev/null
@@ -1,76 +0,0 @@
-#[derive(Debug, snafu::Snafu)]
-pub enum Error {
- // ynab-api error types don't implement Error, so can't use the
- // auto-source behavior
- #[snafu(display("failed to update transactions: {}", source_msg))]
- UpdateTransactions { source_msg: String },
-
- #[snafu(display("failed to get budgets: {}", source_msg))]
- GetBudgets { source_msg: String },
-
- #[snafu(display("failed to get budget {}: {}", id, source_msg))]
- GetBudgetById { id: String, source_msg: String },
-}
-
-pub type Result<T> = std::result::Result<T, Error>;
-
-pub struct Client {
- api: ynab_api::apis::client::APIClient,
-}
-
-impl Client {
- pub fn new(key: &str) -> Self {
- let mut ynab_config =
- ynab_api::apis::configuration::Configuration::new();
- ynab_config.api_key = Some(ynab_api::apis::configuration::ApiKey {
- prefix: Some("Bearer".to_string()),
- key: key.to_string(),
- });
- Self {
- api: ynab_api::apis::client::APIClient::new(ynab_config),
- }
- }
-
- pub fn default_budget(&self) -> Result<ynab_api::models::BudgetDetail> {
- let budget_id = self
- .api
- .budgets_api()
- .get_budgets()
- .map_err(|e| Error::GetBudgets {
- source_msg: format!("{:?}", e),
- })?
- .data
- .budgets
- .iter()
- .next()
- .ok_or_else(|| Error::GetBudgets {
- source_msg: "no budgets found".to_string(),
- })?
- .id
- .clone();
- Ok(self
- .api
- .budgets_api()
- .get_budget_by_id(&budget_id, 0)
- .map_err(|e| Error::GetBudgetById {
- id: budget_id.clone(),
- source_msg: format!("{:?}", e),
- })?
- .data
- .budget)
- }
-
- pub fn update_transactions(
- &self,
- budget_id: &str,
- transactions: ynab_api::models::UpdateTransactionsWrapper,
- ) -> Result<()> {
- self.api
- .transactions_api()
- .update_transactions(budget_id, transactions)
- .map(|_| ())
- .map_err(|e| Error::UpdateTransactions {
- source_msg: format!("{:?}", e),
- })
- }
-}
diff --git a/src/ynab/transaction.rs b/src/ynab/transaction.rs
deleted file mode 100644
index be31019..0000000
--- a/src/ynab/transaction.rs
+++ /dev/null
@@ -1,101 +0,0 @@
-#[derive(Clone, Debug)]
-pub struct Transaction {
- pub id: String,
- pub date: String,
- pub amount: i64,
- pub memo: Option<String>,
- pub cleared: String,
- pub approved: bool,
- pub flag_color: Option<String>,
- pub account_id: String,
- pub payee_id: Option<String>,
- pub category_id: Option<String>,
- pub import_id: Option<String>,
-
- pub account: Option<String>,
- pub payee: Option<String>,
- pub total_amount: i64,
- pub reimbursed: bool,
- pub selected: bool,
-}
-
-impl Transaction {
- pub fn from_transaction(
- t: &ynab_api::models::TransactionSummary,
- ) -> Self {
- let reimbursed = if let Some(color) = &t.flag_color {
- color == "green"
- } else {
- false
- };
- Self {
- id: t.id.clone(),
- date: t.date.clone(),
- amount: t.amount,
- memo: t.memo.clone(),
- cleared: t.cleared.clone(),
- approved: t.approved,
- flag_color: t.flag_color.clone(),
- account_id: t.account_id.clone(),
- payee_id: t.payee_id.clone(),
- category_id: t.category_id.clone(),
- import_id: t.import_id.clone(),
-
- account: None,
- payee: None,
- total_amount: t.amount,
- reimbursed,
- selected: false,
- }
- }
-
- pub fn from_sub_transaction(
- t: &ynab_api::models::TransactionSummary,
- st: &ynab_api::models::SubTransaction,
- ) -> Self {
- let reimbursed = if let Some(color) = &t.flag_color {
- color == "green"
- } else {
- false
- };
- Self {
- id: t.id.clone(),
- date: t.date.clone(),
- amount: st.amount,
- memo: t.memo.clone(),
- cleared: t.cleared.clone(),
- approved: t.approved,
- flag_color: t.flag_color.clone(),
- account_id: t.account_id.clone(),
- payee_id: t.payee_id.clone(),
- category_id: t.category_id.clone(),
- import_id: t.import_id.clone(),
-
- account: None,
- payee: None,
- total_amount: t.amount,
- reimbursed,
- selected: false,
- }
- }
-
- pub fn to_update_transaction(
- &self,
- ) -> ynab_api::models::UpdateTransaction {
- let mut ut = ynab_api::models::UpdateTransaction::new(
- self.account_id.clone(),
- self.date.clone(),
- self.amount,
- );
- ut.id = Some(self.id.clone());
- ut.payee_id = self.payee_id.clone();
- ut.category_id = self.category_id.clone();
- ut.memo = self.memo.clone();
- ut.cleared = Some(self.cleared.clone());
- ut.approved = Some(self.approved);
- ut.flag_color = self.flag_color.clone();
- ut.import_id = self.import_id.clone();
-
- ut
- }
-}
diff --git a/src/ynab/util.rs b/src/ynab/util.rs
deleted file mode 100644
index af8a8d1..0000000
--- a/src/ynab/util.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-pub fn format_amount(amount: i64) -> String {
- let dollars = amount.abs() / 1000;
- let cents = (amount.abs() % 1000) / 10;
- let sign = if amount < 0 { "-" } else { "" };
- format!("${}{}.{:02}", sign, dollars, cents)
-}
diff --git a/ynab-api/.gitignore b/ynab-api/.gitignore
deleted file mode 100644
index 6aa1064..0000000
--- a/ynab-api/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/target/
-**/*.rs.bk
-Cargo.lock
diff --git a/ynab-api/Cargo.toml b/ynab-api/Cargo.toml
deleted file mode 100644
index cbe32f4..0000000
--- a/ynab-api/Cargo.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name = "ynab-api"
-version = "1.0.0"
-authors = ["OpenAPI Generator team and contributors"]
-
-[dependencies]
-serde = "^1.0"
-serde_derive = "^1.0"
-serde_json = "^1.0"
-url = "1.5"
-reqwest = "~0.9"
-
-[dev-dependencies]