aboutsummaryrefslogtreecommitdiffstats
path: root/packages/abi-gen/src/utils.ts
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2018-07-12 17:53:21 +0800
committerGitHub <noreply@github.com>2018-07-12 17:53:21 +0800
commit34a903516439ec64073cfcb10cee87a9c4db902e (patch)
tree44f8a25ecfd3d860ffb9dc05f7494593744b1a0e /packages/abi-gen/src/utils.ts
parentb82fdd59e70e92ef139f5eeed8ed383a89866c7d (diff)
parent4b60a3cbab3a97125499cb89d9c253deebfb7d2d (diff)
downloaddexon-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.ts24
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;
+ }
+ }
+ },
};