From cbc930493231c4d25418bd88ef41c734e6d2e34e Mon Sep 17 00:00:00 2001
From: stevensJourney <steven@journeyapps.com>
Date: Tue, 5 Nov 2024 10:40:54 +0200
Subject: [PATCH] chore: add melos version commit prompt

---
 demos/django-todolist/pubspec.lock            |  2 +-
 demos/supabase-anonymous-auth/pubspec.lock    |  2 +-
 .../supabase-edge-function-auth/pubspec.lock  |  2 +-
 demos/supabase-simple-chat/pubspec.lock       |  2 +-
 demos/supabase-todolist-drift/pubspec.lock    |  4 +-
 .../pubspec.lock                              |  2 +-
 demos/supabase-todolist/pubspec.lock          |  4 +-
 pubspec.lock                                  | 44 ++++++++++++++++++-
 pubspec.yaml                                  |  3 +-
 tool/update_version.dart                      | 18 ++++++++
 10 files changed, 71 insertions(+), 12 deletions(-)

diff --git a/demos/django-todolist/pubspec.lock b/demos/django-todolist/pubspec.lock
index 0b94745e..f90a0438 100644
--- a/demos/django-todolist/pubspec.lock
+++ b/demos/django-todolist/pubspec.lock
@@ -318,7 +318,7 @@ packages:
       path: "../../packages/powersync"
       relative: true
     source: path
-    version: "1.9.0"
+    version: "1.9.1"
   powersync_flutter_libs:
     dependency: "direct overridden"
     description:
diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock
index 4272f3f3..b3847504 100644
--- a/demos/supabase-anonymous-auth/pubspec.lock
+++ b/demos/supabase-anonymous-auth/pubspec.lock
@@ -374,7 +374,7 @@ packages:
       path: "../../packages/powersync"
       relative: true
     source: path
-    version: "1.9.0"
+    version: "1.9.1"
   powersync_flutter_libs:
     dependency: "direct overridden"
     description:
diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock
index 4c5f4742..c36ae016 100644
--- a/demos/supabase-edge-function-auth/pubspec.lock
+++ b/demos/supabase-edge-function-auth/pubspec.lock
@@ -398,7 +398,7 @@ packages:
       path: "../../packages/powersync"
       relative: true
     source: path
-    version: "1.9.0"
+    version: "1.9.1"
   powersync_flutter_libs:
     dependency: "direct overridden"
     description:
diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock
index d1970795..56b162ee 100644
--- a/demos/supabase-simple-chat/pubspec.lock
+++ b/demos/supabase-simple-chat/pubspec.lock
@@ -414,7 +414,7 @@ packages:
       path: "../../packages/powersync"
       relative: true
     source: path
-    version: "1.9.0"
+    version: "1.9.1"
   powersync_flutter_libs:
     dependency: "direct overridden"
     description:
diff --git a/demos/supabase-todolist-drift/pubspec.lock b/demos/supabase-todolist-drift/pubspec.lock
index 79c1df3d..8a9a87b7 100644
--- a/demos/supabase-todolist-drift/pubspec.lock
+++ b/demos/supabase-todolist-drift/pubspec.lock
@@ -686,14 +686,14 @@ packages:
       path: "../../packages/powersync"
       relative: true
     source: path
-    version: "1.9.0"
+    version: "1.9.1"
   powersync_attachments_helper:
     dependency: "direct main"
     description:
       path: "../../packages/powersync_attachments_helper"
       relative: true
     source: path
-    version: "0.6.14"
+    version: "0.6.15"
   powersync_flutter_libs:
     dependency: "direct overridden"
     description:
diff --git a/demos/supabase-todolist-optional-sync/pubspec.lock b/demos/supabase-todolist-optional-sync/pubspec.lock
index c45bc8f7..204ad5e8 100644
--- a/demos/supabase-todolist-optional-sync/pubspec.lock
+++ b/demos/supabase-todolist-optional-sync/pubspec.lock
@@ -478,7 +478,7 @@ packages:
       path: "../../packages/powersync"
       relative: true
     source: path
-    version: "1.9.0"
+    version: "1.9.1"
   powersync_flutter_libs:
     dependency: "direct overridden"
     description:
diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock
index c873ed38..37e76f43 100644
--- a/demos/supabase-todolist/pubspec.lock
+++ b/demos/supabase-todolist/pubspec.lock
@@ -478,14 +478,14 @@ packages:
       path: "../../packages/powersync"
       relative: true
     source: path
-    version: "1.9.0"
+    version: "1.9.1"
   powersync_attachments_helper:
     dependency: "direct main"
     description:
       path: "../../packages/powersync_attachments_helper"
       relative: true
     source: path
-    version: "0.6.14"
+    version: "0.6.15"
   powersync_flutter_libs:
     dependency: "direct overridden"
     description:
diff --git a/pubspec.lock b/pubspec.lock
index 730df670..48b7a4fa 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -121,6 +121,22 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "3.0.3"
+  dart_console:
+    dependency: transitive
+    description:
+      name: dart_console
+      sha256: eba6af9ef2172df11ce49053d16b868de82684bc02123baf21bd8c9b1850a106
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.0"
+  ffi:
+    dependency: transitive
+    description:
+      name: ffi
+      sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.1"
   file:
     dependency: transitive
     description:
@@ -177,6 +193,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "4.0.2"
+  interact:
+    dependency: "direct dev"
+    description:
+      name: interact
+      sha256: "7806d79caab486f18eeae4411e1080fea6ab511243308d5059fcee115ceab5d2"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.1"
   intl:
     dependency: transitive
     description:
@@ -237,10 +261,10 @@ packages:
     dependency: "direct dev"
     description:
       name: melos
-      sha256: a3f06ed871e0348cb99909ad5ddf5f8b53cc61d894c302b5417d2db1ee7ec381
+      sha256: a62abfa8c7826cec927f8585572bb9adf591be152150494d879ca2c75118809d
       url: "https://pub.dev"
     source: hosted
-    version: "6.1.0"
+    version: "6.2.0"
   meta:
     dependency: transitive
     description:
@@ -465,6 +489,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "0.6.0"
+  tint:
+    dependency: transitive
+    description:
+      name: tint
+      sha256: "9652d9a589f4536d5e392cf790263d120474f15da3cf1bee7f1fdb31b4de5f46"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.0.1"
   typed_data:
     dependency: transitive
     description:
@@ -521,6 +553,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.2.1"
+  win32:
+    dependency: transitive
+    description:
+      name: win32
+      sha256: c0e3a4f7be7dae51d8f152230b86627e3397c1ba8c3fa58e63d44a9f3edc9cef
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.6.1"
   yaml:
     dependency: "direct dev"
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 10fdfd82..f11fb244 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -9,7 +9,8 @@ environment:
 
 dev_dependencies:
   lints: ^2.1.1
-  melos: ^6.1.0
+  melos: ^6.2.0
   test: ^1.25.0
   path: ^1.0.0
   yaml: ^3.1.2
+  interact: ^2.1.1
diff --git a/tool/update_version.dart b/tool/update_version.dart
index 7d7e8ee7..c228d5ef 100644
--- a/tool/update_version.dart
+++ b/tool/update_version.dart
@@ -1,4 +1,6 @@
 import 'dart:io';
+
+import 'package:interact/interact.dart';
 import 'package:yaml/yaml.dart';
 
 void main() {
@@ -9,4 +11,20 @@ void main() {
 
   final versionFile = File('packages/powersync/lib/src/version.dart');
   versionFile.writeAsStringSync("const String libraryVersion = '$version';\n");
+
+  // Melos works best when conventional commits are used.
+  // We don't strictly follow this pattern which produces unexpected
+  // Changelogs that sometimes require manual editing.
+  // This script runs before Melos commits the changes.
+  // We can allow a user to edit these Changelogs before commit.
+  bool confirmed = Confirm(
+          prompt:
+              'Melos changelogs should be staged for commit. These changes will be committed and tagged. Feel free to edit them before proceeding. Would you like to proceed now?',
+          defaultValue: true)
+      .interact();
+
+  if (confirmed == false) {
+    // Exit with a non-zero code. This will stop the `melos version` process.
+    exit(1);
+  }
 }