commit 949264fcdc922f5bac65015b2cd73b8c69987bac Author: Sven Slootweg Date: Wed Aug 21 20:37:29 2019 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/README.md b/README.md new file mode 100644 index 0000000..54f8135 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# abn-amro-mt940-fix + +Fixes ABN AMRO's broken MT940 export files, so that they can be imported into GnuCash without changing the importer configuration. + +## Installation + +Make sure you have Node.js installed. + +```sh +npm install -g abn-amro-mt940-fix +``` + +## Usage + +```sh +abn-amro-mt940-fix YOUR-FILE.STA +``` + +A new file is created, with `-fixed` suffixed to the name, containing the fixed version of the export file. The new path is also printed to the terminal. diff --git a/fix.js b/fix.js new file mode 100755 index 0000000..5bcd02b --- /dev/null +++ b/fix.js @@ -0,0 +1,27 @@ +#!/usr/bin/env node + +"use strict"; + +const fs = require("fs"); +const chalk = require("chalk"); +const path = require("path"); + +if (process.argv[2] == null) { + console.error(chalk.red("You must specify one or more MT940 (.STA) files to fix, like so:\n abn-amro-mt940-fix YOUR-FILE.STA")); +} else { + process.argv.slice(2).forEach((file) => { + let absolutePath = path.resolve(file); + let contents = fs.readFileSync(absolutePath, { encoding: "utf8" }); + + let parsedPath = path.parse(absolutePath); + delete parsedPath.base; + parsedPath.name += "-fixed"; + + let fixedContents = contents.replace(/(^|\r\n-\r\n)ABNANL2A\r\n940\r\nABNANL2A\r\n/g, "$1"); + let fixedFilename = path.format(parsedPath); + + fs.writeFileSync(fixedFilename, fixedContents, { encoding: "utf8" }) + + console.log(file, "->", fixedFilename); + }); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1b44b2b --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "abn-amro-mt940-fix", + "description": "Fixes ABN AMRO-created MT940 export files, so they work in GnuCash", + "version": "1.0.0", + "main": "fix.js", + "bin": { + "abn-amro-mt940-fix": "./fix.js" + }, + "repository": "http://git.cryto.net/joepie91/abn-amro-mt940-fix.git", + "author": "Sven Slootweg ", + "license": "WTFPL OR CC0-1.0", + "dependencies": { + "bluebird": "^3.5.5", + "chalk": "^2.4.2" + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..2898cf5 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,53 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +bluebird@^3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0"