UNPKG

mintable

Version:

Automate your personal finances – for free, with no ads, and no data collection.

124 lines (123 loc) 5.29 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; exports.__esModule = true; var config_1 = require("../common/config"); var yargs_1 = require("yargs"); var logging_1 = require("../common/logging"); var os = __importStar(require("os")); var integrations_1 = require("../types/integrations"); var google_1 = require("../types/integrations/google"); exports.getOldConfig = function () { if (yargs_1.argv['old-config-file']) { var path = yargs_1.argv['old-config-file'].replace(/^~(?=$|\/|\\)/, os.homedir()); return { type: 'file', path: path }; } logging_1.logError('You need to specify the --old-config-file argument.'); }; exports["default"] = (function () { try { var oldConfigSource = exports.getOldConfig(); var oldConfigString = config_1.readConfig(oldConfigSource); var oldConfig_1 = config_1.parseConfig(oldConfigString); var deprecatedProperties = ['HOST', 'PORT', 'CATEGORY_OVERRIDES', 'DEBUG', 'CREATE_BALANCES_SHEET', 'DEBUG']; deprecatedProperties.forEach(function (prop) { if (oldConfig_1.hasOwnProperty(prop)) { logging_1.logWarn("Config property '" + prop + "' is deprecated and will not be migrated."); if (prop === 'DEBUG') { logging_1.logInfo("You can now use the --debug argument to log request output."); } } }); // Update to new Account syntax var balanceColumns = oldConfig_1['BALANCE_COLUMNS'].map(function (col) { switch (col) { case 'name': return 'institution'; case 'official_name': return 'account'; case 'balances.available': return 'available'; case 'balances.current': return 'current'; case 'balances.limit': return 'limit'; default: return col; } }); // Update to new Transaction syntax var transactionColumns = oldConfig_1['TRANSACTION_COLUMNS'].map(function (col) { switch (col) { case 'category.0': case 'category.1': return 'category'; default: return col; } }); var accounts_1 = {}; Object.keys(oldConfig_1).map(function (key) { if (key.includes('PLAID_TOKEN')) { var account = { id: key.replace('PLAID_TOKEN_', ''), integration: integrations_1.IntegrationId.Plaid, token: oldConfig_1[key] }; accounts_1[account.id] = account; } }); var newConfigSource = config_1.getConfigSource(); config_1.writeConfig(newConfigSource, { integrations: { google: { id: integrations_1.IntegrationId.Google, type: integrations_1.IntegrationType.Export, name: 'Google Sheets', credentials: { clientId: oldConfig_1['SHEETS_CLIENT_ID'], clientSecret: oldConfig_1['SHEETS_CLIENT_SECRET'], redirectUri: google_1.defaultGoogleConfig.credentials.redirectUri, accessToken: oldConfig_1['SHEETS_ACCESS_TOKEN'], refreshToken: oldConfig_1['SHEETS_REFRESH_TOKEN'], scope: google_1.defaultGoogleConfig.credentials.scope, tokenType: oldConfig_1['SHEETS_TOKEN_TYPE'], expiryDate: parseInt(oldConfig_1['SHEETS_EXPIRY_DATE']) }, documentId: oldConfig_1['SHEETS_SHEET_ID'], template: { documentId: oldConfig_1['TEMPLATE_SHEET']['SHEET_ID'], sheetTitle: oldConfig_1['TEMPLATE_SHEET']['SHEET_TITLE'] } }, plaid: { id: integrations_1.IntegrationId.Plaid, type: integrations_1.IntegrationType.Import, name: 'Plaid', environment: oldConfig_1['PLAID_ENVIRONMENT'], credentials: { clientId: oldConfig_1['PLAID_CLIENT_ID'], secret: oldConfig_1['PLAID_SECRET'] } } }, accounts: accounts_1, transactions: { integration: integrations_1.IntegrationId.Google, properties: transactionColumns.concat(oldConfig_1['REFERENCE_COLUMNS']) }, balances: { integration: integrations_1.IntegrationId.Google, properties: balanceColumns } }); } catch (e) { logging_1.logError('Error migrating configuration.', e); } });