# Copyright (C) 2020 Chris Liaw <chrisliaw@antrapol.com> # Author: Chris Liaw <chrisliaw@antrapol.com> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. module GitCli module Repos class ReposError < StandardError; end def remote_config check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "remote -vv" cmdln = cmd.join(" ") log_debug "Remote config : #{cmdln}" res = os_exec(cmdln) do |st, res| if st.success? remotes = { } res.each_line do |l| ls = l.split("\t") lss = ls[1].split(" ") remotes[ls[0]] = { } if is_empty?(remotes[ls[0]]) rem = remotes[ls[0]] type = lss[-1] type.gsub!("(","").gsub!(")","") rem[type] = lss[0] end #[true, remotes] remotes else raise ReposError, res.strip #[false, res] end end end # remote_config def add_remote(name, url) raise_if_empty(name, "Remote name cannot be empty to add", GitCliException) raise_if_empty(url, "Remote URL cannot be empty to add", GitCliException) check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "remote" cmd << "add" cmd << name cmd << url cmdln = cmd.join(" ") log_debug "Add remote config : #{cmdln}" res = os_exec(cmdln) do |st, res| if st.success? #[true, res.strip] res.strip else raise ReposError, res.strip #[false, res.strip] end end end # add_remote def remove_remote(name) raise_if_empty(name, "Remote name cannot be empty to remove", GitCliException) check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "remote" cmd << "remove" cmd << name cmdln = cmd.join(" ") log_debug "Remove remote config : #{cmdln}" res = os_exec(cmdln) do |st, res| if st.success? #[true, res.strip] res.strip else raise ReposError, res.strip #[false, res.strip] end end end # remove_remote alias_method :remove_del, :remove_remote end end