From 69ceb245be8a0c253f7a245d5ad6f9aa98be51fd Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Wed, 6 Jul 2022 08:37:55 +0900 Subject: [PATCH 01/16] add resoving variables --- .vscode/tasks.json | 26 ++- package-lock.json | 563 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 + src/command.ts | 19 +- src/extension.ts | 2 +- 5 files changed, 603 insertions(+), 10 deletions(-) create mode 100644 package-lock.json diff --git a/.vscode/tasks.json b/.vscode/tasks.json index fb7f662..2b6cf4e 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -8,17 +8,11 @@ // A task runner that calls a custom npm script that compiles the extension. { - "version": "0.1.0", + "version": "2.0.0", // we want to run npm "command": "npm", - // the command is a shell script - "isShellCommand": true, - - // show the output window only if unrecognized errors occur. - "showOutput": "silent", - // we run the custom script "compile" as defined in package.json "args": ["run", "compile", "--loglevel", "silent"], @@ -26,5 +20,21 @@ "isWatching": true, // use the standard tsc in watch mode problem matcher to find compile problems in the output. - "problemMatcher": "$tsc-watch" + "problemMatcher": "$tsc-watch", + "tasks": [ + { + "label": "npm", + "type": "shell", + "command": "npm", + "args": [ + "run", + "compile", + "--loglevel", + "silent" + ], + "isBackground": true, + "problemMatcher": "$tsc-watch", + "group": "build" + } + ] } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ddfba8d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,563 @@ +{ + "name": "multi-command", + "version": "1.5.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/mocha": { + "version": "2.2.48", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", + "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==", + "dev": true + }, + "@types/node": { + "version": "7.10.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", + "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "dev": true, + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", + "dev": true + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", + "dev": true + }, + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true + }, + "vscode": { + "version": "1.1.37", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.37.tgz", + "integrity": "sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg==", + "dev": true, + "requires": { + "glob": "^7.1.2", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "mocha": "^5.2.0", + "semver": "^5.4.1", + "source-map-support": "^0.5.0", + "vscode-test": "^0.4.1" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "vscode-test": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", + "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", + "dev": true, + "requires": { + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "vscode-variables": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/vscode-variables/-/vscode-variables-0.1.3.tgz", + "integrity": "sha512-atxTgTGoSxtsUIqTKRozIB122meW6uMw5DWkdyeC7ibUX6mLUFi/F+w1ZoqMSx4BTgvhsD98UGlEaMDNtRP4Qg==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 9bc165b..c3760d7 100644 --- a/package.json +++ b/package.json @@ -81,5 +81,8 @@ "mocha": "^2.3.3", "@types/node": "^7.0.7", "@types/mocha": "^2.2.32" + }, + "dependencies": { + "vscode-variables": "^0.1.3" } } diff --git a/src/command.ts b/src/command.ts index 7cbfaa2..33ae344 100644 --- a/src/command.ts +++ b/src/command.ts @@ -1,5 +1,7 @@ import * as vscode from "vscode"; +const vscodeVariables = require('vscode-variables'); + export class Command { constructor( private readonly exe: string, @@ -10,7 +12,22 @@ export class Command { if (this.args === null) { return vscode.commands.executeCommand(this.exe); } else { - return vscode.commands.executeCommand(this.exe, this.args); + return vscode.commands.executeCommand(this.exe, this.resolveVariables(this.args)); + } + } + + private resolveVariables(args: any ): any { + if (typeof args === 'string') { + return vscodeVariables(args); + } else if (typeof args === 'object') { + let rt: any = {}; + for(const key of Object.keys(args)) { + rt[key] = this.resolveVariables(args[key]); + } + return rt; + } else { + return args; } } + } diff --git a/src/extension.ts b/src/extension.ts index 38f88ee..f59f1db 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -116,7 +116,7 @@ export function activate(context: vscode.ExtensionContext) { } else { await pickMultiCommand(); } - } catch (e) { + } catch (e: any) { vscode.window.showErrorMessage(`${e.message}`); } } From 8439bb130c39010933b906016fd0646dffd876c0 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Thu, 7 Jul 2022 04:41:28 +0900 Subject: [PATCH 02/16] add ${userHome} conversion --- src/command.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/command.ts b/src/command.ts index 33ae344..a39f9be 100644 --- a/src/command.ts +++ b/src/command.ts @@ -18,6 +18,7 @@ export class Command { private resolveVariables(args: any ): any { if (typeof args === 'string') { + args = args.replace(/\${userHome}/g, process.env['HOME'] || ''); return vscodeVariables(args); } else if (typeof args === 'object') { let rt: any = {}; From 662fa83a88a67c2c510a1455f9496f5c317dcb53 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Thu, 7 Jul 2022 05:29:26 +0900 Subject: [PATCH 03/16] add `variableSubstitution` flag --- src/command.ts | 14 ++++++++++---- src/extension.ts | 6 +++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/command.ts b/src/command.ts index a39f9be..db45582 100644 --- a/src/command.ts +++ b/src/command.ts @@ -5,25 +5,31 @@ const vscodeVariables = require('vscode-variables'); export class Command { constructor( private readonly exe: string, - private readonly args: object | null + private readonly args: object | null, + private readonly variableSubstitution: boolean ) {} public execute() { if (this.args === null) { return vscode.commands.executeCommand(this.exe); } else { - return vscode.commands.executeCommand(this.exe, this.resolveVariables(this.args)); + if (this.variableSubstitution) { + return vscode.commands.executeCommand(this.exe, this.substituteVariables(this.args)); + } else { + return vscode.commands.executeCommand(this.exe, this.args); + } + } } - private resolveVariables(args: any ): any { + private substituteVariables(args: any ): any { if (typeof args === 'string') { args = args.replace(/\${userHome}/g, process.env['HOME'] || ''); return vscodeVariables(args); } else if (typeof args === 'object') { let rt: any = {}; for(const key of Object.keys(args)) { - rt[key] = this.resolveVariables(args[key]); + rt[key] = this.substituteVariables(args[key]); } return rt; } else { diff --git a/src/extension.ts b/src/extension.ts index f59f1db..a6371ee 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -22,6 +22,7 @@ interface CommandMap { interface ComplexCommand { command: string; args: object; + variableSubstitution: boolean; } function implementsCommandMap(arg: any): arg is CommandSettings { @@ -38,14 +39,17 @@ function createMultiCommand( const sequence = settings.sequence.map((command) => { let exe: string; let args: object | null; + let variableSubstitution: boolean; if (typeof command === "string") { exe = command; args = null; + variableSubstitution = false; } else { exe = command.command; args = command.args; + variableSubstitution = command.variableSubstitution ?? false; } - return new Command(exe, args); + return new Command(exe, args, variableSubstitution); }); return new MultiCommand(id, label, description, interval, sequence); From c0288d44444c676a31834667976c971c8969bea0 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Fri, 8 Jul 2022 07:22:14 +0900 Subject: [PATCH 04/16] fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b36f42..2c626a6 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ This command sequence executes "cursorDown" command 3 times. ### Usage with settings.json. -This usage is useful for resusing the defined command sequence in another command sequnce or executing the sequence manually. +This usage is useful for reusing the defined command sequence in another command sequnce or executing the sequence manually. In case using settings.json, the settings has 2 steps. From 6a300a3a0b99199baa7236545db917222b660fbf Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Fri, 8 Jul 2022 08:06:31 +0900 Subject: [PATCH 05/16] add document for variable substitution --- README.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/README.md b/README.md index 2c626a6..2107c87 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,45 @@ For Example: This sequence cut selected text and type "CUT !!". +You can also use some variables like `${userHome}` or `${config:editor.fontSize}` in arguments. + +Because some commands substitute these kinds of variables in their extensions, variable substitution in multi-command extenstion is kind of experimental. + +If you use variable substituion, set `variableSubstitution` to `true` in command setting. + +For example: +```json +"sequence": [ + { + "command": "type", + "args": { "text": "Font size is ${config:editor.fontSize}" }, + "variableSubstitution": true + } +], +``` + +Current supported variables: + +* `${userHome}` +* `${workspaceFolder}` +* `${workspaceFolderBasename}` +* `${file}` +* `${fileWorkspaceFolder}` +* `${relativeFile}` +* `${relativeFileDirname}` +* `${fileBasename}` +* `${fileBasenameNoExtension}` +* `${fileDirname}` +* `${fileExtname}` +* `${cwd}` +* `${lineNumber}` +* `${selectedText}` +* `${pathSeparator}` +* `${env:*}` +* `${config:*}` + +Contents of each variable are described in [variables reference in VSCode](https://code.visualstudio.com/docs/editor/variables-reference). Note that all variables in the document is not supported in multi-command extension. + ### Find the name of the command you want to execute 1. Execute "Developer: Set Log Level..." and select "trace" in the command palette. From cca6479e2a54973fe739326d8d869ff5053e8a1a Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Sat, 9 Jul 2022 05:35:14 +0900 Subject: [PATCH 06/16] add conditioned command --- src/command.ts | 34 +++++++++++++++++++++++++--------- src/extension.ts | 23 ++++++++++++++++++----- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/command.ts b/src/command.ts index db45582..c186f0a 100644 --- a/src/command.ts +++ b/src/command.ts @@ -5,20 +5,36 @@ const vscodeVariables = require('vscode-variables'); export class Command { constructor( private readonly exe: string, - private readonly args: object | null, + private readonly args: object | undefined, + private readonly onSuccess: Array | undefined, + private readonly onFail: Array | undefined, private readonly variableSubstitution: boolean ) {} - public execute() { - if (this.args === null) { - return vscode.commands.executeCommand(this.exe); - } else { - if (this.variableSubstitution) { - return vscode.commands.executeCommand(this.exe, this.substituteVariables(this.args)); + public async execute() { + try { + if (this.args) { + if (this.variableSubstitution) { + await vscode.commands.executeCommand(this.exe, this.substituteVariables(this.args)); + } else { + await vscode.commands.executeCommand(this.exe, this.args); + } } else { - return vscode.commands.executeCommand(this.exe, this.args); + await vscode.commands.executeCommand(this.exe); + } + if (this.onSuccess) { + for (let command of this.onSuccess) { + await command.execute(); + } } - + } catch(e: any) { + if (this.onFail) { + for (let command of this.onFail) { + await command.execute(); + } + } else { + throw(e); + } } } diff --git a/src/extension.ts b/src/extension.ts index a6371ee..a14aa1f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,11 +4,13 @@ import * as vscode from "vscode"; import { Command } from "./command"; import { MultiCommand } from "./multiCommand"; +type CommandSequence = Array; + interface CommandSettings { label: string; description: string; interval: number; - sequence: Array; + sequence: CommandSequence; } interface CommandSettingsWithKey extends CommandSettings { @@ -22,6 +24,8 @@ interface CommandMap { interface ComplexCommand { command: string; args: object; + onSuccess: CommandSequence | undefined; + onFail: CommandSequence | undefined; variableSubstitution: boolean; } @@ -36,20 +40,29 @@ function createMultiCommand( const label = settings.label; const description = settings.description; const interval = settings.interval; - const sequence = settings.sequence.map((command) => { + + function createCommand(command: string | ComplexCommand): Command { let exe: string; - let args: object | null; + let args: object | undefined; let variableSubstitution: boolean; + let onSuccess: Array | undefined; + let onFail: Array | undefined; + if (typeof command === "string") { exe = command; - args = null; variableSubstitution = false; } else { exe = command.command; args = command.args; variableSubstitution = command.variableSubstitution ?? false; + onSuccess = command.onSuccess?.map((c) => createCommand(c)); + onFail = command.onFail?.map((c) => createCommand(c)); } - return new Command(exe, args, variableSubstitution); + return new Command(exe, args, onSuccess, onFail, variableSubstitution); + } + + const sequence = settings.sequence.map((command) => { + return createCommand(command); }); return new MultiCommand(id, label, description, interval, sequence); From 692d10b1119d41de2088ac2d5d6b6d7ed1dde329 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Sat, 9 Jul 2022 09:18:17 +0900 Subject: [PATCH 07/16] fix type annotation of error. --- src/command.ts | 2 +- src/extension.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/command.ts b/src/command.ts index c186f0a..ddeb901 100644 --- a/src/command.ts +++ b/src/command.ts @@ -27,7 +27,7 @@ export class Command { await command.execute(); } } - } catch(e: any) { + } catch(e) { if (this.onFail) { for (let command of this.onFail) { await command.execute(); diff --git a/src/extension.ts b/src/extension.ts index a14aa1f..250d0b9 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -133,8 +133,8 @@ export function activate(context: vscode.ExtensionContext) { } else { await pickMultiCommand(); } - } catch (e: any) { - vscode.window.showErrorMessage(`${e.message}`); + } catch (e) { + vscode.window.showErrorMessage(`${(e as Error).message}`); } } ); From 15e13a1970bbd1f7c247cd5263b69870320363fe Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Sat, 9 Jul 2022 10:26:54 +0900 Subject: [PATCH 08/16] add shorthand form of `onFailure` commands. --- src/extension.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 250d0b9..abcd148 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -49,13 +49,20 @@ function createMultiCommand( let onFail: Array | undefined; if (typeof command === "string") { - exe = command; + let conditionedCommands = command.split(" || ") + if (conditionedCommands.length > 1) { + conditionedCommands = conditionedCommands.map((s) => s.trim()); + exe = conditionedCommands.shift()!; + onFail = [createCommand(conditionedCommands.join(" || "))]; + } else { + exe = command; + } variableSubstitution = false; } else { exe = command.command; args = command.args; variableSubstitution = command.variableSubstitution ?? false; - onSuccess = command.onSuccess?.map((c) => createCommand(c)); + onSuccess = command.onSuccess?.map((c) => createCommand(c)); onFail = command.onFail?.map((c) => createCommand(c)); } return new Command(exe, args, onSuccess, onFail, variableSubstitution); From 68210543d2b428830d7278de27c33f4fc8fe7e31 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Sat, 9 Jul 2022 10:58:07 +0900 Subject: [PATCH 09/16] add documents for conditioned commands. --- README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/README.md b/README.md index 2107c87..346f4af 100644 --- a/README.md +++ b/README.md @@ -215,6 +215,40 @@ Current supported variables: Contents of each variable are described in [variables reference in VSCode](https://code.visualstudio.com/docs/editor/variables-reference). Note that all variables in the document is not supported in multi-command extension. +#### Conditioned commands + +A sequence can be branched by the result of whether or not a given command terminated with an error. +This feature is useful when you are not sure if an extension is installed or not. You can use an alternative command if the extension is not installed. + +For example: +```json +{ + "sequence": [ + "eslint.executeAutofix || editor.action.formatDocument" + ] +} +``` + +Only when `eslint.executeAutofix` finished with an error like command not found, `editor.action.formatDocument` is invoked. +Note that there must be at least one space on each side of the `||` operator. + +For more complex command like passing arguments, use `onFail` field. +```json +"sequence": [ + { + "command": "A", + "onFail": [ + "B", + { + "command": "C", + "args": { "arg": "argumentForC" } + }, + ] + } +] +``` +Only when command A finished with an error, command B and command C with arguments are invoked. + ### Find the name of the command you want to execute 1. Execute "Developer: Set Log Level..." and select "trace" in the command palette. From bc3d00dd02f6f6cf9ac520c82b3623001d9abe3b Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Sun, 10 Jul 2022 05:06:33 +0900 Subject: [PATCH 10/16] add command repeat parameter --- src/command.ts | 13 ++++++++++--- src/extension.ts | 5 ++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/command.ts b/src/command.ts index ddeb901..c1aa150 100644 --- a/src/command.ts +++ b/src/command.ts @@ -6,6 +6,7 @@ export class Command { constructor( private readonly exe: string, private readonly args: object | undefined, + private readonly repeat: number, private readonly onSuccess: Array | undefined, private readonly onFail: Array | undefined, private readonly variableSubstitution: boolean @@ -14,13 +15,19 @@ export class Command { public async execute() { try { if (this.args) { + let args; if (this.variableSubstitution) { - await vscode.commands.executeCommand(this.exe, this.substituteVariables(this.args)); + args = this.substituteVariables(this.args); } else { - await vscode.commands.executeCommand(this.exe, this.args); + args = this.args; + } + for(let i = 0; i < this.repeat; i++) { + await vscode.commands.executeCommand(this.exe, args); } } else { - await vscode.commands.executeCommand(this.exe); + for(let i = 0; i < this.repeat; i++) { + await vscode.commands.executeCommand(this.exe); + } } if (this.onSuccess) { for (let command of this.onSuccess) { diff --git a/src/extension.ts b/src/extension.ts index abcd148..1d8efe3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -24,6 +24,7 @@ interface CommandMap { interface ComplexCommand { command: string; args: object; + repeat: number; onSuccess: CommandSequence | undefined; onFail: CommandSequence | undefined; variableSubstitution: boolean; @@ -44,6 +45,7 @@ function createMultiCommand( function createCommand(command: string | ComplexCommand): Command { let exe: string; let args: object | undefined; + let repeat: number = 1; let variableSubstitution: boolean; let onSuccess: Array | undefined; let onFail: Array | undefined; @@ -61,11 +63,12 @@ function createMultiCommand( } else { exe = command.command; args = command.args; + repeat = command.repeat ?? 1; variableSubstitution = command.variableSubstitution ?? false; onSuccess = command.onSuccess?.map((c) => createCommand(c)); onFail = command.onFail?.map((c) => createCommand(c)); } - return new Command(exe, args, onSuccess, onFail, variableSubstitution); + return new Command(exe, args, repeat, onSuccess, onFail, variableSubstitution); } const sequence = settings.sequence.map((command) => { From 4a7fe1d5c9e46e92ed349d256e17c48fe77024da Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Sun, 10 Jul 2022 05:33:28 +0900 Subject: [PATCH 11/16] add repeat command document. --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/README.md b/README.md index 346f4af..9f084dc 100644 --- a/README.md +++ b/README.md @@ -215,6 +215,41 @@ Current supported variables: Contents of each variable are described in [variables reference in VSCode](https://code.visualstudio.com/docs/editor/variables-reference). Note that all variables in the document is not supported in multi-command extension. +#### Repeat commands + +The above `multiCommand.down3Lines` sample also written as follows by using `repeat` field: + +```json +{ + "command": "multiCommand.down3Lines", + "label": "down3Lines", + "description": "down the cursor in 3 times", + "sequence": [ + { "command": "cursorDown", "repeat": 3 } + ], +} +``` +You can also repeat a sequence by using `extension.multiCommand.execute` or defined command in settings.json. + +```json +{ + "sequence": [ + { + "command": "extension.multiCommand.execute", + "args": { + "sequence": [ + "editor.action.commentLine", + "cursorDown" + ] + }, + "repeat": 5 + } + ], +} +``` + +This sequence add line comment to next 5 lines. + #### Conditioned commands A sequence can be branched by the result of whether or not a given command terminated with an error. From 8dd7848881174b8190fb64cbc31dec992323cd22 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Mon, 11 Jul 2022 08:24:34 +0900 Subject: [PATCH 12/16] add language filter feature --- src/extension.ts | 14 ++++++++++++-- src/multiCommand.ts | 3 ++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 1d8efe3..9ff659b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -11,6 +11,7 @@ interface CommandSettings { description: string; interval: number; sequence: CommandSequence; + languages: Array; } interface CommandSettingsWithKey extends CommandSettings { @@ -41,6 +42,7 @@ function createMultiCommand( const label = settings.label; const description = settings.description; const interval = settings.interval; + const languages = settings.languages; function createCommand(command: string | ComplexCommand): Command { let exe: string; @@ -75,7 +77,7 @@ function createMultiCommand( return createCommand(command); }); - return new MultiCommand(id, label, description, interval, sequence); + return new MultiCommand(id, label, description, interval, sequence, languages); } let multiCommands: Array; @@ -154,7 +156,15 @@ export function activate(context: vscode.ExtensionContext) { export function deactivate() {} export async function pickMultiCommand() { - const picks = multiCommands.map((multiCommand) => { + let languageId = vscode.window.activeTextEditor?.document.languageId; + + const picks = multiCommands.filter((multiCommand) => { + if (languageId) { + return (multiCommand.languages?.indexOf(languageId) ?? 1) >= 0; + } else { + return true; + } + }).map((multiCommand) => { return { label: multiCommand.label || multiCommand.id, description: multiCommand.description || "", diff --git a/src/multiCommand.ts b/src/multiCommand.ts index 5031206..eade3b1 100644 --- a/src/multiCommand.ts +++ b/src/multiCommand.ts @@ -6,7 +6,8 @@ export class MultiCommand { readonly label: string | undefined, readonly description: string | undefined, readonly interval: number | undefined, - readonly sequence: Array + readonly sequence: Array, + readonly languages: Array | undefined ) {} public async execute() { From b3f16d11b170a49c8d51fd29b577a93097938b0b Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Mon, 11 Jul 2022 08:38:33 +0900 Subject: [PATCH 13/16] add language filter document. --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 9f084dc..42f6d76 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,22 @@ For example: }, ``` +If you set `languages` parameter in settings.json, the sequence is displayed only when a document of specified language is opened. +For example: + +```json + "multiCommand.commands": [ + { + "command": "multiCommand.eslint", + "sequence": [ + "eslint.executeAutofix", + ], + "languages": ["javascript", "typescript"] + }, + ] +``` +`multiCommand.eslint` is displayed only when the opened document is JavaScript or TypeScript. + ### Advanced Settings #### Pass arguments to commands From b1ca06eeea394364a1d0f89bac8f3fa18f89422c Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Tue, 12 Jul 2022 07:34:14 +0900 Subject: [PATCH 14/16] move changelog to CHANGELOG.md --- CHANGELOG.md | 31 +++++++++++++++++++++++++++---- README.md | 30 ------------------------------ 2 files changed, 27 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6b9209..250f46f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,30 @@ # Change Log -All notable changes to the "multi-command" extension will be documented in this file. -Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. +## 1.5.1 +### Added +- Support extensionKind ui or workspace. -## [Unreleased] -- Initial release \ No newline at end of file +## 1.5.0 +### Added +- Simple usage only with keybindings.json +- Object style settings for merging user settings and workspace settings. + +## 1.4.0 +### Added +- New style for binding a key to created commands. + +## 1.3.0 +### Added +- Manual execution from command palette. + +## 1.2.0 +### Added +- Pass arguments to commands. + +## 1.1.0 +### Fixed +- Reloads settings.json when the file is changed. + Now, you can use a custom multi-command immediately after adding it in the settings.json without restarting vscode. + +## 1.0.0 +Initial release. diff --git a/README.md b/README.md index 42f6d76..14f3e2d 100644 --- a/README.md +++ b/README.md @@ -328,33 +328,3 @@ With Command Runner extension, you can write a command sequence with shell comma ``` See the [Command Runner document](https://marketplace.visualstudio.com/items?itemName=edonet.vscode-command-runner) for details on how to use the extension. - -## Release Notes - -### 1.5.1 -Support extensionKind ui or workspace. - -### 1.5.0 -New Feature: Simple usage only with keybindings.json -New Feature: Object style settings for merging user settings and workspace settings. - -### 1.4.0 - -Added new style for binding a key to created commands. - -### 1.3.0 - -New Feature: Manual execution from command palette. - -### 1.2.0 - -New Feature: Pass arguments to commands. - -### 1.1.0 - -Reloads settings.json when the file is changed. -Now, you can use a custom multi-command immediately after adding it in the settings.json without restarting vscode. - -### 1.0.0 - -Initial release. From d48f076febb95e640d01fd0cfcfaf4c681e25a04 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Tue, 12 Jul 2022 07:50:12 +0900 Subject: [PATCH 15/16] Add changelog for 1.6.0 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 250f46f..a41ad6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 1.6.0 +### Added +- [Variable substitution like `${userHome}` or `${config:editor.fontSize}` in arguments.](/README.md#pass-arguments-to-commands) +- [Conditioned commands to branch a sequence when a command fails.](/README.md#conditioned-commands) +- [Parameter to repeat a command.](/README.md#repeat-commands) +- [Language filter for manual execution.](/README.md#manual-execution) + ## 1.5.1 ### Added - Support extensionKind ui or workspace. From a19a35790b784bb7427fe43d099858afc82d0a69 Mon Sep 17 00:00:00 2001 From: ryuta46 Date: Tue, 12 Jul 2022 08:16:30 +0900 Subject: [PATCH 16/16] 1.6.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ddfba8d..d543720 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "multi-command", - "version": "1.5.1", + "version": "1.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c3760d7..7851bb1 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "multi-command", "displayName": "multi-command", "description": "Invoke multiple commands as one command.", - "version": "1.5.1", + "version": "1.6.0", "publisher": "ryuta46", "repository": { "type": "git",