- Added --raw CLI option

This commit is contained in:
AlexanderBuzz
2023-02-01 15:39:48 +01:00
parent 6af6309b82
commit f990006169
3 changed files with 20 additions and 8 deletions

View File

@@ -18,6 +18,10 @@ On first run, you have to install the necessary node.js dependencies:
node index.js -v node index.js -v
### Raw output without formatting, use --raw or -r:
node index.js -r
### Pick JSON fixture file: ### Pick JSON fixture file:
node index.js -f test-cases/tx3.json node index.js -f test-cases/tx3.json

View File

@@ -7,16 +7,16 @@ const TxSerializer = require('./tx-serializer')
function main(rawJson, verbose) { function main(rawJson, verbose) {
const json = JSON.parse(rawJson) const json = JSON.parse(rawJson)
console.log('\x1b[33m%s\x1b[0m', '\nXRPL Transaction Serialization Example') _pretty('\nXRPL Transaction Serialization Example', '\x1b[33m%s\x1b[0m')
console.log('\x1b[33m%s\x1b[0m', '--------------------------------------') _pretty('--------------------------------------', '\x1b[33m%s\x1b[0m')
console.log('\x1b[37m%s\x1b[0m', '\nSerializing the following transaction:') _pretty('\nSerializing the following transaction:', '\x1b[37m%s\x1b[0m')
console.log(json) _pretty(json)
if (verbose) console.log('') if (verbose) _pretty('')
const serializer = new TxSerializer(verbose) const serializer = new TxSerializer(verbose)
const serializedTx = serializer.serializeTx(json) const serializedTx = serializer.serializeTx(json)
console.log('\x1b[37m%s\x1b[0m', '\nSerialized Transaction:') _pretty('\nSerialized Transaction:', '\x1b[37m%s\x1b[0m')
console.log(serializedTx.toUpperCase()) console.log(serializedTx.toUpperCase())
} }
@@ -24,15 +24,23 @@ const args = parseArgs(process.argv.slice(2), {
alias: { alias: {
'f': 'filename', 'f': 'filename',
'j': 'json', 'j': 'json',
'r': 'raw',
's': 'stdin', 's': 'stdin',
'v': 'verbose', 'v': 'verbose',
}, },
default: { default: {
'f': 'test-cases/tx1.json', 'f': 'test-cases/tx1.json',
'r': false,
'v': false 'v': false
} }
}) })
function _pretty(message, color) {
if (!args.raw) {
console.log(color, message)
}
}
let rawJson let rawJson
if (args.json) { if (args.json) {
rawJson = args.json rawJson = args.json

View File

@@ -18,7 +18,7 @@ For an example of how the output is different if you change the `Fee` parameter
```bash ```bash
$ cat test-cases/tx1.json | \ $ cat test-cases/tx1.json | \
sed -e 's/"Fee": "10"/"Fee": "100"/' | \ sed -e 's/"Fee": "10"/"Fee": "100"/' | \
node index.js --json | \ node index.js --raw --stdin | \
diff - test-cases/tx1-binary.txt --color diff - test-cases/tx1-binary.txt --color
``` ```
@@ -46,7 +46,7 @@ CDC63E1DEE7FE3744630440220143759437C04F7B61F012563AFE90D8DAFC46E86035E1D965A9CED
For a friendlier display, you could pipe the output of the serializer to a file and use a visual tool like [Meld](http://meldmerge.org/) that shows intra-line differences: For a friendlier display, you could pipe the output of the serializer to a file and use a visual tool like [Meld](http://meldmerge.org/) that shows intra-line differences:
```bash ```bash
$ cat test-cases/tx1.json | sed -e 's/"Fee": "10"/"Fee": "100"/' | node index.js --stdin --stdin > /tmp/tx1-modified.txt && meld /tmp/tx1-modified.txt test-cases/tx1-binary.txt $ cat test-cases/tx1.json | sed -e 's/"Fee": "10"/"Fee": "100"/' | node index.js --stdin > /tmp/tx1-modified.txt && meld /tmp/tx1-modified.txt test-cases/tx1-binary.txt
``` ```
![Meld screenshot showing the `0A` / `64` difference](meld-example.png) ![Meld screenshot showing the `0A` / `64` difference](meld-example.png)