From 42f69b1007582eafb4b2a345f5ad1d2cf963ee64 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 16 Dec 2021 19:15:17 +0100 Subject: [PATCH 01/11] Only update version number for file that changed since the last tag --- package-lock.json | 508 +++++++++++++----------------- package.json | 2 + scripts/release/update-comment.js | 60 ++-- 3 files changed, 255 insertions(+), 315 deletions(-) mode change 100755 => 100644 scripts/release/update-comment.js diff --git a/package-lock.json b/package-lock.json index 3ce5157dab3..743b11985aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "openzeppelin-solidity", - "version": "4.4.0", + "version": "4.4.1", "license": "MIT", "bin": { "openzeppelin-contracts-migrate-imports": "scripts/migrate-imports.js" @@ -28,6 +28,8 @@ "eth-sig-util": "^3.0.0", "ethereumjs-util": "^7.0.7", "ethereumjs-wallet": "^1.0.1", + "gift": "^0.10.2", + "git": "^0.1.5", "glob": "^7.2.0", "graphlib": "^2.1.8", "hardhat": "^2.0.6", @@ -40,6 +42,7 @@ "prettier": "^2.3.0", "prettier-plugin-solidity": "^1.0.0-beta.16", "rimraf": "^3.0.2", + "semver": "^7.3.5", "solhint": "^3.3.6", "solidity-ast": "^0.4.25", "solidity-coverage": "^0.7.11", @@ -1215,39 +1218,6 @@ "@oclif/config": "^1" } }, - "node_modules/@oclif/command/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@oclif/command/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@oclif/command/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@oclif/config": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.1.tgz", @@ -1627,6 +1597,15 @@ "web3-utils": "^1.2.5" } }, + "node_modules/@openzeppelin/test-helpers/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/@sentry/core": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", @@ -2109,33 +2088,6 @@ "integrity": "sha512-q0aYUKiZ9MPQg41qx/KpXKaCpqql50qTvmwGYyLFfcjt9AE/+C9CwjVIdJZc7EYj6NGgJuFJ4im1gfgrzUU1fQ==", "dev": true }, - "node_modules/@truffle/contract/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@truffle/contract/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@truffle/contract/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2504,12 +2456,6 @@ "node": ">=8.0.0" } }, - "node_modules/@truffle/contract/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@truffle/debug-utils": { "version": "4.2.14", "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-4.2.14.tgz", @@ -5864,6 +5810,15 @@ "node": ">=4.8" } }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", @@ -8315,6 +8270,15 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, + "node_modules/flex-exec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flex-exec/-/flex-exec-1.0.0.tgz", + "integrity": "sha1-BpdLaFMoOdKhLDLevNsSN4IA/fA=", + "dev": true, + "engines": { + "node": ">= v0.10.1" + } + }, "node_modules/follow-redirects": { "version": "1.14.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", @@ -9687,6 +9651,37 @@ "node": ">=4" } }, + "node_modules/gift": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/gift/-/gift-0.10.2.tgz", + "integrity": "sha512-wC9aKnQpjfOTWX+JG4DPJkS89ux6sl8EN4hXhv/2vBoXCDTEz1JiTeGTSeuKYlCqIgUFM1JwPVym34Sys3hvzw==", + "dev": true, + "dependencies": { + "flex-exec": "^1.0.0", + "underscore": "^1.8.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/git/-/git-0.1.5.tgz", + "integrity": "sha1-nvYt+T+FHCdUIUO/UtHGixAXyhU=", + "dev": true, + "dependencies": { + "mime": "1.2.9" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/git/node_modules/mime": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.9.tgz", + "integrity": "sha1-AJzUCGe9Nd5SGzuWbwTi+NTRPQk=", + "dev": true + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -13483,6 +13478,15 @@ "semver": "^5.7.0" } }, + "node_modules/node-environment-flags/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/node-fetch": { "version": "2.6.6", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", @@ -13632,6 +13636,15 @@ "validate-npm-package-license": "^3.0.1" } }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14463,33 +14476,6 @@ "node": ">=8" } }, - "node_modules/prettier-plugin-solidity/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prettier-plugin-solidity/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -14522,12 +14508,6 @@ "node": ">=8" } }, - "node_modules/prettier-plugin-solidity/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/printj": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", @@ -15462,14 +15442,38 @@ } }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -16145,6 +16149,15 @@ "rimraf": "bin.js" } }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/solc/node_modules/string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -16710,33 +16723,6 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/solidity-coverage/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -16749,12 +16735,6 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/solidity-docgen": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.5.16.tgz", @@ -16835,18 +16815,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/solidity-docgen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/solidity-docgen/node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -16868,21 +16836,6 @@ "rimraf": "bin.js" } }, - "node_modules/solidity-docgen/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/solidity-docgen/node_modules/solc": { "version": "0.6.12", "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz", @@ -16914,12 +16867,6 @@ "semver": "bin/semver" } }, - "node_modules/solidity-docgen/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -21120,32 +21067,6 @@ "@oclif/plugin-help": "^3.2.8", "debug": "^4.1.1", "semver": "^7.3.2" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } } }, "@oclif/config": { @@ -21456,6 +21377,14 @@ "semver": "^5.6.0", "web3": "^1.2.5", "web3-utils": "^1.2.5" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "@sentry/core": { @@ -21910,24 +21839,6 @@ "integrity": "sha512-q0aYUKiZ9MPQg41qx/KpXKaCpqql50qTvmwGYyLFfcjt9AE/+C9CwjVIdJZc7EYj6NGgJuFJ4im1gfgrzUU1fQ==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -22221,12 +22132,6 @@ "randombytes": "^2.1.0", "utf8": "3.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -25064,6 +24969,14 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "crypt": { @@ -27127,6 +27040,12 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, + "flex-exec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flex-exec/-/flex-exec-1.0.0.tgz", + "integrity": "sha1-BpdLaFMoOdKhLDLevNsSN4IA/fA=", + "dev": true + }, "follow-redirects": { "version": "1.14.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", @@ -28146,6 +28065,33 @@ } } }, + "gift": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/gift/-/gift-0.10.2.tgz", + "integrity": "sha512-wC9aKnQpjfOTWX+JG4DPJkS89ux6sl8EN4hXhv/2vBoXCDTEz1JiTeGTSeuKYlCqIgUFM1JwPVym34Sys3hvzw==", + "dev": true, + "requires": { + "flex-exec": "^1.0.0", + "underscore": "^1.8.3" + } + }, + "git": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/git/-/git-0.1.5.tgz", + "integrity": "sha1-nvYt+T+FHCdUIUO/UtHGixAXyhU=", + "dev": true, + "requires": { + "mime": "1.2.9" + }, + "dependencies": { + "mime": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.9.tgz", + "integrity": "sha1-AJzUCGe9Nd5SGzuWbwTi+NTRPQk=", + "dev": true + } + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -31200,6 +31146,14 @@ "requires": { "object.getownpropertydescriptors": "^2.0.3", "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "node-fetch": { @@ -31337,6 +31291,14 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-path": { @@ -31970,24 +31932,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -32015,12 +31959,6 @@ "requires": { "ansi-regex": "^5.0.1" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -32731,10 +32669,30 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } }, "send": { "version": "0.17.1", @@ -33297,6 +33255,12 @@ "glob": "^7.1.3" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -33766,24 +33730,6 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -33792,12 +33738,6 @@ "requires": { "has-flag": "^3.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -33869,15 +33809,6 @@ "graceful-fs": "^4.1.6" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -33893,15 +33824,6 @@ "glob": "^7.1.3" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "solc": { "version": "0.6.12", "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz", @@ -33925,12 +33847,6 @@ "dev": true } } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, diff --git a/package.json b/package.json index 62d4fb8971f..0300fb08372 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "eth-sig-util": "^3.0.0", "ethereumjs-util": "^7.0.7", "ethereumjs-wallet": "^1.0.1", + "gift": "^0.10.2", "glob": "^7.2.0", "graphlib": "^2.1.8", "hardhat": "^2.0.6", @@ -78,6 +79,7 @@ "prettier": "^2.3.0", "prettier-plugin-solidity": "^1.0.0-beta.16", "rimraf": "^3.0.2", + "semver": "^7.3.5", "solhint": "^3.3.6", "solidity-ast": "^0.4.25", "solidity-coverage": "^0.7.11", diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js old mode 100755 new mode 100644 index 5cbba1995c3..c285939714b --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -1,27 +1,49 @@ -#!/usr/bin/env node - const fs = require('fs'); -const glob = require('glob'); -const proc = require('child_process'); +const git = require('gift'); +const semver = require('semver'); -const gitStatus = proc.execFileSync('git', ['status', '--porcelain', '-uno', 'contracts/**/*.sol']); +const { version } = require('../../package.json'); -if (gitStatus.length > 0) { - console.error('Contracts directory is not clean'); - process.exit(1); +function check(error, message) { + if (error) { + console.error(message ?? error); + process.exit(1); + } } -const { version } = require('../../package.json'); +const repo = git('.'); -const files = glob.sync('contracts/!(mocks)/**/*.sol'); +repo.git('status --porcelain -uno contracts/**/*.sol', (error, status) => { + check(error); + check(!!status, 'Contracts directory is not clean'); -for (const file of files) { - const current = fs.readFileSync(file, 'utf8'); - const updated = current.replace( - /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts v.*$)?/m, - `$1\n// OpenZeppelin Contracts v${version} (${file.replace('contracts/', '')})`, - ); - fs.writeFileSync(file, updated); -} + repo.tags((error, tags) => { + check(error); + + const [ tag ] = tags + .map(({ name }) => name) + .filter(semver.valid) + .sort(semver.rcompare); + + repo.diff('master', tag, (error, diffs) => { + check(error); + + diffs + .filter(({ b_path: path }) => path.startsWith('contracts/')) + .filter(({ b_path: path }) => !path.startsWith('contracts/mocks')) + .filter(({ b_path: path }) => path.endsWith('.sol')) + .forEach(({ b_path: path }) => { + const current = fs.readFileSync(path, 'utf8'); + const updated = current.replace( + /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts v.*$)?/m, + `$1\n// Last updated in OpenZeppelin Contracts v${version} (${path.replace('contracts/', '')})`, + ); + fs.writeFileSync(path, updated); + }); -proc.execFileSync('git', ['add', '--update', 'contracts']); + repo.git('add --update contracts', (error) => { + check(error); + }); + }); + }); +}); From 34df32d1b57ba15b2f65218b49204d3b2b2c6fbb Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 16 Dec 2021 19:19:33 +0100 Subject: [PATCH 02/11] Support new release of old versions --- scripts/release/update-comment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index c285939714b..5d8e8f844aa 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -22,7 +22,7 @@ repo.git('status --porcelain -uno contracts/**/*.sol', (error, status) => { const [ tag ] = tags .map(({ name }) => name) - .filter(semver.valid) + .filter(v => semver.valid(v) && semver.lte(v, version)) .sort(semver.rcompare); repo.diff('master', tag, (error, diffs) => { From c01a1952dfbf3363188c4afe4d3e82dcbf799c0c Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 16 Dec 2021 22:05:14 +0100 Subject: [PATCH 03/11] remove gift dependency --- package-lock.json | 75 ------------------------------- package.json | 1 - scripts/release/update-comment.js | 70 ++++++++++++----------------- 3 files changed, 29 insertions(+), 117 deletions(-) diff --git a/package-lock.json b/package-lock.json index 743b11985aa..4e6493a1971 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,8 +28,6 @@ "eth-sig-util": "^3.0.0", "ethereumjs-util": "^7.0.7", "ethereumjs-wallet": "^1.0.1", - "gift": "^0.10.2", - "git": "^0.1.5", "glob": "^7.2.0", "graphlib": "^2.1.8", "hardhat": "^2.0.6", @@ -8270,15 +8268,6 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "node_modules/flex-exec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flex-exec/-/flex-exec-1.0.0.tgz", - "integrity": "sha1-BpdLaFMoOdKhLDLevNsSN4IA/fA=", - "dev": true, - "engines": { - "node": ">= v0.10.1" - } - }, "node_modules/follow-redirects": { "version": "1.14.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", @@ -9651,37 +9640,6 @@ "node": ">=4" } }, - "node_modules/gift": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/gift/-/gift-0.10.2.tgz", - "integrity": "sha512-wC9aKnQpjfOTWX+JG4DPJkS89ux6sl8EN4hXhv/2vBoXCDTEz1JiTeGTSeuKYlCqIgUFM1JwPVym34Sys3hvzw==", - "dev": true, - "dependencies": { - "flex-exec": "^1.0.0", - "underscore": "^1.8.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/git": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/git/-/git-0.1.5.tgz", - "integrity": "sha1-nvYt+T+FHCdUIUO/UtHGixAXyhU=", - "dev": true, - "dependencies": { - "mime": "1.2.9" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/git/node_modules/mime": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.9.tgz", - "integrity": "sha1-AJzUCGe9Nd5SGzuWbwTi+NTRPQk=", - "dev": true - }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -27040,12 +26998,6 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "flex-exec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flex-exec/-/flex-exec-1.0.0.tgz", - "integrity": "sha1-BpdLaFMoOdKhLDLevNsSN4IA/fA=", - "dev": true - }, "follow-redirects": { "version": "1.14.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", @@ -28065,33 +28017,6 @@ } } }, - "gift": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/gift/-/gift-0.10.2.tgz", - "integrity": "sha512-wC9aKnQpjfOTWX+JG4DPJkS89ux6sl8EN4hXhv/2vBoXCDTEz1JiTeGTSeuKYlCqIgUFM1JwPVym34Sys3hvzw==", - "dev": true, - "requires": { - "flex-exec": "^1.0.0", - "underscore": "^1.8.3" - } - }, - "git": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/git/-/git-0.1.5.tgz", - "integrity": "sha1-nvYt+T+FHCdUIUO/UtHGixAXyhU=", - "dev": true, - "requires": { - "mime": "1.2.9" - }, - "dependencies": { - "mime": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.9.tgz", - "integrity": "sha1-AJzUCGe9Nd5SGzuWbwTi+NTRPQk=", - "dev": true - } - } - }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", diff --git a/package.json b/package.json index 0300fb08372..0b0abb33afa 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,6 @@ "eth-sig-util": "^3.0.0", "ethereumjs-util": "^7.0.7", "ethereumjs-wallet": "^1.0.1", - "gift": "^0.10.2", "glob": "^7.2.0", "graphlib": "^2.1.8", "hardhat": "^2.0.6", diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index 5d8e8f844aa..6f0605423af 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -1,49 +1,37 @@ const fs = require('fs'); -const git = require('gift'); +const proc = require('child_process'); const semver = require('semver'); const { version } = require('../../package.json'); -function check(error, message) { - if (error) { - console.error(message ?? error); - process.exit(1); - } +const status = proc.execFileSync('git', ['status', '--porcelain', '-uno', 'contracts/**/*.sol']); +if (status.length > 0) { + console.error('Contracts directory is not clean'); + process.exit(1); } -const repo = git('.'); - -repo.git('status --porcelain -uno contracts/**/*.sol', (error, status) => { - check(error); - check(!!status, 'Contracts directory is not clean'); - - repo.tags((error, tags) => { - check(error); - - const [ tag ] = tags - .map(({ name }) => name) - .filter(v => semver.valid(v) && semver.lte(v, version)) - .sort(semver.rcompare); - - repo.diff('master', tag, (error, diffs) => { - check(error); - - diffs - .filter(({ b_path: path }) => path.startsWith('contracts/')) - .filter(({ b_path: path }) => !path.startsWith('contracts/mocks')) - .filter(({ b_path: path }) => path.endsWith('.sol')) - .forEach(({ b_path: path }) => { - const current = fs.readFileSync(path, 'utf8'); - const updated = current.replace( - /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts v.*$)?/m, - `$1\n// Last updated in OpenZeppelin Contracts v${version} (${path.replace('contracts/', '')})`, - ); - fs.writeFileSync(path, updated); - }); +const [ tag ] = proc.execFileSync('git', ['tag']) + .toString() + .split(/\r?\n/) + .filter(v => semver.valid(v) && semver.lte(v, version)) + .sort(semver.rcompare); + +// Ordering tag → HEAD is important here. +// Is it right to use HEAD ? +const diffs = proc.execFileSync('git', ['diff', tag, 'HEAD', '--name-only']) + .toString() + .split(/\r?\n/) + .filter(path => path.startsWith('contracts/')) + .filter(path => !path.startsWith('contracts/mocks')) + .filter(path => path.endsWith('.sol')); + +for (const file of diffs) { + const current = fs.readFileSync(file, 'utf8'); + const updated = current.replace( + /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts v.*$)?/m, + `$1\n// Last updated in OpenZeppelin Contracts v${version} (${file.replace('contracts/', '')})`, + ); + fs.writeFileSync(file, updated); +} - repo.git('add --update contracts', (error) => { - check(error); - }); - }); - }); -}); +proc.execFileSync('git', ['add', '--update', 'contracts']); From f54477ec43684eef8f9cda94bdae9d58a312f546 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 16 Dec 2021 22:08:06 +0100 Subject: [PATCH 04/11] minimize diff --- scripts/release/update-comment.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index 6f0605423af..8b1e5ba45ae 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -2,14 +2,14 @@ const fs = require('fs'); const proc = require('child_process'); const semver = require('semver'); -const { version } = require('../../package.json'); - -const status = proc.execFileSync('git', ['status', '--porcelain', '-uno', 'contracts/**/*.sol']); -if (status.length > 0) { +const gitStatus = proc.execFileSync('git', ['status', '--porcelain', '-uno', 'contracts/**/*.sol']); +if (gitStatus.length > 0) { console.error('Contracts directory is not clean'); process.exit(1); } +const { version } = require('../../package.json'); + const [ tag ] = proc.execFileSync('git', ['tag']) .toString() .split(/\r?\n/) @@ -18,14 +18,14 @@ const [ tag ] = proc.execFileSync('git', ['tag']) // Ordering tag → HEAD is important here. // Is it right to use HEAD ? -const diffs = proc.execFileSync('git', ['diff', tag, 'HEAD', '--name-only']) +const files = proc.execFileSync('git', ['diff', tag, 'HEAD', '--name-only']) .toString() .split(/\r?\n/) .filter(path => path.startsWith('contracts/')) .filter(path => !path.startsWith('contracts/mocks')) .filter(path => path.endsWith('.sol')); -for (const file of diffs) { +for (const file of files) { const current = fs.readFileSync(file, 'utf8'); const updated = current.replace( /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts v.*$)?/m, From da9de85cf65153165f9824a27d824343d39d4e11 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Thu, 16 Dec 2021 22:26:33 +0100 Subject: [PATCH 05/11] improve file filtering --- scripts/release/update-comment.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index 8b1e5ba45ae..6ffbb09baa8 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -18,12 +18,11 @@ const [ tag ] = proc.execFileSync('git', ['tag']) // Ordering tag → HEAD is important here. // Is it right to use HEAD ? -const files = proc.execFileSync('git', ['diff', tag, 'HEAD', '--name-only']) +const files = proc.execFileSync('git', ['diff', tag, 'HEAD', '--name-only', 'contracts/**/*.sol']) .toString() .split(/\r?\n/) - .filter(path => path.startsWith('contracts/')) - .filter(path => !path.startsWith('contracts/mocks')) - .filter(path => path.endsWith('.sol')); + .filter(Boolean) + .filter(file => !file.match(/mock/i)); for (const file of files) { const current = fs.readFileSync(file, 'utf8'); From 5da3126eeffa251692732d68e53407bfd4ca0512 Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Thu, 16 Dec 2021 19:35:21 -0300 Subject: [PATCH 06/11] define helper run function --- scripts/release/update-comment.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index 6ffbb09baa8..8551a3cfd21 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -1,8 +1,9 @@ const fs = require('fs'); const proc = require('child_process'); const semver = require('semver'); +const run = (cmd, ...args) => proc.execFileSync(cmd, args, { encoding: 'utf8' }).trim(); -const gitStatus = proc.execFileSync('git', ['status', '--porcelain', '-uno', 'contracts/**/*.sol']); +const gitStatus = run('git', 'status', '--porcelain', '-uno', 'contracts/**/*.sol'); if (gitStatus.length > 0) { console.error('Contracts directory is not clean'); process.exit(1); @@ -10,18 +11,16 @@ if (gitStatus.length > 0) { const { version } = require('../../package.json'); -const [ tag ] = proc.execFileSync('git', ['tag']) - .toString() +// Get latest tag according to semver. +const [ tag ] = run('git', 'tag') .split(/\r?\n/) .filter(v => semver.valid(v) && semver.lte(v, version)) .sort(semver.rcompare); // Ordering tag → HEAD is important here. // Is it right to use HEAD ? -const files = proc.execFileSync('git', ['diff', tag, 'HEAD', '--name-only', 'contracts/**/*.sol']) - .toString() +const files = run('git', 'diff', tag, 'HEAD', '--name-only', 'contracts/**/*.sol') .split(/\r?\n/) - .filter(Boolean) .filter(file => !file.match(/mock/i)); for (const file of files) { @@ -33,4 +32,4 @@ for (const file of files) { fs.writeFileSync(file, updated); } -proc.execFileSync('git', ['add', '--update', 'contracts']); +run('git', 'add', '--update', 'contracts'); From da29846526297a176c0e9e15c9e0d5eeeb25b496 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 17 Dec 2021 19:20:56 +0100 Subject: [PATCH 07/11] address comments in PR --- scripts/release/update-comment.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index 8551a3cfd21..390df0871cb 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -1,3 +1,4 @@ +#!/usr/bin/env node const fs = require('fs'); const proc = require('child_process'); const semver = require('semver'); @@ -18,7 +19,6 @@ const [ tag ] = run('git', 'tag') .sort(semver.rcompare); // Ordering tag → HEAD is important here. -// Is it right to use HEAD ? const files = run('git', 'diff', tag, 'HEAD', '--name-only', 'contracts/**/*.sol') .split(/\r?\n/) .filter(file => !file.match(/mock/i)); @@ -27,7 +27,7 @@ for (const file of files) { const current = fs.readFileSync(file, 'utf8'); const updated = current.replace( /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts v.*$)?/m, - `$1\n// Last updated in OpenZeppelin Contracts v${version} (${file.replace('contracts/', '')})`, + `$1\n// OpenZeppelin Contracts (last updated v${version}) (${file.replace('contracts/', '')})`, ); fs.writeFileSync(file, updated); } From d100045bfa05813bc61d01bb78eba5695850572f Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Fri, 17 Dec 2021 19:29:41 +0100 Subject: [PATCH 08/11] do not consider rc --- scripts/release/update-comment.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index 390df0871cb..9b72fc07d29 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -15,7 +15,9 @@ const { version } = require('../../package.json'); // Get latest tag according to semver. const [ tag ] = run('git', 'tag') .split(/\r?\n/) - .filter(v => semver.valid(v) && semver.lte(v, version)) + .map(v => semver.valid(semver.coerce(v))) // remove postfix such as '-rc.x' + .filter(Boolean) // remove invalid tags + .filter(v => semver.lt(v, version)) // only consider older tags .sort(semver.rcompare); // Ordering tag → HEAD is important here. From 8dc5e5813c94f6323e5b889ec9463b5d02b98fbb Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Wed, 22 Dec 2021 19:18:36 -0300 Subject: [PATCH 09/11] fix handling of prereleases --- scripts/release/update-comment.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index 9b72fc07d29..cd734cfa2f7 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -15,9 +15,7 @@ const { version } = require('../../package.json'); // Get latest tag according to semver. const [ tag ] = run('git', 'tag') .split(/\r?\n/) - .map(v => semver.valid(semver.coerce(v))) // remove postfix such as '-rc.x' - .filter(Boolean) // remove invalid tags - .filter(v => semver.lt(v, version)) // only consider older tags + .filter(v => semver.lt(semver.coerce(v), version)) // only consider older tags, ignore current prereleases .sort(semver.rcompare); // Ordering tag → HEAD is important here. From 063b895382753b4b5690953db72b5d389ec634b3 Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Wed, 22 Dec 2021 19:18:45 -0300 Subject: [PATCH 10/11] support empty diff --- scripts/release/update-comment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index cd734cfa2f7..d9646c0e018 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -21,7 +21,7 @@ const [ tag ] = run('git', 'tag') // Ordering tag → HEAD is important here. const files = run('git', 'diff', tag, 'HEAD', '--name-only', 'contracts/**/*.sol') .split(/\r?\n/) - .filter(file => !file.match(/mock/i)); + .filter(file => file && !file.match(/mock/i)); for (const file of files) { const current = fs.readFileSync(file, 'utf8'); From 5041b0eb35dacb5583917cab9abc40ae978eb266 Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Wed, 22 Dec 2021 19:19:06 -0300 Subject: [PATCH 11/11] fix replace of previous comment --- scripts/release/update-comment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release/update-comment.js b/scripts/release/update-comment.js index d9646c0e018..b3dd9efe530 100644 --- a/scripts/release/update-comment.js +++ b/scripts/release/update-comment.js @@ -26,7 +26,7 @@ const files = run('git', 'diff', tag, 'HEAD', '--name-only', 'contracts/**/*.sol for (const file of files) { const current = fs.readFileSync(file, 'utf8'); const updated = current.replace( - /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts v.*$)?/m, + /(\/\/ SPDX-License-Identifier:.*)$(\n\/\/ OpenZeppelin Contracts .*$)?/m, `$1\n// OpenZeppelin Contracts (last updated v${version}) (${file.replace('contracts/', '')})`, ); fs.writeFileSync(file, updated);