{"action":"created","comment":{"url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/comments/24754823","id":24754823,"diff_hunk":"@@ -0,0 +1,250 @@\n+#\n+# Copyright (C) 2015  Red Hat, Inc.\n+#\n+# This copyrighted material is made available to anyone wishing to use,\n+# modify, copy, or redistribute it subject to the terms and conditions of\n+# the GNU General Public License v.2, or (at your option) any later version.\n+# This program is distributed in the hope that it will be useful, but WITHOUT\n+# ANY WARRANTY expressed or implied, including the implied warranties of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General\n+# Public License for more details.  You should have received a copy of the\n+# GNU General Public License along with this program; if not, write to the\n+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\n+# 02110-1301, USA.  Any Red Hat trademarks that are incorporated in the\n+# source code or documentation are not subject to the GNU General Public\n+# License and may only be used or replicated with the express permission of\n+# Red Hat, Inc.\n+#\n+\n+from __future__ import absolute_import\n+from __future__ import unicode_literals\n+from dnfpluginscore import _, logger\n+#from dnf.pycomp import PY3\n+\n+import dnf\n+import dnf.cli\n+import dnf.pycomp\n+import dnfpluginscore\n+import dnfpluginscore.lib\n+import os\n+import re\n+#if PY3:\n+#    from urllib.parse import urlparse\n+#else:\n+#    from urlparse import urlparse\n+\n+\n+class ConfigManager(dnf.Plugin):\n+\n+    name = 'config-manager'\n+\n+    def __init__(self, base, cli):\n+        super(ConfigManager, self).__init__(base, cli)\n+        self.base = base\n+        self.cli = cli\n+        if self.cli is not None:\n+            self.cli.register_command(ConfigManagerCommand)\n+\n+\n+class ConfigManagerCommand(dnf.cli.Command):\n+\n+    aliases = ['config-manager']\n+    summary = _('manage dnf configuration options and repositories')\n+    usage = '[%s] [%s]' % (_('OPTIONS'), _('KEYWORDS'))\n+\n+    def __init__(self, cli):\n+        super(ConfigManagerCommand, self).__init__(cli)\n+        self.opts = None\n+        self.parser = None\n+\n+    def configure(self, args):\n+        # setup sack and populate it with enabled repos\n+        demands = self.cli.demands\n+        demands.available_repos = True\n+\n+        self.parser = dnfpluginscore.ArgumentParser(self.aliases[0])\n+        self.parser.add_argument(\n+            'repo', nargs='*',\n+            help=_('repo to modify'))\n+        self.parser.add_argument(\n+            '--save', default=False, action='store_true',\n+            help=_('save the current options (useful with --setopt)'))\n+        self.parser.add_argument(\n+            '--set-enabled', default=False, action='store_true',\n+            help=_('enable the specified repos (automatically saves)'))\n+        self.parser.add_argument(\n+            '--set-disabled', default=False, action='store_true',\n+            help=_('disable the specified repos (automatically saves)'))\n+        self.parser.add_argument(\n+            '--add-repo', default=[], action='append', metavar='URL',\n+            help=_('add (and enable) the repo from the specified file or url'))\n+\n+        self.opts = self.parser.parse_args(args)\n+\n+        if self.opts.help_cmd:\n+            print(self.parser.format_help())\n+            return\n+\n+        if (self.opts.save or self.opts.set_enabled or\n+                self.opts.set_disabled or self.opts.add_repo):\n+            demands.root_user = True\n+\n+\n+    def run(self, _args):\n+        \"\"\"Execute the util action here.\"\"\"\n+\n+        if self.opts.help_cmd:\n+            return\n+        if self.opts.set_enabled and self.opts.set_disabled:\n+            logger.error(\n+                _(\"Error: Trying to enable and disable repos at the same time.\"))\n+            self.opts.set_enabled = self.opts.set_disabled = False\n+        if self.opts.set_enabled and not self.opts.repo:\n+            logger.error(_(\"Error: Trying to enable already enabled repos.\"))\n+            self.opts.set_enabled = False\n+\n+        if self.opts.add_repo:\n+            self.add_repo()\n+        else:\n+            self.modify_repo()\n+\n+    def modify_repo(self):\n+        \"\"\" process --set-enabled, --set-disabled and --setopt options \"\"\"\n+\n+        sbc = self.base.conf\n+        modify = []\n+        if hasattr(self.cli, 'main_setopts') and self.cli.main_setopts:\n+            modify = self.cli.main_setopts.items\n+        if not self.opts.repo or 'main' in self.opts.repo:\n+            print(self.base.output.fmtSection('main'))\n+            print(self.base.conf.dump())\n+            if self.opts.save and modify:\n+                # modify [main] in dnf.conf\n+                dnfpluginscore.lib.write_raw_configfile(dnf.const.CONF_FILENAME,\n+                                                        'main', sbc.substitutions,\n+                                                        sbc.cfg.options,\n+                                                        sbc.iteritems,\n+                                                        sbc.optionobj,\n+                                                        modify)\n+\n+        if self.opts.set_enabled or self.opts.set_disabled:\n+            self.opts.save = True\n+            modify.append('enabled')\n+\n+        if self.opts.repo:\n+            matched = []\n+            for name in self.opts.repo:\n+                matched.extend(self.base.repos.get_matching(name))\n+        else:\n+            matched = self.base.repos.iter_enabled()\n+\n+        for repo in sorted(matched):\n+            print(self.base.output.fmtSection('repo: ' + repo.id))\n+            if self.opts.set_enabled and not repo.enabled:\n+                repo.enable()\n+            elif self.opts.set_disabled and repo.enabled:\n+                repo.disable()\n+            print(repo.dump())\n+            repo_modify = modify[:]\n+            if (hasattr(self.cli, 'repo_setopts')\n+                    and repo.id in self.cli.repo_setopts):\n+                repo_modify.extend(self.cli.repo_setopts[repo.id].items)\n+            if self.opts.save and modify:\n+                dnfpluginscore.lib.write_raw_configfile(repo.repofile,\n+                                                        repo.id,\n+                                                        sbc.substitutions,\n+                                                        repo.cfg.options,\n+                                                        repo.iteritems,\n+                                                        repo.optionobj,\n+                                                        repo_modify)\n+\n+    def add_repo(self):\n+        \"\"\" process --add-repo option \"\"\"\n+\n+        # put repo file into first reposdir which exists or create it\n+        myrepodir = None\n+        for rdir in self.base.conf.reposdir:\n+            if os.path.exists(rdir):\n+                myrepodir = rdir\n+                break\n+\n+        if not myrepodir:\n+            myrepodir = self.base.conf.reposdir[0]\n+            dnf.util.ensure_dir(myrepodir)\n+\n+        for url in self.opts.add_repo:\n+            if dnf.pycomp.urlparse.urlparse(url).scheme == '':\n+                url = 'file://' + os.path.abspath(url)\n+            logger.info(_('Adding repo from: %s'), url)\n+            if url.endswith('.repo'):\n+                # .repo file - download, put into reposdir and enable it\n+                destname = os.path.basename(url)\n+                destname = myrepodir + '/' + destname\n+                try:\n+                    f = dnfpluginscore.lib.urlopen(self, None, url, 'w+')\n+                    f.close()\n+                    shutil.copy2(f.name, destname)","path":"plugins/config_manager.py","position":186,"original_position":186,"commit_id":"4e5f2e90d16062c453a1ce89fe4f33b151fa5a10","original_commit_id":"4e5f2e90d16062c453a1ce89fe4f33b151fa5a10","user":{"login":"MichaelMraka","id":6815940,"avatar_url":"https://avatars.githubusercontent.com/u/6815940?v=3","gravatar_id":"","url":"https://api.github.com/users/MichaelMraka","html_url":"https://github.com/MichaelMraka","followers_url":"https://api.github.com/users/MichaelMraka/followers","following_url":"https://api.github.com/users/MichaelMraka/following{/other_user}","gists_url":"https://api.github.com/users/MichaelMraka/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelMraka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelMraka/subscriptions","organizations_url":"https://api.github.com/users/MichaelMraka/orgs","repos_url":"https://api.github.com/users/MichaelMraka/repos","events_url":"https://api.github.com/users/MichaelMraka/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelMraka/received_events","type":"User","site_admin":false},"body":"Oops, correct. Or I can call f.close() after it's copied.","created_at":"2015-02-16T14:53:23Z","updated_at":"2015-02-16T14:53:23Z","html_url":"https://github.com/rpm-software-management/dnf-plugins-core/pull/65#discussion_r24754823","pull_request_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65","_links":{"self":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/comments/24754823"},"html":{"href":"https://github.com/rpm-software-management/dnf-plugins-core/pull/65#discussion_r24754823"},"pull_request":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65"}}},"pull_request":{"url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65","id":28279205,"html_url":"https://github.com/rpm-software-management/dnf-plugins-core/pull/65","diff_url":"https://github.com/rpm-software-management/dnf-plugins-core/pull/65.diff","patch_url":"https://github.com/rpm-software-management/dnf-plugins-core/pull/65.patch","issue_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/issues/65","number":65,"state":"open","locked":false,"title":"dnf config-manager implementation","user":{"login":"MichaelMraka","id":6815940,"avatar_url":"https://avatars.githubusercontent.com/u/6815940?v=3","gravatar_id":"","url":"https://api.github.com/users/MichaelMraka","html_url":"https://github.com/MichaelMraka","followers_url":"https://api.github.com/users/MichaelMraka/followers","following_url":"https://api.github.com/users/MichaelMraka/following{/other_user}","gists_url":"https://api.github.com/users/MichaelMraka/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelMraka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelMraka/subscriptions","organizations_url":"https://api.github.com/users/MichaelMraka/orgs","repos_url":"https://api.github.com/users/MichaelMraka/repos","events_url":"https://api.github.com/users/MichaelMraka/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelMraka/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-01-29T13:43:03Z","updated_at":"2015-02-16T14:53:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8f55441ae864ddd48212e5bb1cce8b14e65907e0","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65/commits","review_comments_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65/comments","review_comment_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/comments/{number}","comments_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/issues/65/comments","statuses_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/statuses/4e5f2e90d16062c453a1ce89fe4f33b151fa5a10","head":{"label":"MichaelMraka:config-manager","ref":"config-manager","sha":"4e5f2e90d16062c453a1ce89fe4f33b151fa5a10","user":{"login":"MichaelMraka","id":6815940,"avatar_url":"https://avatars.githubusercontent.com/u/6815940?v=3","gravatar_id":"","url":"https://api.github.com/users/MichaelMraka","html_url":"https://github.com/MichaelMraka","followers_url":"https://api.github.com/users/MichaelMraka/followers","following_url":"https://api.github.com/users/MichaelMraka/following{/other_user}","gists_url":"https://api.github.com/users/MichaelMraka/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelMraka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelMraka/subscriptions","organizations_url":"https://api.github.com/users/MichaelMraka/orgs","repos_url":"https://api.github.com/users/MichaelMraka/repos","events_url":"https://api.github.com/users/MichaelMraka/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelMraka/received_events","type":"User","site_admin":false},"repo":{"id":29674500,"name":"dnf-plugins-core","full_name":"MichaelMraka/dnf-plugins-core","owner":{"login":"MichaelMraka","id":6815940,"avatar_url":"https://avatars.githubusercontent.com/u/6815940?v=3","gravatar_id":"","url":"https://api.github.com/users/MichaelMraka","html_url":"https://github.com/MichaelMraka","followers_url":"https://api.github.com/users/MichaelMraka/followers","following_url":"https://api.github.com/users/MichaelMraka/following{/other_user}","gists_url":"https://api.github.com/users/MichaelMraka/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelMraka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelMraka/subscriptions","organizations_url":"https://api.github.com/users/MichaelMraka/orgs","repos_url":"https://api.github.com/users/MichaelMraka/repos","events_url":"https://api.github.com/users/MichaelMraka/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelMraka/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/MichaelMraka/dnf-plugins-core","description":"Core DNF Plugins","fork":true,"url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core","forks_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/forks","keys_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/teams","hooks_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/hooks","issue_events_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/issues/events{/number}","events_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/events","assignees_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/assignees{/user}","branches_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/branches{/branch}","tags_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/tags","blobs_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/statuses/{sha}","languages_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/languages","stargazers_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/stargazers","contributors_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/contributors","subscribers_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/subscribers","subscription_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/subscription","commits_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/issues/comments/{number}","contents_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/contents/{+path}","compare_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/merges","archive_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/downloads","issues_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/issues{/number}","pulls_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/pulls{/number}","milestones_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/milestones{/number}","notifications_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/labels{/name}","releases_url":"https://api.github.com/repos/MichaelMraka/dnf-plugins-core/releases{/id}","created_at":"2015-01-22T11:01:01Z","updated_at":"2015-02-13T14:15:37Z","pushed_at":"2015-02-13T14:15:37Z","git_url":"git://github.com/MichaelMraka/dnf-plugins-core.git","ssh_url":"git@github.com:MichaelMraka/dnf-plugins-core.git","clone_url":"https://github.com/MichaelMraka/dnf-plugins-core.git","svn_url":"https://github.com/MichaelMraka/dnf-plugins-core","homepage":null,"size":673,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"rpm-software-management:master","ref":"master","sha":"22bd68f03cfcec9ac9c5ac35e4deb82838726cef","user":{"login":"rpm-software-management","id":8504469,"avatar_url":"https://avatars.githubusercontent.com/u/8504469?v=3","gravatar_id":"","url":"https://api.github.com/users/rpm-software-management","html_url":"https://github.com/rpm-software-management","followers_url":"https://api.github.com/users/rpm-software-management/followers","following_url":"https://api.github.com/users/rpm-software-management/following{/other_user}","gists_url":"https://api.github.com/users/rpm-software-management/gists{/gist_id}","starred_url":"https://api.github.com/users/rpm-software-management/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpm-software-management/subscriptions","organizations_url":"https://api.github.com/users/rpm-software-management/orgs","repos_url":"https://api.github.com/users/rpm-software-management/repos","events_url":"https://api.github.com/users/rpm-software-management/events{/privacy}","received_events_url":"https://api.github.com/users/rpm-software-management/received_events","type":"Organization","site_admin":false},"repo":{"id":14720810,"name":"dnf-plugins-core","full_name":"rpm-software-management/dnf-plugins-core","owner":{"login":"rpm-software-management","id":8504469,"avatar_url":"https://avatars.githubusercontent.com/u/8504469?v=3","gravatar_id":"","url":"https://api.github.com/users/rpm-software-management","html_url":"https://github.com/rpm-software-management","followers_url":"https://api.github.com/users/rpm-software-management/followers","following_url":"https://api.github.com/users/rpm-software-management/following{/other_user}","gists_url":"https://api.github.com/users/rpm-software-management/gists{/gist_id}","starred_url":"https://api.github.com/users/rpm-software-management/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpm-software-management/subscriptions","organizations_url":"https://api.github.com/users/rpm-software-management/orgs","repos_url":"https://api.github.com/users/rpm-software-management/repos","events_url":"https://api.github.com/users/rpm-software-management/events{/privacy}","received_events_url":"https://api.github.com/users/rpm-software-management/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rpm-software-management/dnf-plugins-core","description":"Core DNF Plugins","fork":false,"url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core","forks_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/forks","keys_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/teams","hooks_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/hooks","issue_events_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/issues/events{/number}","events_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/events","assignees_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/assignees{/user}","branches_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/branches{/branch}","tags_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/tags","blobs_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/statuses/{sha}","languages_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/languages","stargazers_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/stargazers","contributors_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/contributors","subscribers_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/subscribers","subscription_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/subscription","commits_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/issues/comments/{number}","contents_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/contents/{+path}","compare_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/merges","archive_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/downloads","issues_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/issues{/number}","pulls_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls{/number}","milestones_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/milestones{/number}","notifications_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/labels{/name}","releases_url":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/releases{/id}","created_at":"2013-11-26T15:34:01Z","updated_at":"2015-02-13T10:53:04Z","pushed_at":"2015-02-13T10:53:04Z","git_url":"git://github.com/rpm-software-management/dnf-plugins-core.git","ssh_url":"git@github.com:rpm-software-management/dnf-plugins-core.git","clone_url":"https://github.com/rpm-software-management/dnf-plugins-core.git","svn_url":"https://github.com/rpm-software-management/dnf-plugins-core","homepage":null,"size":1584,"stargazers_count":7,"watchers_count":7,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":12,"mirror_url":null,"open_issues_count":5,"forks":12,"open_issues":5,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65"},"html":{"href":"https://github.com/rpm-software-management/dnf-plugins-core/pull/65"},"issue":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/issues/65"},"comments":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/issues/65/comments"},"review_comments":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65/comments"},"review_comment":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/pulls/65/commits"},"statuses":{"href":"https://api.github.com/repos/rpm-software-management/dnf-plugins-core/statuses/4e5f2e90d16062c453a1ce89fe4f33b151fa5a10"}}}}