From ea0866a2ec5df4db793cb932e5a5f2b516d9309b Mon Sep 17 00:00:00 2001 From: Andre Weber Date: Thu, 26 Oct 2023 13:03:46 +0200 Subject: [PATCH 01/16] feature: Use commit-and-tag-version for Release Management --- .versionrc | 8 + app/build.gradle.kts | 2 +- .../kotlin/org/eclipse/kuksa/util/Version.kt | 59 ++ .../eclipse/kuksa/util/VersionProperties.kt | 102 --- buildSrc/src/main/kotlin/version.gradle.kts | 60 +- package.json | 4 +- standard-version-updater.js | 19 + version | 1 + version.properties | 6 - yarn.lock | 720 ++++++++++++++++-- 10 files changed, 775 insertions(+), 206 deletions(-) create mode 100644 .versionrc create mode 100644 buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt delete mode 100644 buildSrc/src/main/kotlin/org/eclipse/kuksa/util/VersionProperties.kt create mode 100644 standard-version-updater.js create mode 100644 version delete mode 100644 version.properties diff --git a/.versionrc b/.versionrc new file mode 100644 index 00000000..52db7ca2 --- /dev/null +++ b/.versionrc @@ -0,0 +1,8 @@ +{ + "bumpFiles": [ + { + "filename": "version", + "type": "plain-text" + } + ] +} diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ca15503c..4434db65 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -34,7 +34,7 @@ android { applicationId = "org.eclipse.kuksa.testapp" minSdk = 27 targetSdk = 34 - versionCode = rootProject.extra["projectVersionCode"].toString().toInt() + versionCode = 1 versionName = rootProject.extra["projectVersion"].toString() vectorDrawables { useSupportLibrary = true diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt new file mode 100644 index 00000000..ac8dd670 --- /dev/null +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * + */ + +package org.eclipse.kuksa.util + +import java.util.Locale + +class Version(semanticVersion: String) { + + val major: Int + + val minor: Int + + val patch: Int + + var suffix: String = "" + + val version: String + get() { + var version = "$major.$minor.$patch" + if (suffix.isNotEmpty()) { + version += "-$suffix" + } + return version + } + + val versionCode: Int + get() { + val decorator = "10" + val paddedMajorVersion = String.format(Locale.ROOT, "%02d", major) + val paddedMinorVersion = String.format(Locale.ROOT, "%02d", minor) + val paddedPatchVersion = String.format(Locale.ROOT, "%02d", patch) + + return "$decorator$paddedMajorVersion$paddedMinorVersion$paddedPatchVersion".toInt() + } + + init { + val versions = semanticVersion.trim().split(".") + major = versions[0].toInt() + minor = versions[1].toInt() + patch = versions[2].toInt() + } +} diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/VersionProperties.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/VersionProperties.kt deleted file mode 100644 index 5ff737a7..00000000 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/VersionProperties.kt +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2023 Contributors to the Eclipse Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ - -package org.eclipse.kuksa.util - -import java.io.File -import java.io.FileWriter -import java.io.IOException -import java.util.Locale -import java.util.Properties - -class VersionProperties(private val filePath: String) { - private val properties: Properties = Properties() - - var major: Int - get() = properties.getProperty(KEY_MAJOR).toInt() - set(value) { - properties.put(KEY_MAJOR, value.toString()) - } - - var minor: Int - get() = properties.getProperty(KEY_MINOR).toInt() - set(value) { - properties.put(KEY_MINOR, value.toString()) - } - - var patch: Int - get() = properties.getProperty(KEY_PATCH).toInt() - set(value) { - properties.put(KEY_PATCH, value.toString()) - } - - var suffix: String - get() = properties.getProperty(KEY_SUFFIX) - set(value) { - properties.put(KEY_SUFFIX, value) - } - - val version: String - get() { - var version = "$major.$minor.$patch" - if (suffix.isNotEmpty()) { - version += "-$suffix" - } - return version - } - - val versionCode: Int - get() { - val decorator = "10" - val paddedMajorVersion = String.format(Locale.ROOT, "%02d", major) - val paddedMinorVersion = String.format(Locale.ROOT, "%02d", minor) - val paddedPatchVersion = String.format(Locale.ROOT, "%02d", patch) - - return "$decorator$paddedMajorVersion$paddedMinorVersion$paddedPatchVersion".toInt() - } - - fun load() { - try { - val file = File(filePath) - val inputStream = file.inputStream() - - properties.load(inputStream) - } catch (e: IOException) { - System.err.println("Could not load file $filePath: ${e.message}") - } - } - - fun store() { - try { - val file = File(filePath) - val fileWriter = FileWriter(file) - - properties.store(fileWriter, "Generated by 'store' in VersionProperties.kt") - } catch (e: IOException) { - System.err.print("Could not write file $filePath: ${e.message}") - } - } - - private companion object { - private const val KEY_MAJOR = "MAJOR" - private const val KEY_MINOR = "MINOR" - private const val KEY_PATCH = "PATCH" - private const val KEY_SUFFIX = "SUFFIX" - } -} diff --git a/buildSrc/src/main/kotlin/version.gradle.kts b/buildSrc/src/main/kotlin/version.gradle.kts index a11fad2c..e72bb1e6 100644 --- a/buildSrc/src/main/kotlin/version.gradle.kts +++ b/buildSrc/src/main/kotlin/version.gradle.kts @@ -1,68 +1,42 @@ -import org.eclipse.kuksa.util.VersionProperties +import org.eclipse.kuksa.util.Version -val properties = VersionProperties("$rootDir/version.properties") -properties.load() +val file = File("$rootDir/version") +val semanticVersion = file.readText() +val version = Version(semanticVersion) -rootProject.extra["projectVersion"] = properties.version -rootProject.extra["projectVersionCode"] = properties.versionCode - -tasks.register("increaseMajorVersion") { - group = "version" - doLast { - properties.major += 1 - properties.minor = 0 - properties.patch = 0 - properties.store() - } -} - -tasks.register("increaseMinorVersion") { - group = "version" - doLast { - properties.minor += 1 - properties.patch = 0 - properties.store() - } -} - -tasks.register("increasePatchVersion") { - group = "version" - doLast { - properties.patch += 1 - properties.store() - } -} +updateExtras() tasks.register("setReleaseVersion") { group = "version" doLast { - properties.suffix = "" - properties.store() + version.suffix = "" + + updateExtras() } } tasks.register("setSnapshotVersion") { group = "version" doLast { - properties.suffix = "SNAPSHOT" - properties.store() + version.suffix = "SNAPSHOT" + + updateExtras() } } tasks.register("printVersion") { group = "version" doLast { - val version = properties.version + val version = version.version println("VERSION=$version") } + + mustRunAfter("setReleaseVersion", "setSnapshotVersion") } -tasks.register("printVersionCode") { - group = "version" - doLast { - val versionCode = properties.versionCode - println("VERSION_CODE=$versionCode") - } +fun updateExtras() { + rootProject.extra["projectVersion"] = version.version + rootProject.extra["projectVersionCode"] = version.versionCode } diff --git a/package.json b/package.json index 14534b7a..b6f609cb 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,11 @@ "devDependencies": { "@commitlint/cli": "^17.6.6", "@commitlint/config-conventional": "^17.6.6", + "commit-and-tag-version": "^11.3.0", "husky": "^8.0.3" }, "scripts": { - "postinstall": "husky install" + "postinstall": "husky install", + "release": "commit-and-tag-version" } } diff --git a/standard-version-updater.js b/standard-version-updater.js new file mode 100644 index 00000000..f5ada91c --- /dev/null +++ b/standard-version-updater.js @@ -0,0 +1,19 @@ +// standard-version-updater.js +const stringifyPackage = require('stringify-package') +const detectIndent = require('detect-indent') +const detectNewline = require('detect-newline') + +module.exports.readVersion = function (contents) { + return JSON.parse(contents).tracker.package.version; +} + +module.exports.writeVersion = function (contents, version) { + const versions = version.split(".") + const major = versions[0] + const minor = versions[1] + const patch = versions[2] + + return `MAJOR=${major} + MINOR=${minor} + PATCH=${PATCH}` +} diff --git a/version b/version new file mode 100644 index 00000000..6e8bf73a --- /dev/null +++ b/version @@ -0,0 +1 @@ +0.1.0 diff --git a/version.properties b/version.properties deleted file mode 100644 index 249cc253..00000000 --- a/version.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Generated by 'storeVersionProperties' in version.gradle.kts -#Thu Sep 14 08:52:28 CEST 2023 -MAJOR=0 -MINOR=1 -PATCH=0 -SUFFIX=SNAPSHOT diff --git a/yarn.lock b/yarn.lock index e94a3be7..10581141 100644 --- a/yarn.lock +++ b/yarn.lock @@ -191,6 +191,11 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" @@ -244,14 +249,6 @@ resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== -JSONStream@^1.0.4: - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" @@ -262,6 +259,11 @@ acorn@^8.4.1: resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== + ajv@^8.11.0: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" @@ -311,6 +313,24 @@ arrify@^1.0.1: resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -339,6 +359,15 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^4.1.0: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" @@ -347,6 +376,15 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + cliui@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" @@ -370,15 +408,34 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +commit-and-tag-version@^11.3.0: + version "11.3.0" + resolved "https://registry.npmjs.org/commit-and-tag-version/-/commit-and-tag-version-11.3.0.tgz" + integrity sha512-hh3wV9pcuQRuUNdPZ3TfF29VjgbkWJxJ6sQKDls1k71hMZHTjbsdPFbr2gBTUUwW/ArGGZNxejWDTomPZtEq/g== + dependencies: + chalk "^2.4.2" + conventional-changelog "3.1.25" + conventional-changelog-config-spec "2.1.0" + conventional-changelog-conventionalcommits "6.1.0" + conventional-recommended-bump "7.0.1" + detect-indent "^6.0.0" + detect-newline "^3.1.0" + dotgitignore "^2.1.0" + figures "^3.1.0" + find-up "^5.0.0" + git-semver-tags "^5.0.0" + semver "^7.1.1" + yargs "^17.0.0" compare-func@^2.0.0: version "2.0.0" @@ -388,7 +445,22 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -conventional-changelog-angular@^5.0.11: +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12: version "5.0.13" resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== @@ -396,6 +468,34 @@ conventional-changelog-angular@^5.0.11: compare-func "^2.0.0" q "^1.5.1" +conventional-changelog-atom@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz" + integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw== + dependencies: + q "^1.5.1" + +conventional-changelog-codemirror@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz" + integrity sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw== + dependencies: + q "^1.5.1" + +conventional-changelog-config-spec@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz" + integrity sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ== + +conventional-changelog-conventionalcommits@^4.5.0: + version "4.6.3" + resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz" + integrity sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== + dependencies: + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" + conventional-changelog-conventionalcommits@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz" @@ -405,24 +505,173 @@ conventional-changelog-conventionalcommits@^5.0.0: lodash "^4.17.15" q "^1.5.1" -conventional-commits-parser@^3.2.2: +conventional-changelog-conventionalcommits@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz" + integrity sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw== + dependencies: + compare-func "^2.0.0" + +conventional-changelog-core@^4.2.1: + version "4.2.4" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" + +conventional-changelog-ember@^2.0.9: + version "2.0.9" + resolved "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz" + integrity sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A== + dependencies: + q "^1.5.1" + +conventional-changelog-eslint@^3.0.9: + version "3.0.9" + resolved "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz" + integrity sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA== + dependencies: + q "^1.5.1" + +conventional-changelog-express@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz" + integrity sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ== + dependencies: + q "^1.5.1" + +conventional-changelog-jquery@^3.0.11: + version "3.0.11" + resolved "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz" + integrity sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw== + dependencies: + q "^1.5.1" + +conventional-changelog-jshint@^2.0.9: + version "2.0.9" + resolved "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz" + integrity sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-preset-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz" + integrity sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== + +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== + dependencies: + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-changelog@3.1.25: + version "3.1.25" + resolved "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz" + integrity sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ== + dependencies: + conventional-changelog-angular "^5.0.12" + conventional-changelog-atom "^2.0.8" + conventional-changelog-codemirror "^2.0.8" + conventional-changelog-conventionalcommits "^4.5.0" + conventional-changelog-core "^4.2.1" + conventional-changelog-ember "^2.0.9" + conventional-changelog-eslint "^3.0.9" + conventional-changelog-express "^2.0.6" + conventional-changelog-jquery "^3.0.11" + conventional-changelog-jshint "^2.0.9" + conventional-changelog-preset-loader "^2.3.4" + +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz" + integrity sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.1" + +conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.2: version "3.2.4" resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz" integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: - JSONStream "^1.0.4" is-text-path "^1.0.1" + JSONStream "^1.0.4" lodash "^4.17.15" meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" +conventional-commits-parser@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz" + integrity sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== + dependencies: + is-text-path "^1.0.1" + JSONStream "^1.3.5" + meow "^8.1.2" + split2 "^3.2.2" + +conventional-recommended-bump@7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz" + integrity sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^3.0.0" + conventional-commits-filter "^3.0.0" + conventional-commits-parser "^4.0.0" + git-raw-commits "^3.0.0" + git-semver-tags "^5.0.0" + meow "^8.1.2" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cosmiconfig-typescript-loader@^4.0.0: version "4.3.0" resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz" integrity sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q== -cosmiconfig@^8.0.0: +cosmiconfig@^8.0.0, cosmiconfig@>=7: version "8.2.0" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz" integrity sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ== @@ -451,6 +700,11 @@ dargs@^7.0.0: resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz" @@ -464,6 +718,16 @@ decamelize@^1.1.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + diff@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" @@ -476,6 +740,14 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" +dotgitignore@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz" + integrity sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA== + dependencies: + find-up "^3.0.0" + minimatch "^3.0.4" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -518,6 +790,27 @@ fast-deep-equal@^3.1.1: resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +figures@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" @@ -553,12 +846,22 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -git-raw-commits@^2.0.11: +git-raw-commits@^2.0.11, git-raw-commits@^2.0.8: version "2.0.11" resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz" integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== @@ -569,6 +872,46 @@ git-raw-commits@^2.0.11: split2 "^3.0.0" through2 "^4.0.0" +git-raw-commits@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz" + integrity sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== + dependencies: + dargs "^7.0.0" + meow "^8.1.2" + split2 "^3.2.2" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== + dependencies: + meow "^8.0.0" + semver "^6.0.0" + +git-semver-tags@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz" + integrity sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA== + dependencies: + meow "^8.1.2" + semver "^7.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" + global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz" @@ -576,11 +919,23 @@ global-dirs@^0.1.1: dependencies: ini "^1.3.4" -graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +handlebars@^4.7.7: + version "4.7.8" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" @@ -608,7 +963,7 @@ hosted-git-info@^2.1.4: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^4.0.1: +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== @@ -638,12 +993,12 @@ indent-string@^4.0.0: resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -inherits@^2.0.3: +inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4: +ini@^1.3.2, ini@^1.3.4: version "1.3.8" resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -687,6 +1042,11 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -704,6 +1064,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -714,6 +1079,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -728,6 +1098,14 @@ jsonparse@^1.2.0: resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +JSONStream@^1.0.4, JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + kind-of@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" @@ -738,6 +1116,32 @@ lines-and-columns@^1.1.6: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" @@ -762,6 +1166,11 @@ lodash.isfunction@^3.0.9: resolved "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz" integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" @@ -829,7 +1238,7 @@ map-obj@^4.0.0: resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -meow@^8.0.0: +meow@^8.0.0, meow@^8.1.2: version "8.1.2" resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz" integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== @@ -861,6 +1270,13 @@ min-indent@^1.0.0: resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" @@ -870,11 +1286,31 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.6: +minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +modify-values@^1.0.0, modify-values@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" @@ -909,6 +1345,20 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -923,6 +1373,20 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" @@ -937,6 +1401,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" @@ -949,6 +1418,14 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse-json@^5.0.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" @@ -959,6 +1436,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -974,11 +1456,33 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + punycode@^2.1.0: version "2.3.0" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" @@ -994,6 +1498,14 @@ quick-lru@^4.0.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" @@ -1003,6 +1515,15 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" @@ -1013,7 +1534,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@3, readable-stream@^3.0.0: +readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@3: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -1022,6 +1543,19 @@ readable-stream@3, readable-stream@^3.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + redent@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" @@ -1040,17 +1574,17 @@ require-from-string@^2.0.2: resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-global@1.0.0, resolve-global@^1.0.0: +resolve-from@^5.0.0, resolve-from@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-global@^1.0.0, resolve-global@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz" integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== @@ -1066,30 +1600,40 @@ resolve@^1.10.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"semver@2 || 3 || 4 || 5": - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@7.5.2: +semver@^7.0.0, semver@^7.1.1, semver@7.5.2: version "7.5.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz" integrity sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ== dependencies: lru-cache "^6.0.0" semver@^7.3.4: version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -1107,6 +1651,11 @@ signal-exit@^3.0.3: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" @@ -1133,13 +1682,34 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz" integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== -split2@^3.0.0: +split@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +split2@^3.0.0, split2@^3.2.2: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -1149,13 +1719,6 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -1163,6 +1726,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" @@ -1199,6 +1767,19 @@ text-extensions@^1.0.0: resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +"through@>=2.2.7 <3", through@2: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + through2@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz" @@ -1206,17 +1787,12 @@ through2@^4.0.0: dependencies: readable-stream "3" -"through@>=2.2.7 <3": - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-node@^10.8.1: +ts-node@^10.8.1, ts-node@>=10: version "10.9.1" resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -1250,11 +1826,21 @@ type-fest@^0.8.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -"typescript@^4.6.4 || ^5.0.0": +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +"typescript@^4.6.4 || ^5.0.0", typescript@>=2.7, typescript@>=3: version "5.1.6" resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" @@ -1267,7 +1853,7 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -1292,6 +1878,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" @@ -1301,6 +1892,11 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -1311,6 +1907,11 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" @@ -1321,6 +1922,19 @@ yargs-parser@^21.1.1: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^17.0.0: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" From 45b4d904183b17c7949bc55d4348c20e0531bf1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Tue, 7 Nov 2023 17:08:50 +0100 Subject: [PATCH 02/16] chore: Add types config for generated changelog --- .versionrc | 10 ++++++++++ package.json | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.versionrc b/.versionrc index 52db7ca2..4af50132 100644 --- a/.versionrc +++ b/.versionrc @@ -4,5 +4,15 @@ "filename": "version", "type": "plain-text" } + ], + "types": [ + {"type": "feature", "section": "Features"}, + {"type": "fix", "section": "Bug Fixes"}, + {"type": "docs", "section": "Documentation"}, + {"type": "perf", "section": "Performance"}, + {"type": "refactor", "section": "Refactoring"}, + {"type": "test", "section": "Tests"}, + {"type": "chore", "hidden": true}, + {"type": "style", "hidden": true} ] } diff --git a/package.json b/package.json index b6f609cb..0ad8dc89 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ }, "scripts": { "postinstall": "husky install", - "release": "commit-and-tag-version" + "release": "commit-and-tag-version", + "generate-changelog": "npx commit-and-tag-version -t release/ --skip.bump=true --skip.commit=true --skip.tag=true", + "changelog-to-html": "npx changelog-to-html" } } From 4b6bd3f74eb8ebfec520da267f3537b039ec2737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 9 Nov 2023 14:10:02 +0100 Subject: [PATCH 03/16] chore: Use preMajor for release notes --- .versionrc | 4 +++- app/build.gradle.kts | 2 +- package.json | 5 ++--- standard-version-updater.js | 19 ------------------- 4 files changed, 6 insertions(+), 24 deletions(-) delete mode 100644 standard-version-updater.js diff --git a/.versionrc b/.versionrc index 4af50132..64329b91 100644 --- a/.versionrc +++ b/.versionrc @@ -12,7 +12,9 @@ {"type": "perf", "section": "Performance"}, {"type": "refactor", "section": "Refactoring"}, {"type": "test", "section": "Tests"}, + {"type": "revert", "section": "Reverts"}, {"type": "chore", "hidden": true}, {"type": "style", "hidden": true} - ] + ], + "preMajor": true } diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4434db65..ca15503c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -34,7 +34,7 @@ android { applicationId = "org.eclipse.kuksa.testapp" minSdk = 27 targetSdk = 34 - versionCode = 1 + versionCode = rootProject.extra["projectVersionCode"].toString().toInt() versionName = rootProject.extra["projectVersion"].toString() vectorDrawables { useSupportLibrary = true diff --git a/package.json b/package.json index 0ad8dc89..45c677f0 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,7 @@ }, "scripts": { "postinstall": "husky install", - "release": "commit-and-tag-version", - "generate-changelog": "npx commit-and-tag-version -t release/ --skip.bump=true --skip.commit=true --skip.tag=true", - "changelog-to-html": "npx changelog-to-html" + "release": "commit-and-tag-version -t release/ --skip.tag=true", + "generate-changelog": "npx commit-and-tag-version -t release/ --skip.bump=true --skip.commit=true --skip.tag=true" } } diff --git a/standard-version-updater.js b/standard-version-updater.js deleted file mode 100644 index f5ada91c..00000000 --- a/standard-version-updater.js +++ /dev/null @@ -1,19 +0,0 @@ -// standard-version-updater.js -const stringifyPackage = require('stringify-package') -const detectIndent = require('detect-indent') -const detectNewline = require('detect-newline') - -module.exports.readVersion = function (contents) { - return JSON.parse(contents).tracker.package.version; -} - -module.exports.writeVersion = function (contents, version) { - const versions = version.split(".") - const major = versions[0] - const minor = versions[1] - const patch = versions[2] - - return `MAJOR=${major} - MINOR=${minor} - PATCH=${PATCH}` -} From 66f6ccfd597728397a04a0f3a301304bac055648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 9 Nov 2023 14:11:27 +0100 Subject: [PATCH 04/16] chore: Add deploy GitHub workflow --- .github/workflows/deploy.yaml | 29 +++++++++++++++++++++ buildSrc/src/main/kotlin/publish.gradle.kts | 12 ++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/deploy.yaml diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 00000000..2a145bef --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,29 @@ +name: deployment + +concurrency: production + +on: + push: + branches: + - main + +jobs: + deployment: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + + - name: Publish Library + run: ./gradlew publishReleasePublicationToGithubPackagesRepository + -Pgpr.repository=${{ github.repository }} + -Pgpr.user=${{ github.actor }} + -Pgpr.token=${{ secrets.GITHUB_TOKEN }} diff --git a/buildSrc/src/main/kotlin/publish.gradle.kts b/buildSrc/src/main/kotlin/publish.gradle.kts index 4f790f37..b808ed55 100644 --- a/buildSrc/src/main/kotlin/publish.gradle.kts +++ b/buildSrc/src/main/kotlin/publish.gradle.kts @@ -31,7 +31,17 @@ val extension = project.extensions.create("publish") afterEvaluate { publishing { repositories { - // to be defined + maven { + name = "GithubPackages" + + val repository = project.findProperty("gpr.repository") as String? ?: System.getenv("GPR_REPOSITORY") + url = uri("https://maven.pkg.github.com/$repository") + + credentials { + username = project.findProperty("gpr.user") as String? ?: System.getenv("GPR_USERNAME") + password = project.findProperty("gpr.token") as String? ?: System.getenv("GPR_TOKEN") + } + } } publications { register("${extension.mavenPublicationName.get()}") { From d9a3c577b51d1e2344d9244f1434a1eb53393810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 9 Nov 2023 14:11:47 +0100 Subject: [PATCH 05/16] chore: Update AGP to 8.1.3 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 053e91ef..f813c694 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] activityKtx = "1.8.0" -androidGradlePlugin = "8.1.2" # Check with detekt table first: https://detekt.dev/docs/introduction/compatibility/ +androidGradlePlugin = "8.1.3" # Check with detekt table first: https://detekt.dev/docs/introduction/compatibility/ datastore = "1.0.0" constraintlayoutCompose = "1.0.1" datastorePreferences = "1.0.0" From 547b0cc3374fbbaacfaa9d1e2b05d126f63534c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 9 Nov 2023 14:16:25 +0100 Subject: [PATCH 06/16] chore: Correct code style --- buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt | 7 ++----- buildSrc/src/main/kotlin/version.gradle.kts | 5 ++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt index ac8dd670..a4578d2b 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt @@ -22,21 +22,18 @@ package org.eclipse.kuksa.util import java.util.Locale class Version(semanticVersion: String) { - val major: Int - val minor: Int - val patch: Int - var suffix: String = "" - val version: String + val versionString: String get() { var version = "$major.$minor.$patch" if (suffix.isNotEmpty()) { version += "-$suffix" } + return version } diff --git a/buildSrc/src/main/kotlin/version.gradle.kts b/buildSrc/src/main/kotlin/version.gradle.kts index e72bb1e6..da7ace11 100644 --- a/buildSrc/src/main/kotlin/version.gradle.kts +++ b/buildSrc/src/main/kotlin/version.gradle.kts @@ -27,7 +27,7 @@ tasks.register("setSnapshotVersion") { tasks.register("printVersion") { group = "version" doLast { - val version = version.version + val version = version.versionString println("VERSION=$version") } @@ -35,8 +35,7 @@ tasks.register("printVersion") { mustRunAfter("setReleaseVersion", "setSnapshotVersion") } - fun updateExtras() { - rootProject.extra["projectVersion"] = version.version + rootProject.extra["projectVersion"] = version.versionString rootProject.extra["projectVersionCode"] = version.versionCode } From b1e8807289063eb23ed9d87f74fa9dce0f987337 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 9 Nov 2023 14:28:15 +0100 Subject: [PATCH 07/16] chore: Add snapshot + release deploy workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes #26 Signed-Off-By: Mark Hüsers --- .github/workflows/deploy-release.yaml | 29 +++++++++++++++++++ .../{deploy.yaml => deploy-snapshot.yaml} | 2 +- package.json | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/deploy-release.yaml rename .github/workflows/{deploy.yaml => deploy-snapshot.yaml} (85%) diff --git a/.github/workflows/deploy-release.yaml b/.github/workflows/deploy-release.yaml new file mode 100644 index 00000000..8000a62f --- /dev/null +++ b/.github/workflows/deploy-release.yaml @@ -0,0 +1,29 @@ +name: deployment + +concurrency: production + +on: + push: + tags: + - 'release/v*' + +jobs: + deployment: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + + - name: Publish Library + run: ./gradlew setReleaseVersion publishReleasePublicationToGithubPackagesRepository + -Pgpr.repository=${{ github.repository }} + -Pgpr.user=${{ github.actor }} + -Pgpr.token=${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy-snapshot.yaml similarity index 85% rename from .github/workflows/deploy.yaml rename to .github/workflows/deploy-snapshot.yaml index 2a145bef..23b8fefc 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -23,7 +23,7 @@ jobs: uses: gradle/gradle-build-action@v2 - name: Publish Library - run: ./gradlew publishReleasePublicationToGithubPackagesRepository + run: ./gradlew setSnapshotVersion publishReleasePublicationToGithubPackagesRepository -Pgpr.repository=${{ github.repository }} -Pgpr.user=${{ github.actor }} -Pgpr.token=${{ secrets.GITHUB_TOKEN }} diff --git a/package.json b/package.json index 45c677f0..962fd0e2 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "scripts": { "postinstall": "husky install", - "release": "commit-and-tag-version -t release/ --skip.tag=true", + "release": "npx commit-and-tag-version -t release/ --skip.tag=true", "generate-changelog": "npx commit-and-tag-version -t release/ --skip.bump=true --skip.commit=true --skip.tag=true" } } From 0121f17399b195004bff99866a9e13032b2884cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 9 Nov 2023 15:19:12 +0100 Subject: [PATCH 08/16] chore: Add 0.1.0 Changelog --- .versionrc | 2 +- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/.versionrc b/.versionrc index 64329b91..ed47ad61 100644 --- a/.versionrc +++ b/.versionrc @@ -11,8 +11,8 @@ {"type": "docs", "section": "Documentation"}, {"type": "perf", "section": "Performance"}, {"type": "refactor", "section": "Refactoring"}, - {"type": "test", "section": "Tests"}, {"type": "revert", "section": "Reverts"}, + {"type": "test", "hidden": true}, {"type": "chore", "hidden": true}, {"type": "style", "hidden": true} ], diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..a62a35ac --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. + +## 0.1.0 (2023-11-09) + + +### Features + +* Add Centralized Versioning ([d7a946c](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/d7a946ccaaef9898e3d02a9b3f879e897ac1df0f)) +* Add Unsubscribe API to SDK ([69c6294](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/69c62943780046316e4c04b91a063cef63679d0d)), closes [#18](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/18) [#20](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/20) +* Add update API for generated specifications ([9f150e8](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/9f150e801929c8836290c6db9dd76bee37d12340)), closes [#23](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/23) +* Add VSS Symbol Processing processor ([18926ee](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/18926ee0cb15f534855e9dd646c1a30e2542719c)) +* Correctly trigger Actuator Target Events ([3c2428b](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/3c2428b0efa73d75aee00b4632011b6f7caf7de3)), closes [#29](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/29) +* Disable Obfuscation ([0d66d97](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/0d66d97c398531fe9429e0f0d19285dbea3eaf1d)), closes [#5](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/5) +* Generate Dash License Report ([5fdc0d1](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/5fdc0d14a39b2259cfc13ae093a3ffb01e622edb)), closes [#2](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/2) +* Limit Maximum Number of Logs ([07a808a](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/07a808aad2d8a5dcfb4aa51e1efe67e3826633e2)), closes [#19](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/19) +* Make Certificate Selectable in TestApp ([34a4b4c](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/34a4b4c250d3b8da53ff912578e74e93b246efb8)), closes [#15](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/15) +* Notify about DataBroker Disconnect ([47e378b](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/47e378bdacbe37e2c4b497a30872418244bc3537)), closes [#12](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/12) +* Publish Kuksa SDK Snapshot Builds to MavenLocal ([eb63872](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/eb63872da13e929b9664dc7904cc743ff0123867)), closes [#6](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/issues/6) +* Use commit-and-tag-version for Release Management ([ea0866a](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/ea0866a2ec5df4db793cb932e5a5f2b516d9309b)) + + +### Documentation + +* Adapt Architecture Documentation ([0fbb6ab](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/0fbb6ab2af1b08156860f7cdb74650db458d50ef)) +* Improve documentation ([61b34cc](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/61b34cc903a9ecaff1c84b5451d14340ce2daaaa)) + + +### Performance + +* Apply build analyser recommendations ([2a108c3](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/2a108c3bf0dbe9688d781f2f199c8deaba2cd1fd)) From ad7ddecdf815311188a90bdbb7fe028029da176c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Thu, 9 Nov 2023 15:29:10 +0100 Subject: [PATCH 09/16] chore: Bump to new version for snapshot releases --- .github/workflows/deploy-release.yaml | 5 +++- .github/workflows/deploy-snapshot.yaml | 8 +++++- .../util/{Version.kt => SemanticVersion.kt} | 9 ++++-- buildSrc/src/main/kotlin/version.gradle.kts | 28 +++++++++++-------- package.json | 7 +++-- version | 1 - version.txt | 1 + 7 files changed, 40 insertions(+), 19 deletions(-) rename buildSrc/src/main/kotlin/org/eclipse/kuksa/util/{Version.kt => SemanticVersion.kt} (85%) delete mode 100644 version create mode 100644 version.txt diff --git a/.github/workflows/deploy-release.yaml b/.github/workflows/deploy-release.yaml index 8000a62f..0322e530 100644 --- a/.github/workflows/deploy-release.yaml +++ b/.github/workflows/deploy-release.yaml @@ -22,8 +22,11 @@ jobs: - name: Setup Gradle uses: gradle/gradle-build-action@v2 + - name: Set Release Version + run: ./gradlew setReleaseVersion + - name: Publish Library - run: ./gradlew setReleaseVersion publishReleasePublicationToGithubPackagesRepository + run: ./gradlew publishReleasePublicationToGithubPackagesRepository -Pgpr.repository=${{ github.repository }} -Pgpr.user=${{ github.actor }} -Pgpr.token=${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/deploy-snapshot.yaml b/.github/workflows/deploy-snapshot.yaml index 23b8fefc..bb2aed42 100644 --- a/.github/workflows/deploy-snapshot.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -22,8 +22,14 @@ jobs: - name: Setup Gradle uses: gradle/gradle-build-action@v2 + - name: Update Version + run: npm run bump-release # Updates the semantic version depending on the last commits e.g. feature / bugfix + + - name: Set Snapshot Version + run: ./gradlew setSnapshotVersion + - name: Publish Library - run: ./gradlew setSnapshotVersion publishReleasePublicationToGithubPackagesRepository + run: ./gradlew publishReleasePublicationToGithubPackagesRepository -Pgpr.repository=${{ github.repository }} -Pgpr.user=${{ github.actor }} -Pgpr.token=${{ secrets.GITHUB_TOKEN }} diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt similarity index 85% rename from buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt rename to buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt index a4578d2b..73efc275 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/Version.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt @@ -21,7 +21,7 @@ package org.eclipse.kuksa.util import java.util.Locale -class Version(semanticVersion: String) { +class SemanticVersion(semanticVersion: String) { val major: Int val minor: Int val patch: Int @@ -48,9 +48,14 @@ class Version(semanticVersion: String) { } init { - val versions = semanticVersion.trim().split(".") + val versions = semanticVersion.trim() + .substringBefore("-") // Ignore suffixes like -SNAPSHOT + .split(".") + val suffix = semanticVersion.substringAfter("-") + major = versions[0].toInt() minor = versions[1].toInt() patch = versions[2].toInt() + this.suffix = suffix } } diff --git a/buildSrc/src/main/kotlin/version.gradle.kts b/buildSrc/src/main/kotlin/version.gradle.kts index da7ace11..8b984ebb 100644 --- a/buildSrc/src/main/kotlin/version.gradle.kts +++ b/buildSrc/src/main/kotlin/version.gradle.kts @@ -1,33 +1,33 @@ -import org.eclipse.kuksa.util.Version +import org.eclipse.kuksa.util.SemanticVersion -val file = File("$rootDir/version") -val semanticVersion = file.readText() -val version = Version(semanticVersion) +val file = File("$rootDir/version.txt") +val fileContent = file.readText() +val semanticVersion = SemanticVersion(fileContent) updateExtras() tasks.register("setReleaseVersion") { group = "version" doLast { - version.suffix = "" + semanticVersion.suffix = "" - updateExtras() + updateVersion() } } tasks.register("setSnapshotVersion") { group = "version" doLast { - version.suffix = "SNAPSHOT" + semanticVersion.suffix = "SNAPSHOT" - updateExtras() + updateVersion() } } tasks.register("printVersion") { group = "version" doLast { - val version = version.versionString + val version = semanticVersion.versionString println("VERSION=$version") } @@ -36,6 +36,12 @@ tasks.register("printVersion") { } fun updateExtras() { - rootProject.extra["projectVersion"] = version.versionString - rootProject.extra["projectVersionCode"] = version.versionCode + rootProject.extra["projectVersion"] = semanticVersion.versionString + rootProject.extra["projectVersionCode"] = semanticVersion.versionCode +} + +fun updateVersion() { + updateExtras() + + file.writeText(semanticVersion.versionString) } diff --git a/package.json b/package.json index 962fd0e2..7e5799d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,5 @@ { "name": "kuksa-sdk-android", - "version": "0.1.0", "main": "index.js", "repository": "https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android.git", "author": "", @@ -13,7 +12,9 @@ }, "scripts": { "postinstall": "husky install", - "release": "npx commit-and-tag-version -t release/ --skip.tag=true", - "generate-changelog": "npx commit-and-tag-version -t release/ --skip.bump=true --skip.commit=true --skip.tag=true" + "tag-release": "npx commit-and-tag-version --packageFiles version.txt -t release/v --skip.commit=true --skip.changelog=true --skip.bump=true", + "commit-release": "npx commit-and-tag-version --packageFiles version.txt --bumpFiles version.txt --skip.tag=true", + "bump-release": "npx commit-and-tag-version --packageFiles version.txt --bumpFiles version.txt --skip.tag=true --skip.commit=true", + "generate-changelog": "npx commit-and-tag-version --skip.bump=true --skip.commit=true --skip.tag=true" } } diff --git a/version b/version deleted file mode 100644 index 6e8bf73a..00000000 --- a/version +++ /dev/null @@ -1 +0,0 @@ -0.1.0 diff --git a/version.txt b/version.txt new file mode 100644 index 00000000..6c6aa7cb --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.1.0 \ No newline at end of file From b51059bf0c5806e32ccd9ddcc1ea85cb7c91ef97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 10 Nov 2023 13:04:37 +0100 Subject: [PATCH 10/16] docs: Add release HowTo docs --- docs/RELEASE.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/RELEASE.md diff --git a/docs/RELEASE.md b/docs/RELEASE.md new file mode 100644 index 00000000..78706e11 --- /dev/null +++ b/docs/RELEASE.md @@ -0,0 +1,28 @@ +## Releasing a version + +Realsing a version is mostly automated. However since the CHANGELOG.md + version information are part of the git history and need to be commited, some manual steps are still needed. These steps are also there to check for errors which may have been made in the git history via the [Conventionalcommits standard](https://www.conventionalcommits.org/en/v1.0.0/) format. + +The NPM package [Commit-And-Tag](https://github.com/absolute-version/commit-and-tag-version) is used to streamline the release process. + +### Preparing a release + +The following convinience NPM scripts are avaialble for use here: + +``` + "scripts": { + "tag-release": "npx commit-and-tag-version --packageFiles version.txt -t release/v --skip.commit=true --skip.changelog=true --skip.bump=true", + "commit-release": "npx commit-and-tag-version --packageFiles version.txt --bumpFiles version.txt --skip.tag=true", + "bump-release": "npx commit-and-tag-version --packageFiles version.txt --bumpFiles version.txt --skip.tag=true --skip.commit=true", + "generate-changelog": "npx commit-and-tag-version --skip.bump=true --skip.commit=true --skip.tag=true" + } +``` + +1) Execute `npm run commit-release` to prepare the release. This will automatically bump the version to the next correct semantic version, create a CHANGELOG.md file and make a commit. +2) Check the CHANGELOG.md for wrong entries which may have been commited in the history - We are human after all! :) +3) Push the commit, create a PR and wait for the merge. + +### Deploying a release + +1) Execute `npm run tag-release` on the main branch after the above merge. +2) Push the tag via 'git push --follow-tags origin feature-x'. The command should be shown in the terminal after step 1. A push of a release tag with the correct format will automatically trigger an offical release GitHub workflow. +3) Check if the GitHub package was uploaded succesfully. \ No newline at end of file From d00dc8e79602bcbb0716804b0b9d7468dcccd022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 10 Nov 2023 13:05:08 +0100 Subject: [PATCH 11/16] docs: Add class diagram for vss-core --- docs/kuksa-vss-core_class-diagram.puml | 33 ++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docs/kuksa-vss-core_class-diagram.puml diff --git a/docs/kuksa-vss-core_class-diagram.puml b/docs/kuksa-vss-core_class-diagram.puml new file mode 100644 index 00000000..5683f953 --- /dev/null +++ b/docs/kuksa-vss-core_class-diagram.puml @@ -0,0 +1,33 @@ +@startuml +'https://plantuml.com/class-diagram + +!startsub VssCore +package VssCore { + VssNode <|- VssSpecification + VssSpecification <|- VssProperty + + annotation VssDefinition { + + vssDefinitionPath: String + } + + interface VssNode { + + children: Set + + parentClass: KClass<*> + } + + interface VssSpecification { + + uuid: String + + vssPath: String + + description: String + + type: String + + comment: String + } + + interface VssProperty { + + value: T + } +} + +!endsub + +@enduml From 43e25ba4d53d602e6152d79b2345df346a86648e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 10 Nov 2023 13:05:45 +0100 Subject: [PATCH 12/16] docs: Add class diagram for vss-processor --- CHANGELOG.md | 3 ++ docs/kuksa-sdk_class-diagram.puml | 32 ++++++++++++--- docs/kuksa-vss-processor_class-diagram.puml | 43 +++++++++++++++++++++ 3 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 docs/kuksa-vss-processor_class-diagram.puml diff --git a/CHANGELOG.md b/CHANGELOG.md index a62a35ac..e3b2057e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ All notable changes to this project will be documented in this file. See [commit ### Documentation * Adapt Architecture Documentation ([0fbb6ab](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/0fbb6ab2af1b08156860f7cdb74650db458d50ef)) +* Add class diagram for vss-core ([d00dc8e](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/d00dc8e79602bcbb0716804b0b9d7468dcccd022)) +* Add class diagram for vss-processor ([a22b083](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/a22b083f010899a63acb19e03bf04d30603c6590)) +* Add release HowTo docs ([b51059b](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/b51059bf0c5806e32ccd9ddcc1ea85cb7c91ef97)) * Improve documentation ([61b34cc](https://github.com/SoftwareDefinedVehicle/kuksa-sdk-android/commit/61b34cc903a9ecaff1c84b5451d14340ce2daaaa)) diff --git a/docs/kuksa-sdk_class-diagram.puml b/docs/kuksa-sdk_class-diagram.puml index 880fd618..6a015f62 100644 --- a/docs/kuksa-sdk_class-diagram.puml +++ b/docs/kuksa-sdk_class-diagram.puml @@ -23,15 +23,18 @@ package kuksa { DataBrokerConnector -down-> DataBrokerException DataBrokerConnector -down-> DataBrokerConnection + DataBrokerConnection -down-> DataBrokerTransporter + DataBrokerConnection -down-> DataBrokerSubscriber DataBrokerConnection -down-> PropertyListener DataBrokerConnection -down-> Property DataBrokerConnection -left-> DataBrokerException DataBrokerConnection -up-> MultiListener + DataBrokerSubscriber -up-> DataBrokerTransporter MultiListener -right-> DisconnectListener TimeoutConfig -left-* DataBrokerConnector class DataBrokerConnector { - + connect(ManagedChannel): DataBrokerConnection + + connect(): DataBrokerConnection } class TimeoutConfig { @@ -39,11 +42,30 @@ package kuksa { + timeUnit: TimeUnit } + class DataBrokerTransporter { + + fetch(vssPath: String, Collection): GetResponse + + update(vssPath: String, Collection, Types.Datapoint): KuksaValV1.SetResponse + } + + class DataBrokerSubscriber { + + subscribe(vssPath: String, Field, PropertyListener) + + subscribe(T, Field, VssSpecificationListener) + + unsubscribe(vssPath: String, Field, PropertyListener) + + unsubscribe(T, Field, VssSpecificationListener) + } + class DataBrokerConnection { + disconnectListeners: MultiListener - + subscribe(List, PropertyListener) - + fetchProperty(Property): GetResponse - + updateProperty(Property, Datapoint): SetResponse + + subscriptions: Collection + + + subscribe(Property, PropertyListener) + + subscribe(T, Collection, VssSpecificationListener) + + unsubscribe(Property, PropertyListener) + + unsubscribe(T, Collection, VssSpecificationListener) + + fetch(Property): GetResponse + + fetch(T, Collection) + + update(Property, Datapoint): SetResponse + + update(VssSpecification, Collection): SetResponse + disconnect() } @@ -54,7 +76,7 @@ package kuksa { class Property { + vssPath: String - + types: List + + fields: Collection } class DataBrokerException diff --git a/docs/kuksa-vss-processor_class-diagram.puml b/docs/kuksa-vss-processor_class-diagram.puml new file mode 100644 index 00000000..98845f48 --- /dev/null +++ b/docs/kuksa-vss-processor_class-diagram.puml @@ -0,0 +1,43 @@ +@startuml +'https://plantuml.com/class-diagram + +!includesub kuksa-vss-core_class-diagram.puml!VssCore + +package App { + MainActivity --o VssDefinition + + class MainActivity +} + +package VssProcessor { + + VssDefinitionProcessor -down-> VssDefinitionVisitor + VssDefinitionProcessor -down-> VssDefinitionParser + VssDefinitionProcessor -down-> SpecModel + VssDefinitionParser <|- YamlDefinitionParser + SpecModel <|- VssSpecificationSpecModel + VssSpecification <|- VssSpecificationSpecModel + + class VssDefinitionProcessor { + + VssDefinitionProcessor(CodeGenerator, KSPLogger) + } + + class VssDefinitionVisitor { + + visitClassDeclaration(KSClassDeclaration) + } + + interface VssDefinitionParser { + + parseSpecifications(File, elementDelimiter: String,): Collection + } + + class YamlDefinitionParser + + interface SpecModel> { + + createClassSpec(packageName: String, relatedSpecifications: Collection, nestedClasses: Collection): TypeSpec + } + + class VssSpecificationSpecModel { + } +} + +@enduml From bb63c133c4e1aa5e8b0e38cf4b864cdb6c23fc2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 10 Nov 2023 15:51:14 +0100 Subject: [PATCH 13/16] chore: Fix wrong version for release --- .../src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt index 73efc275..90a43989 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt @@ -51,11 +51,13 @@ class SemanticVersion(semanticVersion: String) { val versions = semanticVersion.trim() .substringBefore("-") // Ignore suffixes like -SNAPSHOT .split(".") - val suffix = semanticVersion.substringAfter("-") + val suffix = semanticVersion.substringAfter("-", "") major = versions[0].toInt() minor = versions[1].toInt() patch = versions[2].toInt() this.suffix = suffix + + print("New SemanticVersion($versionString)") } } From f8625394beaa1207d0738454a0bb91566c5156d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Fri, 10 Nov 2023 16:05:28 +0100 Subject: [PATCH 14/16] chore: Remove subscriptions property --- .github/workflows/deploy-release.yaml | 2 +- .github/workflows/deploy-snapshot.yaml | 2 +- .../eclipse/kuksa/{util => version}/SemanticVersion.kt | 2 +- buildSrc/src/main/kotlin/version.gradle.kts | 4 +++- docs/RELEASE.md | 10 +++++----- docs/kuksa-sdk_class-diagram.puml | 4 ++-- .../kotlin/org/eclipse/kuksa/DataBrokerConnection.kt | 6 ------ 7 files changed, 13 insertions(+), 17 deletions(-) rename buildSrc/src/main/kotlin/org/eclipse/kuksa/{util => version}/SemanticVersion.kt (98%) diff --git a/.github/workflows/deploy-release.yaml b/.github/workflows/deploy-release.yaml index 0322e530..d7e28a12 100644 --- a/.github/workflows/deploy-release.yaml +++ b/.github/workflows/deploy-release.yaml @@ -23,7 +23,7 @@ jobs: uses: gradle/gradle-build-action@v2 - name: Set Release Version - run: ./gradlew setReleaseVersion + run: ./gradlew setReleaseVersion # Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command - name: Publish Library run: ./gradlew publishReleasePublicationToGithubPackagesRepository diff --git a/.github/workflows/deploy-snapshot.yaml b/.github/workflows/deploy-snapshot.yaml index bb2aed42..cecb916d 100644 --- a/.github/workflows/deploy-snapshot.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -26,7 +26,7 @@ jobs: run: npm run bump-release # Updates the semantic version depending on the last commits e.g. feature / bugfix - name: Set Snapshot Version - run: ./gradlew setSnapshotVersion + run: ./gradlew setSnapshotVersion # Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command - name: Publish Library run: ./gradlew publishReleasePublicationToGithubPackagesRepository diff --git a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt similarity index 98% rename from buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt rename to buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt index 90a43989..7aa0b0a6 100644 --- a/buildSrc/src/main/kotlin/org/eclipse/kuksa/util/SemanticVersion.kt +++ b/buildSrc/src/main/kotlin/org/eclipse/kuksa/version/SemanticVersion.kt @@ -17,7 +17,7 @@ * */ -package org.eclipse.kuksa.util +package org.eclipse.kuksa.version import java.util.Locale diff --git a/buildSrc/src/main/kotlin/version.gradle.kts b/buildSrc/src/main/kotlin/version.gradle.kts index 8b984ebb..220fe66b 100644 --- a/buildSrc/src/main/kotlin/version.gradle.kts +++ b/buildSrc/src/main/kotlin/version.gradle.kts @@ -1,4 +1,4 @@ -import org.eclipse.kuksa.util.SemanticVersion +import org.eclipse.kuksa.version.SemanticVersion val file = File("$rootDir/version.txt") val fileContent = file.readText() @@ -6,6 +6,7 @@ val semanticVersion = SemanticVersion(fileContent) updateExtras() +// Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command tasks.register("setReleaseVersion") { group = "version" doLast { @@ -15,6 +16,7 @@ tasks.register("setReleaseVersion") { } } +// Do not chain this command because it writes into a file which needs to be re-read inside the next gradle command tasks.register("setSnapshotVersion") { group = "version" doLast { diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 78706e11..34fcde17 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,12 +1,12 @@ ## Releasing a version -Realsing a version is mostly automated. However since the CHANGELOG.md + version information are part of the git history and need to be commited, some manual steps are still needed. These steps are also there to check for errors which may have been made in the git history via the [Conventionalcommits standard](https://www.conventionalcommits.org/en/v1.0.0/) format. +Releasing a version is mostly automated. However since the CHANGELOG.md + version information are part of the git history and need to be committed, some manual steps are still needed. These steps are also there to check for errors which may have been made in the git history via the [Conventionalcommits standard](https://www.conventionalcommits.org/en/v1.0.0/) format. The NPM package [Commit-And-Tag](https://github.com/absolute-version/commit-and-tag-version) is used to streamline the release process. ### Preparing a release -The following convinience NPM scripts are avaialble for use here: +The following convenience NPM scripts are available for use here: ``` "scripts": { @@ -18,11 +18,11 @@ The following convinience NPM scripts are avaialble for use here: ``` 1) Execute `npm run commit-release` to prepare the release. This will automatically bump the version to the next correct semantic version, create a CHANGELOG.md file and make a commit. -2) Check the CHANGELOG.md for wrong entries which may have been commited in the history - We are human after all! :) +2) Check the CHANGELOG.md for wrong entries which may have been committed in the history - We are human after all! :) 3) Push the commit, create a PR and wait for the merge. ### Deploying a release 1) Execute `npm run tag-release` on the main branch after the above merge. -2) Push the tag via 'git push --follow-tags origin feature-x'. The command should be shown in the terminal after step 1. A push of a release tag with the correct format will automatically trigger an offical release GitHub workflow. -3) Check if the GitHub package was uploaded succesfully. \ No newline at end of file +2) Push the tag via 'git push --follow-tags origin feature-x'. The command should be shown in the terminal after step 1. A push of a release tag with the correct format will automatically trigger an official release GitHub workflow. +3) Check if the GitHub package was uploaded successfully. diff --git a/docs/kuksa-sdk_class-diagram.puml b/docs/kuksa-sdk_class-diagram.puml index 6a015f62..d0741b2a 100644 --- a/docs/kuksa-sdk_class-diagram.puml +++ b/docs/kuksa-sdk_class-diagram.puml @@ -44,7 +44,8 @@ package kuksa { class DataBrokerTransporter { + fetch(vssPath: String, Collection): GetResponse - + update(vssPath: String, Collection, Types.Datapoint): KuksaValV1.SetResponse + + update(vssPath: String, Collection, Types.Datapoint): SetResponse + + subscribe(vssPath: String, Field): Subscription } class DataBrokerSubscriber { @@ -56,7 +57,6 @@ package kuksa { class DataBrokerConnection { + disconnectListeners: MultiListener - + subscriptions: Collection + subscribe(Property, PropertyListener) + subscribe(T, Collection, VssSpecificationListener) diff --git a/kuksa-sdk/src/main/kotlin/org/eclipse/kuksa/DataBrokerConnection.kt b/kuksa-sdk/src/main/kotlin/org/eclipse/kuksa/DataBrokerConnection.kt index 6d143183..88354359 100644 --- a/kuksa-sdk/src/main/kotlin/org/eclipse/kuksa/DataBrokerConnection.kt +++ b/kuksa-sdk/src/main/kotlin/org/eclipse/kuksa/DataBrokerConnection.kt @@ -56,12 +56,6 @@ class DataBrokerConnection internal constructor( ) { val disconnectListeners = MultiListener() - @Suppress("unused") - val subscriptions: Set - get() = subscribedProperties.copy() - - private val subscribedProperties = mutableSetOf() - init { val state = managedChannel.getState(false) managedChannel.notifyWhenStateChanged(state) { From fd5132e742b5cfb5022ecdd5682398ddd39dee19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Mon, 13 Nov 2023 11:30:19 +0100 Subject: [PATCH 15/16] chore: Use .yaml file name for deploy workflows --- .github/workflows/deploy-release.yaml | 2 -- .github/workflows/deploy-snapshot.yaml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/deploy-release.yaml b/.github/workflows/deploy-release.yaml index d7e28a12..fb2f3743 100644 --- a/.github/workflows/deploy-release.yaml +++ b/.github/workflows/deploy-release.yaml @@ -1,5 +1,3 @@ -name: deployment - concurrency: production on: diff --git a/.github/workflows/deploy-snapshot.yaml b/.github/workflows/deploy-snapshot.yaml index cecb916d..3b0d22ff 100644 --- a/.github/workflows/deploy-snapshot.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -1,5 +1,3 @@ -name: deployment - concurrency: production on: From dc857a7a18c7417939172a32cf3e9de292966b7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=20Hu=CC=88sers?= Date: Mon, 13 Nov 2023 11:39:16 +0100 Subject: [PATCH 16/16] chore: Add workflow name explicitly The fallback is the file path and not just the name. --- .github/workflows/deploy-release.yaml | 2 ++ .github/workflows/deploy-snapshot.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/deploy-release.yaml b/.github/workflows/deploy-release.yaml index fb2f3743..eb8f12ca 100644 --- a/.github/workflows/deploy-release.yaml +++ b/.github/workflows/deploy-release.yaml @@ -1,3 +1,5 @@ +name: deploy-release + concurrency: production on: diff --git a/.github/workflows/deploy-snapshot.yaml b/.github/workflows/deploy-snapshot.yaml index 3b0d22ff..3cf474bf 100644 --- a/.github/workflows/deploy-snapshot.yaml +++ b/.github/workflows/deploy-snapshot.yaml @@ -1,3 +1,5 @@ +name: deploy-snapshot + concurrency: production on: