diff --git a/.gitignore b/.gitignore index 5f816c3..700003d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ node_modules /.idea cdt.iml +**/.DS_Store diff --git a/package-lock.json b/package-lock.json index 7c24334..85728df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -664,6 +664,14 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", @@ -1114,6 +1122,15 @@ "object-keys": "^1.0.12" } }, + "detect-character-encoding": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/detect-character-encoding/-/detect-character-encoding-0.8.0.tgz", + "integrity": "sha512-w+ZYVkUenSJjk1lh36wYcejy03oqZZcBXx52W6zNxyBT7tBMd8IjEglSh+pMHfTvjnPBqnziTGvX1RhitYm7wg==", + "requires": { + "bindings": "^1.3.0", + "nan": "^2.14.0" + } + }, "detect-indent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", @@ -1158,6 +1175,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, + "encoding-japanese": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-1.0.30.tgz", + "integrity": "sha512-bd/DFLAoJetvv7ar/KIpE3CNO8wEuyrt9Xuw6nSMiZ+Vrz/Q21BPsMHvARL2Wz6IKHKXgb+DWZqtRg1vql9cBg==" + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -1304,6 +1326,11 @@ "escape-string-regexp": "^1.0.5" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2273,6 +2300,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, "natural-orderby": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", diff --git a/package.json b/package.json index a472eab..06480a9 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,8 @@ "axios": "^0.19.0", "chalk": "^3.0.0", "crypto-js": "^3.1.9-1", + "detect-character-encoding": "^0.8.0", + "encoding-japanese": "^1.0.30", "jshashes": "^1.0.7", "minify": "^4.1.3", "moment": "^2.24.0", diff --git a/src/commands/hash.ts b/src/commands/hash.ts index 10f534c..7d6257b 100644 --- a/src/commands/hash.ts +++ b/src/commands/hash.ts @@ -1,6 +1,6 @@ import {Command, flags} from '@oclif/command' import * as CryptoJS from 'crypto-js' -// @ts-ignore +// import * as Hashes from 'jshashes' import Logger from '../utilities/logger' import Utilities from '../utilities/utilities' @@ -57,19 +57,19 @@ export default class Hash extends Command { Logger.success(this, `[${flags.type.toUpperCase()}] ${hashed}`) } - // import * as Hashes from 'jshashes' - // private getHashObjectBCK(flags: any) { + // BACKUP function + // private getHashObject2(flags: any) { // switch (flags.type.toUpperCase()) { // case 'SHA1': - // return new Hashes.SHA1() + // return new Hashes.SHA1().hex // case 'SHA256': - // return new Hashes.SHA256() + // return new Hashes.SHA256().hex // case 'SHA512': - // return new Hashes.SHA512() + // return new Hashes.SHA512().hex // case 'MD5': - // return new Hashes.MD5() + // return new Hashes.MD5().hex // case 'RMD160': - // return new Hashes.RMD160() + // return new Hashes.RMD160().hex // default: // Logger.error(this, 'Invalid Or Unsupported hash type') // } diff --git a/src/utilities/utilities.ts b/src/utilities/utilities.ts index 536a35e..ac12007 100644 --- a/src/utilities/utilities.ts +++ b/src/utilities/utilities.ts @@ -9,8 +9,8 @@ export default class Utilities { if (!fs.existsSync(filePath)) { Logger.error(thisRef, `Could not find file: ${filePath}`) // this will output error and exit command } else { - fileStr = fs.readFileSync(filePath, 'utf8') - + let fileBuffer = fs.readFileSync(filePath) + fileStr = fileBuffer.toString() // by default utf8 } return fileStr } diff --git a/test/commands/hash.test.ts b/test/commands/hash.test.ts index 9de7c41..b595591 100644 --- a/test/commands/hash.test.ts +++ b/test/commands/hash.test.ts @@ -22,11 +22,10 @@ describe('hash', () => { .stdout() .command(['hash', '-t', 'md5']) .exit(0) - .it("Empty Input String -> cdt hash -t md5", ctx => { + .it('Empty Input String -> cdt hash -t md5', ctx => { expect(ctx.stdout).to.contain('Input string is empty or undefined') }) - // passing sha1 as option test .stdout() @@ -107,4 +106,22 @@ describe('hash', () => { .it("If File not found ->cdt hash -f 'test/resources/filenotfound.txt'", ctx => { expect(ctx.stdout).to.contain('Could not find file') }) + + // TODO: fix this issue + // //installer file - checksum check sha1 + // test + // .stdout() + // .command(['hash', '-t', 'sha1', '-f', 'test/resources/apache-maven-3.6.3-src.tar.gz']) + // .it('Installer checksum validation', ctx => { + // expect(ctx.stdout).to.contain('ccf441f3bf7f477301ebc80742cbda1da73c30a2') + // }) + + // //installer file - checksum check sha512 + // test + // .stdout() + // .command(['hash', '-t', 'sha512', '-f', 'test/resources/apache-maven-3.6.3-src.tar.gz']) + // .it('Installer checksum validation', ctx => { + // expect(ctx.stdout).to.contain('14eef64ad13c1f689f2ab0d2b2b66c9273bf336e557d81d5c22ddb001c47cf51f03bb1465d6059ce9fdc2e43180ceb0638ce914af1f53af9c2398f5d429f114c') + // }) + }) diff --git a/test/resources/apache-maven-3.6.3-src.tar.gz b/test/resources/apache-maven-3.6.3-src.tar.gz new file mode 100644 index 0000000..799c1f1 Binary files /dev/null and b/test/resources/apache-maven-3.6.3-src.tar.gz differ