From 14cffccd2db7ef3e7f294bdc22de846b91702085 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Fri, 13 Oct 2017 14:54:45 -0700 Subject: [PATCH 1/4] Follow symlinks when finding unmanaged repos --- src/wstool/multiproject_cmd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wstool/multiproject_cmd.py b/src/wstool/multiproject_cmd.py index 5204204..dea7405 100644 --- a/src/wstool/multiproject_cmd.py +++ b/src/wstool/multiproject_cmd.py @@ -579,7 +579,7 @@ def do_work(self): managed_paths = [os.path.join(path, e.get_local_name()) for e in elements] unmanaged_paths = [] scm_clients = {SvnClient: 'svn', GitClient: 'git', BzrClient:'bzr', HgClient:'hg'} - for root, dirs, files in os.walk(path): + for root, dirs, files in os.walk(path, followlinks=True): if root in managed_paths: # remove it from the walk if it's managed del dirs[:] From b693ef763ea10638ec7eec43771d37dd176363c9 Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Thu, 9 May 2019 15:29:26 +0200 Subject: [PATCH 2/4] add option --versioned to scrape verb ... to allow storing the current version label of unmanaged repos --- src/wstool/cli_common.py | 2 +- src/wstool/multiproject_cli.py | 8 +++++++- src/wstool/multiproject_cmd.py | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/wstool/cli_common.py b/src/wstool/cli_common.py index 117eda6..574745e 100644 --- a/src/wstool/cli_common.py +++ b/src/wstool/cli_common.py @@ -297,7 +297,7 @@ def get_info_table(basepath, entries, data_only=False, reverse=False, ]) # table design if unmanaged: - selected_headers = ['localname', 'scm', 'uri'] + selected_headers = ['localname', 'scm', 'uri', 'version'] elif selected_headers is None: selected_headers = headers.keys() # validate selected_headers diff --git a/src/wstool/multiproject_cli.py b/src/wstool/multiproject_cli.py index 3c652d0..dcc72c9 100644 --- a/src/wstool/multiproject_cli.py +++ b/src/wstool/multiproject_cli.py @@ -1327,9 +1327,12 @@ def cmd_scrape(self, target_path, argv, config=None): usage=usage, description=__MULTIPRO_CMD_DICT__["scrape"], epilog="See: http://www.ros.org/wiki/rosinstall for details\n") - parser.add_option("-y", "--confirm", dest="confirm", default='', + parser.add_option("-y", "--confirm", dest="confirm", default=False, help="Do not ask for confirmation", action="store_true") + parser.add_option("-v", "--versioned", dest="versioned", default=False, + help="Remember current version label", + action="store_true") # -t option required here for help but used one layer above, see cli_common parser.add_option( "-t", "--target-workspace", dest="workspace", default=None, @@ -1357,5 +1360,8 @@ def cmd_scrape(self, target_path, argv, config=None): args = [elem_abs_path, elem['scm'], elem['uri']] if (options.confirm): args.append('-y') + if (options.versioned and elem['version']): + args.append('-v') + args.append(elem['version']) self.cmd_set(target_path, args) return 0 diff --git a/src/wstool/multiproject_cmd.py b/src/wstool/multiproject_cmd.py index dea7405..2bf2274 100644 --- a/src/wstool/multiproject_cmd.py +++ b/src/wstool/multiproject_cmd.py @@ -570,6 +570,7 @@ def do_work(self): 'localname': self.localname, 'path': self.path, 'uri': vcsc.get_url(), + 'version': vcsc.get_current_version_label(), 'properties': self.element.get_properties()} path = config.get_base_path() From 6f3704b7e04f7cf33daf1b78d2e00d2a7c66b670 Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Thu, 9 May 2019 20:23:34 +0200 Subject: [PATCH 3/4] add scrape to bash completion --- completion/wstool-completion.bash | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/completion/wstool-completion.bash b/completion/wstool-completion.bash index ddfb5b4..8186aeb 100644 --- a/completion/wstool-completion.bash +++ b/completion/wstool-completion.bash @@ -41,7 +41,7 @@ fi # put here to be extendable if [ -z "$WSTOOL_BASE_COMMANDS" ]; then - _WSTOOL_BASE_COMMANDS="help init set merge info remove diff status update export --version" + _WSTOOL_BASE_COMMANDS="help init set merge info scrape remove diff status update export --version" fi # Based originally on the bzr/svn bash completition scripts. @@ -116,6 +116,9 @@ _wstool_complete() info) cmdOpts="-t --target-workspace --data-only --no-pkg-path --pkg-path-only --only --yaml -u --untracked --fetch -s --short --root -m --managed-only" ;; + scrape) + cmdOpts="-y --confirm -t --target-workspace -v --versioned" + ;; *) ;; esac From 87a3037acdb88f9040fc21f83a4285bf17d1edcd Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Thu, 20 Jun 2019 10:14:51 +0200 Subject: [PATCH 4/4] adapt unittest to consider extra 'version' column --- test/local/test_cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/local/test_cli.py b/test/local/test_cli.py index b991306..4151d34 100644 --- a/test/local/test_cli.py +++ b/test/local/test_cli.py @@ -625,7 +625,7 @@ def test_info_table(self): 'localname': 'localname', 'specversion': 'specversion', 'actualversion': 'actualversion'}] - self.assertEqual(["localname", "scm", "uri"], _nth_line_split(-1, wstool.cli_common.get_info_table(basepath, entries, unmanaged=True))) + self.assertEqual(["localname", "scm", "uri", "version"], _nth_line_split(-1, wstool.cli_common.get_info_table(basepath, entries, unmanaged=True))) def test_info_list(self): basepath = '/foo/path'