diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-07-12 17:53:21 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-12 17:53:21 +0800 |
commit | 34a903516439ec64073cfcb10cee87a9c4db902e (patch) | |
tree | 44f8a25ecfd3d860ffb9dc05f7494593744b1a0e /packages/abi-gen/src/utils.ts | |
parent | b82fdd59e70e92ef139f5eeed8ed383a89866c7d (diff) | |
parent | 4b60a3cbab3a97125499cb89d9c253deebfb7d2d (diff) | |
download | dexon-sol-tools-34a903516439ec64073cfcb10cee87a9c4db902e.tar dexon-sol-tools-34a903516439ec64073cfcb10cee87a9c4db902e.tar.gz dexon-sol-tools-34a903516439ec64073cfcb10cee87a9c4db902e.tar.bz2 dexon-sol-tools-34a903516439ec64073cfcb10cee87a9c4db902e.tar.lz dexon-sol-tools-34a903516439ec64073cfcb10cee87a9c4db902e.tar.xz dexon-sol-tools-34a903516439ec64073cfcb10cee87a9c4db902e.tar.zst dexon-sol-tools-34a903516439ec64073cfcb10cee87a9c4db902e.zip |
Merge pull request #788 from feuGeneA/abi-gen-ignore-unchanged
Using timestamps, skip generation of already-up-to-date contract wrappers
Diffstat (limited to 'packages/abi-gen/src/utils.ts')
-rw-r--r-- | packages/abi-gen/src/utils.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/abi-gen/src/utils.ts b/packages/abi-gen/src/utils.ts index 66390174c..56b996ce3 100644 --- a/packages/abi-gen/src/utils.ts +++ b/packages/abi-gen/src/utils.ts @@ -2,6 +2,7 @@ import { AbiType, ConstructorAbi, DataItem } from 'ethereum-types'; import * as fs from 'fs'; import * as _ from 'lodash'; import * as path from 'path'; +import toSnakeCase = require('to-snake-case'); import { ContractsBackend, ParamKind } from './types'; @@ -92,4 +93,27 @@ export const utils = { inputs: [], }; }, + makeOutputFileName(name: string): string { + let fileName = toSnakeCase(name); + // HACK: Snake case doesn't make a lot of sense for abbreviated names but we can't reliably detect abbreviations + // so we special-case the abbreviations we use. + fileName = fileName.replace('z_r_x', 'zrx').replace('e_r_c', 'erc'); + return fileName; + }, + writeOutputFile(filePath: string, renderedTsCode: string): void { + fs.writeFileSync(filePath, renderedTsCode); + }, + isOutputFileUpToDate(abiFile: string, outputFile: string): boolean { + const abiFileModTimeMs = fs.statSync(abiFile).mtimeMs; + try { + const outFileModTimeMs = fs.statSync(outputFile).mtimeMs; + return outFileModTimeMs > abiFileModTimeMs; + } catch (err) { + if (err.code === 'ENOENT') { + return false; + } else { + throw err; + } + } + }, }; |