diff --git a/CHANGES b/CHANGES index 73d4a6d3..479ac61d 100644 --- a/CHANGES +++ b/CHANGES @@ -15,12 +15,23 @@ $ pipx install --suffix=@next 'vcspull' --pip-args '\--pre' --force // Usage: vcspull@next sync [config] ``` -## vcspull v1.16.x (unreleased) +## vcspull v1.17.x (unreleased) -- Notes on upcoming releases will be added here +- _Notes on upcoming releases will be added here_ +## vcspull v1.16.0 (2022-10-23) + +**Maintenance release, no features or fixes** + +### Internal + +- `sync()`: Rename `repo_terms` to `repo_patterns` (#406) +- Bump libvcs 0.17.0 to 0.18.1 + + - 0.18.0 includes support for URL Matcher weights + ## vcspull v1.15.8 (2022-10-16) ### CLI diff --git a/poetry.lock b/poetry.lock index fa9faaa5..d98b5359 100644 --- a/poetry.lock +++ b/poetry.lock @@ -275,14 +275,14 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "libvcs" -version = "0.17.0" +version = "0.18.1" description = "Lite, typed, python utilities for Git, SVN, Mercurial, etc." category = "main" optional = false python-versions = ">=3.9,<4.0" [package.dependencies] -typing-extensions = {version = ">=4.1.1,<5.0.0", markers = "python_version == \"3.10\""} +typing-extensions = {version = "*", markers = "python_version == \"3.10\""} [[package]] name = "livereload" @@ -544,7 +544,7 @@ setuptools = ">=40.0" [[package]] name = "pytest-watcher" -version = "0.2.3" +version = "0.2.4" description = "Continiously runs pytest on changes in *.py files" category = "dev" optional = false @@ -555,7 +555,7 @@ watchdog = ">=2.0.0" [[package]] name = "pytz" -version = "2022.4" +version = "2022.5" description = "World timezone definitions, modern and historical" category = "dev" optional = false @@ -944,7 +944,7 @@ test = [] [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "78ed850b17d706a251545aa1f7cb8aa35fadee57b09e7cd7858a5f4032c7ee21" +content-hash = "5968e4ca0807027f438751d44bb8fd0a3980e12199553396bef73340c2fa34ac" [metadata.files] alabaster = [ @@ -1107,8 +1107,8 @@ Jinja2 = [ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] libvcs = [ - {file = "libvcs-0.17.0-py3-none-any.whl", hash = "sha256:c06ddfcd90d6b3ce80557bbaf91ee943dfbab51e00829be828c145032b78cac0"}, - {file = "libvcs-0.17.0.tar.gz", hash = "sha256:f3ca617a688287d623a803da4e3e2fac4a4382aa7f62d3d246a669de14065660"}, + {file = "libvcs-0.18.1-py3-none-any.whl", hash = "sha256:bf1e8f6e4c0d66ccd20bce5fc2f044db9520dc32aea25df3f68becabc0513577"}, + {file = "libvcs-0.18.1.tar.gz", hash = "sha256:84302304df69356678408c148dd1dda3f752cebc09a21fe4f47a59d9a3c7ae46"}, ] livereload = [ {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"}, @@ -1254,12 +1254,12 @@ pytest-rerunfailures = [ {file = "pytest_rerunfailures-10.2-py3-none-any.whl", hash = "sha256:d31d8e828dfd39363ad99cd390187bf506c7a433a89f15c3126c7d16ab723fe2"}, ] pytest-watcher = [ - {file = "pytest-watcher-0.2.3.tar.gz", hash = "sha256:1937dd97e72caafd371d8cea7b3d70c88ff4fe35e6cdecb29c41bbdcbf1dcc2b"}, - {file = "pytest_watcher-0.2.3-py3-none-any.whl", hash = "sha256:af935963399509a5b0e855740ba7227852f1a7fccfbb1cbb79fa19a445af02d2"}, + {file = "pytest-watcher-0.2.4.tar.gz", hash = "sha256:f393ec46da9099083445203924d77f507b81e5222b09c949583488057bd13091"}, + {file = "pytest_watcher-0.2.4-py3-none-any.whl", hash = "sha256:fc600a34d7ed126f2b5a884b90cafeda7a443757a082ec17273a96cb10a68025"}, ] pytz = [ - {file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"}, - {file = "pytz-2022.4.tar.gz", hash = "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174"}, + {file = "pytz-2022.5-py2.py3-none-any.whl", hash = "sha256:335ab46900b1465e714b4fda4963d87363264eb662aab5e65da039c25f1f5b22"}, + {file = "pytz-2022.5.tar.gz", hash = "sha256:c4d88f472f54d615e9cd582a5004d1e5f624854a6a27a6211591c251f22a6914"}, ] PyYAML = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, diff --git a/pyproject.toml b/pyproject.toml index be74dcc2..d1789fa4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "vcspull" -version = "1.15.8" +version = "1.16.0" description = "Manage and sync multiple git, mercurial, and svn repos" license = "MIT" authors = ["Tony Narlock "] @@ -59,7 +59,7 @@ vcspull = 'vcspull:cli.cli' [tool.poetry.dependencies] python = "^3.9" -libvcs = "~0.17.0" +libvcs = "~0.18.1" colorama = ">=0.3.9" PyYAML = "^6.0" diff --git a/src/vcspull/__about__.py b/src/vcspull/__about__.py index 8f367d8d..562fd6ea 100644 --- a/src/vcspull/__about__.py +++ b/src/vcspull/__about__.py @@ -1,7 +1,7 @@ __title__ = "vcspull" __package_name__ = "vcspull" __description__ = "Manage and sync multiple git, mercurial, and svn repos" -__version__ = "1.15.8" +__version__ = "1.16.0" __author__ = "Tony Narlock" __github__ = "https://github.com/vcs-python/vcspull" __docs__ = "https://vcspull.git-pull.com" diff --git a/src/vcspull/cli/__init__.py b/src/vcspull/cli/__init__.py index 9939ca8a..42f526f5 100644 --- a/src/vcspull/cli/__init__.py +++ b/src/vcspull/cli/__init__.py @@ -75,7 +75,7 @@ def cli(args=None): return elif args.subparser_name == "sync": sync( - repo_terms=args.repo_terms, + repo_patterns=args.repo_patterns, config=args.config, exit_on_error=args.exit_on_error, parser=sync_parser, diff --git a/src/vcspull/cli/sync.py b/src/vcspull/cli/sync.py index a3a2e704..0f9d8966 100644 --- a/src/vcspull/cli/sync.py +++ b/src/vcspull/cli/sync.py @@ -28,7 +28,7 @@ def create_sync_subparser(parser: argparse.ArgumentParser) -> argparse.ArgumentP help="optional filepath to specify vcspull config", ) parser.add_argument( - "repo_terms", + "repo_patterns", metavar="filter", nargs="*", help="patterns / terms of repos, accepts globs / fnmatch(3)", @@ -51,14 +51,14 @@ def create_sync_subparser(parser: argparse.ArgumentParser) -> argparse.ArgumentP def sync( - repo_terms, + repo_patterns, config, exit_on_error: bool, parser: t.Optional[ argparse.ArgumentParser ] = None, # optional so sync can be unit tested ) -> None: - if isinstance(repo_terms, list) and len(repo_terms) == 0: + if isinstance(repo_patterns, list) and len(repo_patterns) == 0: if parser is not None: parser.print_help() sys.exit(2) @@ -69,14 +69,14 @@ def sync( configs = load_configs(find_config_files(include_home=True)) found_repos = [] - for repo_term in repo_terms: + for repo_pattern in repo_patterns: dir, vcs_url, name = None, None, None - if any(repo_term.startswith(n) for n in ["./", "/", "~", "$HOME"]): - dir = repo_term - elif any(repo_term.startswith(n) for n in ["http", "git", "svn", "hg"]): - vcs_url = repo_term + if any(repo_pattern.startswith(n) for n in ["./", "/", "~", "$HOME"]): + dir = repo_pattern + elif any(repo_pattern.startswith(n) for n in ["http", "git", "svn", "hg"]): + vcs_url = repo_pattern else: - name = repo_term + name = repo_pattern # collect the repos from the config files found = filter_repos(configs, dir=dir, vcs_url=vcs_url, name=name)