summaryrefslogtreecommitdiff
path: root/plugins/new_version.py
blob: 7e4d3c05c3f1841e08124709be797ac4a09adbf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# -*- coding: utf-8 -*-
#
# File: plugins/new_version.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
# Copyright (C) 2006-2009 René 'Necoro' Neumann
# This is free software.  You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
#
# Written by René 'Necoro' Neumann <necoro@necoro.net>

try:
    from bzrlib import plugin, branch
except ImportError:
    plugin = branch =  None
import gobject

from portato.helper import debug, warning
from portato import get_listener
from portato.constants import VERSION, APP_ICON, APP
from portato.gui.utils import GtkThread

class NewVersionFinder(Plugin):
    """
    Checks for a new version of portato every 30 minutes and on startup.
    """
    __author__ = "René 'Necoro' Neumann"
    __dependency__ = ["dev-util/bzr"]

    def init (self):
        self.add_call("main", self.run)
        self.add_menu("Check for new _versions", self.menu)

    def find_version (self, rev):
        try:
            b = branch.Branch.open("lp:portato")
        except Exception, e:
            warning("NEW_VERSION :: Exception occured while accessing the remote branch: %s", str(e))
            return

        debug("NEW_VERSION :: Installed rev: %s - Current rev: %s", rev, b.revno())
        if int(rev) < int(b.revno()):
            def callback():
                get_listener().send_notify(base = "New Portato Live Version Found", descr = "You have rev. %s, but the most recent revision is %s." % (rev, b.revno()), icon = APP_ICON)
                return False
            
            gobject.idle_add(callback)

    def start_thread(self, rev):
        t = GtkThread(target = self.find_version, name = "Version Updater Thread", args = (rev,))
        t.setDaemon(True)
        t.start()
        return True

    def menu (self, *args, **kwargs):
        """
        Run the thread once.
        """
        v = VERSION.split()
        if len(v) != 3 or v[0] != "9999":
            return None

        rev = v[-1]

        plugin.load_plugins() # to have lp: addresses parsed
        
        self.start_thread(rev)
        return rev

    def run (self, *args, **kwargs):
        """
        Run the thread once and add a 30 minutes timer.
        """
        rev = self.menu()

        if rev is not None:
            gobject.timeout_add(30*60*1000, self.start_thread, rev) # call it every 30 minutes

register(NewVersionFinder, (branch is None))
w=1'>tests: fix compatibility with GnuPG 2.2.5Clément Lassieur1-1/+1 2018-06-14Add tests and documentation of passing options to grep(1)Norbert Buchmueller3-5/+18 2018-06-14Ensure signature regexes are anchoredJason A. Donenfeld1-4/+4 Fixes CVE-2018-12356. Reported-by: Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de> 2018-06-10Replace noplaintext.vim as redact_pass.vim pluginTom Ryder3-46/+121 Per debugging from Enno Nagel <enno.nagel+vim@gmail.com>, it's become apparent to me that to have any degree of confidence that none of these options have actually got any plaintext password data in them, we need to disable the options globally when a password file is edited. In particular, in the case of the 'viminfo' global option, it's not possible to disable it per path, and not terribly meaningful either; things like the last seach pattern or the contents of registers, i.e. global state of the editor, are recorded. There's no sensible approach I can see except to actually switch the feature off entirely by blanking it. I've therefore completely rewritten this, to make as thorough a check as possible that the Vim user is editing a pass(1) file by calling `pass edit`, and then to disable the "leaky" options globally, with an explicit warning so that the user can see it's been done. This plugin is also available as Vim script #5707: <https://www.vim.org/scripts/script.php?script_id=5707> Its homepage is here: <https://sanctum.geek.nz/cgit/vim-redact-pass.git/about/> 2018-05-24grep: allow grep options and argumentsSitaram Chamarty1-3/+3 Allow grep options and arguments. Typical uses may be, for instance, wanting to ignore case ('-i'), print a few lines of context around the matched line, multiple patterns with '-e', etc. (background: grep is deprecating GREP_OPTIONS, so eventually that will stop working). 2018-02-19fish: reduce completion runtimesMathis Antony1-14/+13 Fish completion spends most of the time in calls to `sed` in for loops over entries and directories. This patch removes the repeated calls to `sed`. Signed-off-by: Mathis Antony <sveitser@gmail.com> 2018-02-08generate: disallow zero length generated passwordsJason A. Donenfeld1-1/+2 2018-02-01generate: in-place should work when file is emptyJason A. Donenfeld1-1/+1 2017-12-18Quote array specifierJason A. Donenfeld1-1/+1 Otherwise this expands to a filename if one exists. Suggested-by: izaberina@gmail.com 2017-10-13protect dirname calls from pass-names that look like command-line optionsStacey Sheldon1-6/+6 With the $path variable being passed directly to dirname, any pass-names provided by the user that happened to look like options to dirname would be processed as options rather than as the path to be split. This results in a real mess when you happen to run one of: pass edit --help pass generate --help pass insert --help then in the cmd_foo() function, you have: mkdir -p -v "$PREFIX/$(dirname --help)" which (due to the -p option to mkdir) results in the creation of an entire directory hierarchy made up of the slash-separated help text from dirname. 2017-09-15passmenu: Don't eat whitespace at beginning/end of passwordDaniel Lublin1-1/+1 If IFS (Input Field Separator) is not emptied, read will actually strip spaces and tabs at the beginning/end end of the "line". 2017-08-29emacs: Release version 1.0.1 of Emacs packageSvend Sorensen2-5/+10 2017-08-29emacs: --run-async: Quote shell argumentsDamien Cassou1-4/+5 This is important for filenames with special characters such as spaces and parenthesis. 2017-08-29emacs: Update author's email addressSvend Sorensen1-2/+2 2017-08-29emacs: Fix package-lint violationsSvend Sorensen1-2/+3 2017-07-26emacs: Release version 1.0.0 of Emacs packageSvend Sorensen2-1/+8 2017-07-26emacs: Use with-editor to wrap "pass edit"Svend Sorensen2-9/+17 Instead of editing the password file directly using Emacs, "pass edit" is run. This allows password-store's git change tracking to work. This adds a dependency on the with-editor Emacs package. 2017-04-13Bump version1.7.1Jason A. Donenfeld1-1/+1 2017-04-13init: match only the public keyJason A. Donenfeld1-1/+1 2017-03-28Use $GPG variableJason A. Donenfeld1-3/+3 2017-03-20Fix compatibility with GnuPG 2.2.19Andreas Stieger2-2/+2 GnuPG 2.2.19 added a warning when no command was given. * src/password-store.sh (reencrypt_path): Add --decrypt to --list-only * tests/t0300-reencryption.sh (gpg_keys_from_encrypted_file): same https://bugs.gnupg.org/gnupg/msg9873 http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=810adfd47801fc01e45fb71af9f05c91f7890cdb https://bugzilla.suse.com/show_bug.cgi?id=1028867 2017-03-01tests: fix on OSX by not using the tr hackJason A. Donenfeld3-5/+2 2017-02-26Bump version1.7Jason A. Donenfeld1-1/+1 2017-02-26Modernize makefileJason A. Donenfeld2-31/+36 2017-02-25CopyrightJason A. Donenfeld1-1/+1 2017-02-25StyleJason A. Donenfeld1-2/+2 2017-02-25git: use inner-most directoryJason A. Donenfeld2-27/+48 2017-02-25clip: sleep may require argv[0] to be sleepJason A. Donenfeld1-1/+1 2017-02-25man: document system extensionsJason A. Donenfeld1-2/+3