improve support for '-dev' and '-wip' package versions (#173)

* improve support for '-dev' and '-wip' package versions

* update the workflow files

* try out a -dev version

* rev to a stable version
diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
index e27ead4..f5a7931 100644
--- a/.github/workflows/publish.yaml
+++ b/.github/workflows/publish.yaml
@@ -10,7 +10,7 @@
 #     branches: [ main ]
 #     types: [opened, synchronize, reopened, labeled, unlabeled]
 #   push:
-#     tags: [ 'v[0-9]+.[0-9]+.[0-9]+' ]
+#     tags: [ 'v[0-9]+.[0-9]+.[0-9]+*' ]
 # jobs:
 #   publish:
 #     uses: dart-lang/ecosystem/.github/workflows/publish.yml@main
diff --git a/.github/workflows/publish_internal.yaml b/.github/workflows/publish_internal.yaml
index 341cbf6..e0c8148 100644
--- a/.github/workflows/publish_internal.yaml
+++ b/.github/workflows/publish_internal.yaml
@@ -10,7 +10,7 @@
     branches: [ main ]
     types: [opened, synchronize, reopened, labeled, unlabeled]
   push:
-    tags: [ '[A-z]+-v[0-9]+.[0-9]+.[0-9]+' ]
+    tags: [ '[A-z]+-v[0-9]+.[0-9]+.[0-9]+*' ]
 
 env:
   use-flutter: false
diff --git a/pkgs/firehose/CHANGELOG.md b/pkgs/firehose/CHANGELOG.md
index 2b2ccb4..f3d87b9 100644
--- a/pkgs/firehose/CHANGELOG.md
+++ b/pkgs/firehose/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.30
+
+- Improve support for `-dev` and `-wip` package versions.
+
 ## 0.3.29
 
 - Fix an issue rendering longer changelogs (#170).
diff --git a/pkgs/firehose/lib/firehose.dart b/pkgs/firehose/lib/firehose.dart
index 4091a64..c6dfb44 100644
--- a/pkgs/firehose/lib/firehose.dart
+++ b/pkgs/firehose/lib/firehose.dart
@@ -138,11 +138,8 @@
         var result = Result.info(package, 'already published at pub.dev');
         print(result);
         results.addResult(result);
-      } else if (package.pubspec.version!.isPreRelease) {
-        var result = Result.info(
-          package,
-          'pre-release version (no publish necessary)',
-        );
+      } else if (package.pubspec.version!.wip) {
+        var result = Result.info(package, 'WIP (no publish necessary)');
         print(result);
         results.addResult(result);
       } else {
diff --git a/pkgs/firehose/lib/src/pub.dart b/pkgs/firehose/lib/src/pub.dart
index 1c319f5..9b875df 100644
--- a/pkgs/firehose/lib/src/pub.dart
+++ b/pkgs/firehose/lib/src/pub.dart
@@ -5,6 +5,7 @@
 import 'dart:convert';
 
 import 'package:http/http.dart' as http;
+import 'package:pub_semver/pub_semver.dart';
 
 class Pub {
   http.Client? _httpClient;
@@ -29,3 +30,9 @@
     _httpClient?.close();
   }
 }
+
+extension VersionExtension on Version {
+  bool get wip {
+    return isPreRelease && preRelease.length == 1 && preRelease.first == 'wip';
+  }
+}
diff --git a/pkgs/firehose/pubspec.yaml b/pkgs/firehose/pubspec.yaml
index 1150a37..3f16ad1 100644
--- a/pkgs/firehose/pubspec.yaml
+++ b/pkgs/firehose/pubspec.yaml
@@ -1,6 +1,6 @@
 name: firehose
 description: A tool to automate publishing of Pub packages from GitHub actions.
-version: 0.3.29
+version: 0.3.30
 repository: https://github.com/dart-lang/ecosystem/tree/main/pkgs/firehose
 
 environment:
diff --git a/pkgs/firehose/test/pub_test.dart b/pkgs/firehose/test/pub_test.dart
index f99a3fd..f574ca0 100644
--- a/pkgs/firehose/test/pub_test.dart
+++ b/pkgs/firehose/test/pub_test.dart
@@ -5,6 +5,7 @@
 library;
 
 import 'package:firehose/src/pub.dart';
+import 'package:pub_semver/pub_semver.dart';
 import 'package:test/test.dart';
 
 void main() {
@@ -35,4 +36,21 @@
       expect(result, false);
     });
   });
+
+  group('VersionExtension', () {
+    test('wip no pre-release', () async {
+      final version = Version.parse('1.2.3');
+      expect(version.wip, false);
+    });
+
+    test('wip pre-release', () async {
+      final version = Version.parse('1.2.3-dev');
+      expect(version.wip, false);
+    });
+
+    test('wip pre-release wip', () async {
+      final version = Version.parse('1.2.3-wip');
+      expect(version.wip, true);
+    });
+  });
 }