Compare commits

...

6 Commits

Author SHA1 Message Date
81bc8f2ccf Bump version to 0.7.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-10-04 09:21:18 -07:00
722cf88150 Add isort to project dev dependencies
All checks were successful
continuous-integration/drone/push Build is passing
2024-10-04 09:18:45 -07:00
bc5eaf2ae7 Fix incorrect help kwarg 2024-10-04 09:18:29 -07:00
03c40528d4 Add freeze flag to list command to regenerate unhacs.yaml file
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2024-10-03 15:47:21 -07:00
56565fdbd5 Add make targets for version bumping
All checks were successful
continuous-integration/drone/push Build is passing
2024-09-18 11:46:19 -07:00
4ee85b876c Bump version v0.7.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-09-18 11:37:33 -07:00
4 changed files with 61 additions and 5 deletions

View File

@ -37,6 +37,27 @@ verify-tag-version:
$(eval TAG_NAME = $(shell [ -n "$(DRONE_TAG)" ] && echo $(DRONE_TAG) || git describe --tags --exact-match))
test "v$(shell poetry version | awk '{print $$2}')" = "$(TAG_NAME)"
.PHONY: bump-patch
bump-patch:
$(eval NEW_VERSION = $(shell poetry version patch | awk '{print $$6}'))
git add pyproject.toml
git commit -m "Bump version to $(NEW_VERSION)"
git tag "v$(NEW_VERSION)"
.PHONY: bump-minor
bump-minor:
$(eval NEW_VERSION = $(shell poetry version minor | awk '{print $$6}'))
git add pyproject.toml
git commit -m "Bump version to $(NEW_VERSION)"
git tag "v$(NEW_VERSION)"
.PHONY: bump-major
bump-major:
$(eval NEW_VERSION = $(shell poetry version major | awk '{print $$6}'))
git add pyproject.toml
git commit -m "Bump version to $(NEW_VERSION)"
git tag "v$(NEW_VERSION)"
# Upload to pypi
.PHONY: upload
upload: verify-tag-version build

View File

@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
[tool.poetry]
name = "unhacs"
version = "0.6.2"
version = "0.7.1"
description = "Command line interface to install Home Assistant Community Store packages"
authors = ["Ian Fijolek <ian@iamthefij.com>"]
license = "MIT"
@ -17,6 +17,7 @@ pyyaml = "^6.0.0"
[tool.poetry.group.dev.dependencies]
black = "^24.4.2"
isort = "^5.13.2"
mypy = "^1.10.0"
pre-commit = "^3.7.1"
types-requests = "^2.32.0"

View File

@ -6,6 +6,7 @@ from pathlib import Path
from unhacs.main import main
from unhacs.packages import get_installed_packages
from unhacs.packages import read_lock_packages
INTEGRATION_URL = "https://github.com/simbaja/ha_gehome"
INTEGRATION_VERSION = "v0.6.9"
@ -124,6 +125,30 @@ class TestMainIntegrarion(unittest.TestCase):
self.assertEqual(installed[0].url, INTEGRATION_URL)
self.assertEqual(installed[0].version, INTEGRATION_VERSION)
# Delete the custom_components folder and re-install the integration using the lock file
shutil.rmtree(os.path.join(self.test_dir, "custom_components"))
self.run_itest(
"Re-install integration using lock file",
"add --file unhacs.yaml",
expected_files=[
"custom_components/ge_home/__init__.py",
"custom_components/ge_home/manifest.json",
"custom_components/ge_home/switch.py",
],
)
# Delete the lock file and then regenerate it
os.remove(os.path.join(self.test_dir, "unhacs.yaml"))
self.run_itest(
"Regenerate lock file",
"list --freeze",
expected_files=[
"unhacs.yaml",
],
)
self.assertGreater(len(read_lock_packages()), 0)
self.run_itest(
"Remove integration",
"remove ha_gehome --yes",

View File

@ -5,7 +5,6 @@ from pathlib import Path
from unhacs.git import get_repo_tags
from unhacs.packages import Package
from unhacs.packages import PackageType
from unhacs.packages import get_installed_packages
from unhacs.packages import read_lock_packages
from unhacs.packages import write_lock_packages
@ -55,6 +54,12 @@ def parse_args(argv: list[str]):
# List installed packages
list_parser = subparsers.add_parser("list", description="List installed packages.")
list_parser.add_argument("--verbose", "-v", action="store_true")
list_parser.add_argument(
"--freeze",
"-f",
action="store_true",
help="Regenerate unhacs.yaml with installed packages.",
)
# List git tags for a given package
list_tags_parser = subparsers.add_parser("tags", help="List tags for a package.")
@ -233,11 +238,15 @@ class Unhacs:
self.write_lock_packages(packages)
def list_packages(self, verbose: bool = False):
def list_packages(self, verbose: bool = False, freeze: bool = False):
"""List installed packages and their versions."""
for package in get_installed_packages():
installed_packages = get_installed_packages()
for package in installed_packages:
print(package.verbose_str() if verbose else str(package))
if freeze:
self.write_lock_packages(installed_packages)
def list_tags(self, url: str, limit: int = 10):
print(f"Tags for {url}:")
for tag in get_repo_tags(url)[-1 * limit :]:
@ -343,7 +352,7 @@ def main(argv: list[str] | None = None) -> int:
print("Either a file or a URL must be provided")
return 1
elif args.subcommand == "list":
unhacs.list_packages(args.verbose)
unhacs.list_packages(args.verbose, args.freeze)
elif args.subcommand == "tags":
unhacs.list_tags(args.url, limit=args.limit)
elif args.subcommand == "remove":