minitest-cli 0.4.2__tar.gz → 0.4.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/PKG-INFO +1 -1
  2. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/pyproject.toml +1 -1
  3. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/build.py +1 -1
  4. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/utils/update_check.py +33 -2
  5. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/uv.lock +1 -1
  6. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.env.example +0 -0
  7. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.github/workflows/ci.yml +0 -0
  8. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.github/workflows/release.yml +0 -0
  9. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.gitignore +0 -0
  10. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/.opencode/skill/release/SKILL.md +0 -0
  11. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/AGENTS.md +0 -0
  12. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/README.md +0 -0
  13. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/RELEASE.md +0 -0
  14. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/pyrightconfig.json +0 -0
  15. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/__init__.py +0 -0
  16. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/api/__init__.py +0 -0
  17. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/api/client.py +0 -0
  18. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/assets/__init__.py +0 -0
  19. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/assets/callback.html +0 -0
  20. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/__init__.py +0 -0
  21. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/apps.py +0 -0
  22. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/auth.py +0 -0
  23. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/build_helpers.py +0 -0
  24. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/flow.py +0 -0
  25. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/flow_helpers.py +0 -0
  26. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/flow_modify.py +0 -0
  27. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/run.py +0 -0
  28. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/run_display.py +0 -0
  29. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/run_helpers.py +0 -0
  30. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/commands/skill.py +0 -0
  31. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/__init__.py +0 -0
  32. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/app_context.py +0 -0
  33. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/auth.py +0 -0
  34. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/config.py +0 -0
  35. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/credentials.py +0 -0
  36. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/oauth.py +0 -0
  37. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/core/token_exchange.py +0 -0
  38. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/main.py +0 -0
  39. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/__init__.py +0 -0
  40. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/app.py +0 -0
  41. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/base.py +0 -0
  42. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/build.py +0 -0
  43. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/flow_run.py +0 -0
  44. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/models/flow_template.py +0 -0
  45. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/utils/__init__.py +0 -0
  46. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/src/minitest_cli/utils/output.py +0 -0
  47. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/__init__.py +0 -0
  48. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_apps_commands.py +0 -0
  49. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_auth.py +0 -0
  50. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_auth_commands.py +0 -0
  51. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_build_commands.py +0 -0
  52. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_code_quality.py +0 -0
  53. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_flow_commands.py +0 -0
  54. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_run_commands.py +0 -0
  55. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_skill_command.py +0 -0
  56. {minitest_cli-0.4.2 → minitest_cli-0.4.4}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minitest-cli
3
- Version: 0.4.2
3
+ Version: 0.4.4
4
4
  Summary: Minitest CLI – command-line interface for the Minitest testing platform
5
5
  Project-URL: Homepage, https://minitap.ai/
6
6
  Project-URL: Source, https://github.com/minitap-ai/minitest-cli
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "minitest-cli"
3
- version = "0.4.2"
3
+ version = "0.4.4"
4
4
  description = "Minitest CLI – command-line interface for the Minitest testing platform"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -45,7 +45,7 @@ def upload(
45
45
  typer.Option(help="Target platform. Auto-detected from file extension."),
46
46
  ] = None,
47
47
  ) -> None:
48
- """Upload a new build."""
48
+ """Upload a build file (.apk for Android, .ipa for iOS)."""
49
49
  settings, app_id, json_mode = resolve_app()
50
50
  resolved_platform = platform.value if platform else detect_platform(file)
51
51
 
@@ -1,6 +1,8 @@
1
1
  """PyPI version check – cached for 24 hours, non-blocking, max 2s timeout."""
2
2
 
3
3
  import json
4
+ import shutil
5
+ import sys
4
6
  import time
5
7
  from pathlib import Path
6
8
 
@@ -45,6 +47,34 @@ def _write_cache(settings: Settings, latest_version: str) -> None:
45
47
  pass
46
48
 
47
49
 
50
+ def _is_brew_install() -> bool:
51
+ """Detect if the running minitest binary was installed via Homebrew."""
52
+ exe = shutil.which("minitest")
53
+ if exe is None:
54
+ exe = sys.executable
55
+ return "/Cellar/" in exe or "/homebrew/" in exe.lower()
56
+
57
+
58
+ def _version_tuple(v: str) -> tuple[int, ...]:
59
+ """Parse a version string like '0.4.3' into a comparable tuple (0, 4, 3)."""
60
+ try:
61
+ return tuple(int(x) for x in v.split("."))
62
+ except (ValueError, AttributeError):
63
+ return (0,)
64
+
65
+
66
+ def _is_newer(latest: str, current: str) -> bool:
67
+ """Return True if latest is strictly newer than current."""
68
+ return _version_tuple(latest) > _version_tuple(current)
69
+
70
+
71
+ def _upgrade_command() -> str:
72
+ """Return the appropriate upgrade command based on install method."""
73
+ if _is_brew_install():
74
+ return "brew upgrade minitest-cli"
75
+ return "pip install --upgrade minitest-cli"
76
+
77
+
48
78
  def check_for_updates(settings: Settings) -> None:
49
79
  """Check PyPI for a newer version and warn on stderr if available.
50
80
 
@@ -60,11 +90,12 @@ def check_for_updates(settings: Settings) -> None:
60
90
  latest = response.json()["info"]["version"]
61
91
  _write_cache(settings, latest)
62
92
 
63
- if latest != __version__:
93
+ if _is_newer(latest, __version__):
94
+ upgrade_cmd = _upgrade_command()
64
95
  print_warning(
65
96
  f"A new version of minitest-cli is available: {latest} "
66
97
  f"(current: {__version__}). "
67
- f"Update with: pip install --upgrade minitest-cli"
98
+ f"Update with: {upgrade_cmd}"
68
99
  )
69
100
  except Exception: # noqa: BLE001
70
101
  # Never block or crash the CLI for an update check failure
@@ -141,7 +141,7 @@ wheels = [
141
141
 
142
142
  [[package]]
143
143
  name = "minitest-cli"
144
- version = "0.4.2"
144
+ version = "0.4.3"
145
145
  source = { editable = "." }
146
146
  dependencies = [
147
147
  { name = "httpx" },
File without changes
File without changes
File without changes
File without changes
File without changes