diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..9b8511c --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,19 @@ + +{ + "branches": [ + "+([0-9])?(.{+([0-9]),x}).x", + {"name": "alpha", "prerelease": true}, + {"name": "beta", "prerelease": true}, + "master" + ], + "plugins": [ + "@semantic-release/github", + "@semantic-release/npm", + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + ["@semantic-release/git", { + "assets": ["package.json"], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + }] + ] +} diff --git a/.releaserc.yml b/.releaserc.yml deleted file mode 100644 index 6aebf77..0000000 --- a/.releaserc.yml +++ /dev/null @@ -1,16 +0,0 @@ -branches: - - +([0-9])?(.{+([0-9]),x}).x - - name: alpha - prerelease: true - - name: beta - prerelease: true - - name: master - -verifyConditions: - - "@semantic-release/github" - - "@semantic-release/npm" -generateNotes: [] -prepare: [] -publish: [] -success: [] -fail: [] diff --git a/README.md b/README.md index b8550dd..c483427 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,12 @@ Or with a cli interface ![How to use the CLI](docs/cli.png) -This project is in no way affiliated with IBM +### Wallets + +Ensure that you have wallets setup in the IBM Blockchain Platform Visual Studio Code extension with the name of each of the organisations in your network ## Import into the IBM Blockchain Platform extension for Visual Studio Code Find more information [here](https://github.com/IBM-Blockchain/blockchain-vscode-extension#json-node-files) + +This project is in no way affiliated with IBM diff --git a/package-lock.json b/package-lock.json index 986e8c8..bd80f36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "blockchain-node-generator", - "version": "0.0.1-beta", + "version": "1.0.0-alpha.6", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -205,82 +205,22 @@ "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", "dev": true }, - "@semantic-release/github": { - "version": "5.6.0-beta.2", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.6.0-beta.2.tgz", - "integrity": "sha512-cRfhkM+ecILkYXGyT/nNr74lHFnJ3teS5JuX3yMlQFuSYQTfyNXO1QLzUTnuEnueG4sqTLdwTp2/ThakkswdVA==", + "@semantic-release/git": { + "version": "7.1.0-beta.6", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-7.1.0-beta.6.tgz", + "integrity": "sha512-HuIKldFwZNv/a1+Ct1LUqqNpRK5WmXYDw+tSTu+NQARSvvihU1UKhzCksyToBq1n3P99GYgWHkMjQrUtqhesXA==", "dev": true, "requires": { - "@octokit/rest": "^16.27.0", - "@semantic-release/error": "^2.2.0", + "@semantic-release/error": "^2.1.0", "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", "debug": "^4.0.0", "dir-glob": "^3.0.0", + "execa": "^2.0.2", "fs-extra": "^8.0.0", "globby": "^10.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^3.0.0", - "issue-parser": "^4.0.0", "lodash": "^4.17.4", - "mime": "^2.4.3", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "parse-github-url": "^1.0.1", - "url-join": "^4.0.0" - } - }, - "@semantic-release/npm": { - "version": "6.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-6.0.0-beta.1.tgz", - "integrity": "sha512-skRNXEXh6dmv4tQbmfSFhnTqWYqguUDN0/pActfYFvukUDqn8MSu7CZZyQcCpIws5GBxZoP3zM617fzy84bSow==", - "dev": true, - "requires": { - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "execa": "^2.0.2", - "fs-extra": "^8.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^4.0.0", - "npm": "^6.10.3", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^4.0.0", - "semver": "^5.5.0", - "tempy": "^0.3.0" - }, - "dependencies": { - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" } }, "@semantic-release/release-notes-generator": { @@ -3177,27 +3117,6 @@ } } }, - "https-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.0.tgz", - "integrity": "sha512-y4jAxNEihqvBI5F3SaO2rtsjIOnnNA8sEbuiP+UhJZJHeM2NRm6c09ax2tgqme+SgUUvjao2fJXF4h3D6Cb2HQ==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3540,19 +3459,6 @@ "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", "dev": true }, - "issue-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-4.0.0.tgz", - "integrity": "sha512-1RmmAXHl5+cqTZ9dRr861xWy0Gkc9TWTEklgjKv+nhlB1dY1NmGBV8b20jTWRL5cPGpOIXkz84kEcDBM8Nc0cw==", - "dev": true, - "requires": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - } - }, "istanbul": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", @@ -4523,9 +4429,9 @@ "dev": true }, "npm": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.12.0.tgz", - "integrity": "sha512-juj5VkB3/k+PWbJUnXD7A/8oc8zLusDnK/sV9PybSalsbOVOTIp5vSE0rz5rQ7BsmUgQS47f/L2GYQnWXaKgnQ==", + "version": "6.14.6", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.14.6.tgz", + "integrity": "sha512-axnz6iHFK6WPE0js/+mRp+4IOwpHn5tJEw5KB6FiCU764zmffrhsYHbSHi2kKqNkRBt53XasXjngZfBD3FQzrQ==", "dev": true, "requires": { "JSONStream": "^1.3.5", @@ -4534,12 +4440,12 @@ "ansistyles": "~0.1.3", "aproba": "^2.0.0", "archy": "~1.0.0", - "bin-links": "^1.1.3", + "bin-links": "^1.1.7", "bluebird": "^3.5.5", "byte-size": "^5.0.1", "cacache": "^12.0.3", "call-limit": "^1.1.1", - "chownr": "^1.1.2", + "chownr": "^1.1.4", "ci-info": "^2.0.0", "cli-columns": "^3.1.2", "cli-table3": "^0.5.1", @@ -4555,11 +4461,11 @@ "find-npm-prefix": "^1.0.2", "fs-vacuum": "~1.2.10", "fs-write-stream-atomic": "~1.0.10", - "gentle-fs": "^2.2.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", + "gentle-fs": "^2.3.0", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", "has-unicode": "~2.0.1", - "hosted-git-info": "^2.8.5", + "hosted-git-info": "^2.8.8", "iferr": "^1.0.2", "imurmurhash": "*", "infer-owner": "^1.0.4", @@ -4570,14 +4476,14 @@ "is-cidr": "^3.0.0", "json-parse-better-errors": "^1.0.2", "lazy-property": "~1.0.0", - "libcipm": "^4.0.4", + "libcipm": "^4.0.7", "libnpm": "^3.0.1", "libnpmaccess": "^3.0.2", "libnpmhook": "^5.0.3", "libnpmorg": "^1.0.1", "libnpmsearch": "^2.0.2", "libnpmteam": "^1.0.2", - "libnpx": "^10.2.0", + "libnpx": "^10.2.2", "lock-verify": "^2.1.0", "lockfile": "^1.0.4", "lodash._baseindexof": "*", @@ -4594,41 +4500,41 @@ "lru-cache": "^5.1.1", "meant": "~1.0.1", "mississippi": "^3.0.0", - "mkdirp": "~0.5.1", + "mkdirp": "^0.5.5", "move-concurrently": "^1.0.1", - "node-gyp": "^5.0.5", - "nopt": "~4.0.1", + "node-gyp": "^5.1.0", + "nopt": "^4.0.3", "normalize-package-data": "^2.5.0", "npm-audit-report": "^1.3.2", "npm-cache-filename": "~1.0.2", "npm-install-checks": "^3.0.2", "npm-lifecycle": "^3.1.4", "npm-package-arg": "^6.1.1", - "npm-packlist": "^1.4.4", + "npm-packlist": "^1.4.8", "npm-pick-manifest": "^3.0.2", - "npm-profile": "^4.0.2", - "npm-registry-fetch": "^4.0.0", + "npm-profile": "^4.0.4", + "npm-registry-fetch": "^4.0.5", "npm-user-validate": "~1.0.0", "npmlog": "~4.1.2", "once": "~1.4.0", "opener": "^1.5.1", "osenv": "^0.1.5", - "pacote": "^9.5.8", + "pacote": "^9.5.12", "path-is-inside": "~1.0.2", "promise-inflight": "~1.0.1", "qrcode-terminal": "^0.12.0", "query-string": "^6.8.2", "qw": "~1.0.1", "read": "~1.0.7", - "read-cmd-shim": "^1.0.4", + "read-cmd-shim": "^1.0.5", "read-installed": "~4.0.3", - "read-package-json": "^2.1.0", + "read-package-json": "^2.1.1", "read-package-tree": "^5.3.1", - "readable-stream": "^3.4.0", + "readable-stream": "^3.6.0", "readdir-scoped-modules": "^1.1.0", "request": "^2.88.0", "retry": "^0.12.0", - "rimraf": "^2.6.3", + "rimraf": "^2.7.1", "safe-buffer": "^5.1.2", "semver": "^5.7.1", "sha": "^3.0.0", @@ -4637,7 +4543,7 @@ "sorted-union-stream": "~2.1.3", "ssri": "^6.0.1", "stringify-package": "^1.0.1", - "tar": "^4.4.12", + "tar": "^4.4.13", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "uid-number": "0.0.6", @@ -4645,7 +4551,7 @@ "unique-filename": "^1.1.1", "unpipe": "~1.0.0", "update-notifier": "^2.5.0", - "uuid": "^3.3.2", + "uuid": "^3.3.3", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "~3.0.0", "which": "^1.3.1", @@ -4816,14 +4722,15 @@ } }, "bin-links": { - "version": "1.1.3", + "version": "1.1.7", "bundled": true, "dev": true, "requires": { "bluebird": "^3.5.3", "cmd-shim": "^3.0.0", - "gentle-fs": "^2.0.1", + "gentle-fs": "^2.3.0", "graceful-fs": "^4.1.15", + "npm-normalize-package-bin": "^1.0.0", "write-file-atomic": "^2.3.0" } }, @@ -4928,7 +4835,7 @@ } }, "chownr": { - "version": "1.1.2", + "version": "1.1.4", "bundled": true, "dev": true }, @@ -5234,7 +5141,7 @@ "dev": true }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true }, @@ -5368,7 +5275,7 @@ } }, "env-paths": { - "version": "1.0.0", + "version": "2.2.0", "bundled": true, "dev": true }, @@ -5574,7 +5481,7 @@ }, "dependencies": { "minipass": { - "version": "2.8.6", + "version": "2.9.0", "bundled": true, "dev": true, "requires": { @@ -5682,12 +5589,13 @@ "dev": true }, "gentle-fs": { - "version": "2.2.1", + "version": "2.3.0", "bundled": true, "dev": true, "requires": { "aproba": "^1.1.2", "chownr": "^1.1.2", + "cmd-shim": "^3.0.3", "fs-vacuum": "^1.2.10", "graceful-fs": "^4.1.11", "iferr": "^0.1.5", @@ -5711,7 +5619,7 @@ } }, "get-caller-file": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "dev": true }, @@ -5732,7 +5640,7 @@ } }, "glob": { - "version": "7.1.4", + "version": "7.1.6", "bundled": true, "dev": true, "requires": { @@ -5778,7 +5686,7 @@ } }, "graceful-fs": { - "version": "4.2.2", + "version": "4.2.4", "bundled": true, "dev": true }, @@ -5820,7 +5728,7 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.5", + "version": "2.8.8", "bundled": true, "dev": true }, @@ -5849,7 +5757,7 @@ } }, "https-proxy-agent": { - "version": "2.2.2", + "version": "2.2.4", "bundled": true, "dev": true, "requires": { @@ -5879,7 +5787,7 @@ "dev": true }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { @@ -5936,7 +5844,7 @@ } }, "invert-kv": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true }, @@ -5956,11 +5864,11 @@ "dev": true }, "is-ci": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "requires": { - "ci-info": "^1.0.0" + "ci-info": "^1.5.0" }, "dependencies": { "ci-info": { @@ -6032,7 +5940,7 @@ } }, "is-retry-allowed": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true, "dev": true }, @@ -6125,15 +6033,15 @@ "dev": true }, "lcid": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "^2.0.0" } }, "libcipm": { - "version": "4.0.4", + "version": "4.0.7", "bundled": true, "dev": true, "requires": { @@ -6302,7 +6210,7 @@ } }, "libnpx": { - "version": "10.2.0", + "version": "10.2.2", "bundled": true, "dev": true, "requires": { @@ -6436,7 +6344,7 @@ } }, "make-fetch-happen": { - "version": "5.0.0", + "version": "5.0.2", "bundled": true, "dev": true, "requires": { @@ -6444,7 +6352,7 @@ "cacache": "^12.0.0", "http-cache-semantics": "^3.8.1", "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", + "https-proxy-agent": "^2.2.3", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "node-fetch-npm": "^2.0.2", @@ -6453,17 +6361,34 @@ "ssri": "^6.0.0" } }, + "map-age-cleaner": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "meant": { "version": "1.0.1", "bundled": true, "dev": true }, "mem": { - "version": "1.1.0", + "version": "4.3.0", "bundled": true, "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "bundled": true, + "dev": true + } } }, "mime-db": { @@ -6479,11 +6404,6 @@ "mime-db": "~1.35.0" } }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, "minimatch": { "version": "3.0.4", "bundled": true, @@ -6492,35 +6412,25 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.3.3", + "minizlib": { + "version": "1.3.3", "bundled": true, "dev": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "minipass": "^2.9.0" }, "dependencies": { - "yallist": { - "version": "3.0.2", + "minipass": { + "version": "2.9.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } } } }, - "minizlib": { - "version": "1.2.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^2.2.1" - } - }, "mississippi": { "version": "3.0.0", "bundled": true, @@ -6539,11 +6449,18 @@ } }, "mkdirp": { - "version": "0.5.1", + "version": "0.5.5", "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true + } } }, "move-concurrently": { @@ -6576,6 +6493,11 @@ "bundled": true, "dev": true }, + "nice-try": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, "node-fetch-npm": { "version": "2.0.2", "bundled": true, @@ -6587,40 +6509,25 @@ } }, "node-gyp": { - "version": "5.0.5", + "version": "5.1.0", "bundled": true, "dev": true, "requires": { - "env-paths": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", "tar": "^4.4.12", - "which": "1" - }, - "dependencies": { - "nopt": { - "version": "3.0.6", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true - } + "which": "^1.3.1" } }, "nopt": { - "version": "4.0.1", + "version": "4.0.3", "bundled": true, "dev": true, "requires": { @@ -6659,9 +6566,12 @@ } }, "npm-bundled": { - "version": "1.0.6", + "version": "1.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } }, "npm-cache-filename": { "version": "1.0.2", @@ -6696,6 +6606,11 @@ "bundled": true, "dev": true }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, "npm-package-arg": { "version": "6.1.1", "bundled": true, @@ -6708,12 +6623,13 @@ } }, "npm-packlist": { - "version": "1.4.4", + "version": "1.4.8", "bundled": true, "dev": true, "requires": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npm-pick-manifest": { @@ -6727,7 +6643,7 @@ } }, "npm-profile": { - "version": "4.0.2", + "version": "4.0.4", "bundled": true, "dev": true, "requires": { @@ -6737,7 +6653,7 @@ } }, "npm-registry-fetch": { - "version": "4.0.0", + "version": "4.0.5", "bundled": true, "dev": true, "requires": { @@ -6746,7 +6662,15 @@ "figgy-pudding": "^3.4.1", "lru-cache": "^5.1.1", "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0" + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "bundled": true, + "dev": true + } } }, "npm-run-path": { @@ -6821,13 +6745,41 @@ "dev": true }, "os-locale": { - "version": "2.1.0", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } } }, "os-tmpdir": { @@ -6844,11 +6796,21 @@ "os-tmpdir": "^1.0.0" } }, + "p-defer": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "p-finally": { "version": "1.0.0", "bundled": true, "dev": true }, + "p-is-promise": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, "p-limit": { "version": "1.2.0", "bundled": true, @@ -6882,7 +6844,7 @@ } }, "pacote": { - "version": "9.5.8", + "version": "9.5.12", "bundled": true, "dev": true, "requires": { @@ -6900,6 +6862,7 @@ "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", "npm-package-arg": "^6.1.0", "npm-packlist": "^1.1.12", "npm-pick-manifest": "^3.0.0", @@ -6918,7 +6881,7 @@ }, "dependencies": { "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "dev": true, "requires": { @@ -7125,18 +7088,18 @@ "dev": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { - "version": "1.2.0", + "version": "1.2.5", "bundled": true, "dev": true } @@ -7151,7 +7114,7 @@ } }, "read-cmd-shim": { - "version": "1.0.4", + "version": "1.0.5", "bundled": true, "dev": true, "requires": { @@ -7173,7 +7136,7 @@ } }, "read-package-json": { - "version": "2.1.0", + "version": "2.1.1", "bundled": true, "dev": true, "requires": { @@ -7181,7 +7144,7 @@ "graceful-fs": "^4.1.2", "json-parse-better-errors": "^1.0.1", "normalize-package-data": "^2.0.0", - "slash": "^1.0.0" + "npm-normalize-package-bin": "^1.0.0" } }, "read-package-tree": { @@ -7195,7 +7158,7 @@ } }, "readable-stream": { - "version": "3.4.0", + "version": "3.6.0", "bundled": true, "dev": true, "requires": { @@ -7216,7 +7179,7 @@ } }, "registry-auth-token": { - "version": "3.3.2", + "version": "3.4.0", "bundled": true, "dev": true, "requires": { @@ -7280,7 +7243,7 @@ "dev": true }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "dev": true, "requires": { @@ -7356,28 +7319,23 @@ "bundled": true, "dev": true }, - "slash": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "slide": { "version": "1.1.6", "bundled": true, "dev": true }, "smart-buffer": { - "version": "4.0.2", + "version": "4.1.0", "bundled": true, "dev": true }, "socks": { - "version": "2.3.2", + "version": "2.3.3", "bundled": true, "dev": true, "requires": { - "ip": "^1.1.5", - "smart-buffer": "4.0.2" + "ip": "1.1.5", + "smart-buffer": "^4.1.0" } }, "socks-proxy-agent": { @@ -7469,7 +7427,7 @@ } }, "spdx-license-ids": { - "version": "3.0.3", + "version": "3.0.5", "bundled": true, "dev": true }, @@ -7584,11 +7542,18 @@ } }, "string_decoder": { - "version": "1.2.0", + "version": "1.3.0", "bundled": true, "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "bundled": true, + "dev": true + } } }, "stringify-package": { @@ -7623,7 +7588,7 @@ } }, "tar": { - "version": "4.4.12", + "version": "4.4.13", "bundled": true, "dev": true, "requires": { @@ -7637,7 +7602,7 @@ }, "dependencies": { "minipass": { - "version": "2.8.6", + "version": "2.9.0", "bundled": true, "dev": true, "requires": { @@ -7824,7 +7789,7 @@ } }, "uuid": { - "version": "3.3.2", + "version": "3.3.3", "bundled": true, "dev": true }, @@ -7897,7 +7862,7 @@ } }, "widest-line": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { @@ -7969,7 +7934,7 @@ "dev": true }, "yargs": { - "version": "11.0.0", + "version": "11.1.1", "bundled": true, "dev": true, "requires": { @@ -7977,7 +7942,7 @@ "decamelize": "^1.1.1", "find-up": "^2.1.0", "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", diff --git a/package.json b/package.json index d4987a5..a47a16f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "blockchain-node-generator", - "version": "0.0.1-beta", + "version": "1.0.0-alpha.6", "description": "CLI tool that generates node files from a local network for IBM Blockchain Platform", "main": "dist/index.js", "bin": { @@ -38,8 +38,8 @@ }, "homepage": "https://github.com/liam-grace/blockchain-node-generator#readme", "devDependencies": { - "@semantic-release/github": "^5.6.0-beta.2", - "@semantic-release/npm": "^6.0.0-beta.1", + "@semantic-release/git": "^7.1.0-beta.6", + "@semantic-release/release-notes-generator": "^7.3.0", "@types/chai-as-promised": "^7.1.2", "@types/dockerode": "^2.5.20", "@types/inquirer": "^6.5.0", diff --git a/src/helpers.spec.ts b/src/helpers.spec.ts index 2b87301..27aafbe 100644 --- a/src/helpers.spec.ts +++ b/src/helpers.spec.ts @@ -226,7 +226,8 @@ describe('Helpers', () => { const promise = helpers.getMspId(containerStub as Container, 'MSP_ENV'); await sleep(); - stream.emit('data', new Buffer('mspId')); + stream.emit('data', Buffer.from('mspId')); + stream.emit('end'); await expect(promise).to.eventually.equal('mspId'); @@ -290,7 +291,11 @@ describe('Helpers', () => { }); it('should return an array of port and IP', () => { const containerInfo = {Ports: [{IP: '0.0.0.0', PublicPort: '5000'}]}; - expect(helpers.getContainerAddress(containerInfo as any)).to.equal('0.0.0.0:5000'); + expect(helpers.getContainerAddress(containerInfo as any)).to.equal('localhost:5000'); + }); + it('should return an array of port and IP', () => { + const containerInfo = {Ports: [{IP: '127.0.0.1', PublicPort: '5000'}]}; + expect(helpers.getContainerAddress(containerInfo as any)).to.equal('127.0.0.1:5000'); }); }); }); diff --git a/src/helpers.ts b/src/helpers.ts index 5f990e9..2e920f5 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -68,6 +68,9 @@ export function getContainerAddress(container: ContainerInfo): string { const port = ports[0]; let parts: string[] = []; if (port) { + if (port.IP === '0.0.0.0') { + port.IP = 'localhost'; + } parts = [port.IP, port.PublicPort as any]; } return parts.join(':'); diff --git a/src/index.ts b/src/index.ts index 8fc955d..111af03 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,16 +20,17 @@ import { Orderer } from './nodes/orderer'; import { Peer } from './nodes/peer'; import inquirer = require('inquirer'); import yargs = require('yargs'); +import { join } from 'path'; const argv: any = yargs.argv; -const fileName = './env.json'; const defaultConfig = { socket: '/var/run/docker.sock', PEER_IMAGE_NAME: 'hyperledger/fabric-peer', ORDERER_IMAGE_NAME: 'hyperledger/fabric-orderer', CA_IMAGE_NAME: 'hyperledger/fabric-ca', - env_path: argv.envFilePath ? argv.envFilePath : fileName, + env_path: argv.envFilePath ? argv.envFilePath : './', + env_name: argv.envName ? argv.envName : 'env.json', networkName: argv.networkName ? argv.networkName : 'node_default' }; @@ -68,11 +69,13 @@ async function main() { const ca = new CA(container, containerInfo); configs.push(ca.generateConfig()); } + const fullPath = buildFilePath(); console.debug('Waiting for promises to complete'); const nodes = await Promise.all(configs); - console.log(`\x1b[32m\u2714\x1b[0m Promises complete. Writing to ${config.env_path}.`); - writeFileSync(config.env_path, JSON.stringify(nodes)); - console.log(`\x1b[32m\u2714\x1b[0m ${config.env_path} created.`); + console.log(`\x1b[32m\u2714\x1b[0m Promises complete. Writing to ${fullPath}`); + + writeFileSync(fullPath, JSON.stringify(nodes)); + console.log(`\x1b[32m\u2714\x1b[0m ${fullPath} created`); } function filterByNetwork(container: ContainerInfo) { @@ -96,6 +99,10 @@ function isCA(container: ContainerInfo): boolean { return container.Image.indexOf(config.CA_IMAGE_NAME) !== -1; } +function buildFilePath() { + return join(config.env_path, config.env_name); +} + async function getDockerNetwork(docker: DockerHelper) { const networks = await docker.getNetworks(); const networkMap = new Map(); diff --git a/src/nodes/ca.ts b/src/nodes/ca.ts index 651a318..552a0d6 100644 --- a/src/nodes/ca.ts +++ b/src/nodes/ca.ts @@ -13,6 +13,7 @@ limitations under the License. */ import { Node } from './node'; import { Container, ContainerInfo } from 'dockerode'; +import { executeCommand } from '../helpers'; export class CA extends Node { constructor(container: Container, containerInfo: ContainerInfo) { @@ -21,7 +22,7 @@ export class CA extends Node { async generateConfig() { const def: any = await super.generateConfig(); - def['ca_name'] = this.getContainerName(); + def['ca_name'] = await this.getCAName(); return def; } @@ -32,6 +33,12 @@ export class CA extends Node { name = kebabToPascal(name); return name.substr(0, name.length - 1) + name.charAt(name.length - 1).toUpperCase(); } + + async getCAName() { + const command = `echo -n $FABRIC_CA_SERVER_CA_NAME`; + const result = await executeCommand(this.container, ['/bin/bash', '-c', command]); + return result.toString('utf8').trim(); + } } function kebabToPascal(str: string) { diff --git a/src/nodes/node.ts b/src/nodes/node.ts index e9f5956..8ef7df4 100644 --- a/src/nodes/node.ts +++ b/src/nodes/node.ts @@ -80,7 +80,7 @@ export class Node { isRunningLocally() { const addressInfo = this.getContainerAddress(); - if (addressInfo.indexOf('0.0.0.0') !== -1) { + if (addressInfo.indexOf('0.0.0.0') !== -1 || addressInfo.indexOf('localhost') !== -1) { return true; } else { return false;