From 8ebfd7c89fca641cbdd34f51cfa5e239486e3f12 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Tue, 27 Jul 2010 13:03:55 +0100 Subject: [PATCH 1/7] Refactor pid cwd finding to trap exceptions --- terminatorlib/cwd.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/terminatorlib/cwd.py b/terminatorlib/cwd.py index 1edb6fb9..a6877b4d 100755 --- a/terminatorlib/cwd.py +++ b/terminatorlib/cwd.py @@ -15,7 +15,7 @@ import platform import os import pwd -from util import dbg +from util import dbg, err def get_default_cwd(): """Determine a reasonable default cwd""" @@ -33,7 +33,7 @@ def get_pid_cwd(): if system == 'Linux': dbg('Using Linux get_pid_cwd') - func = lambda pid: os.path.realpath('/proc/%s/cwd' % pid) + func = linux_get_pid_cwd elif system == 'FreeBSD': try: import freebsd @@ -43,10 +43,29 @@ def get_pid_cwd(): dbg('FreeBSD version too old for get_pid_cwd') elif system == 'SunOS': dbg('Using SunOS get_pid_cwd') - func = lambda pid: os.path.realpath('/proc/%s/path/cwd' % pid) + func = sunos_get_pid_cwd else: dbg('Unable to determine a get_pid_cwd for OS: %s' % system) return(func) +def proc_get_pid_cwd(pid, path): + """Extract the cwd of a PID from proc, given the PID and the /proc path to + insert it into, e.g. /proc/%s/cwd""" + try: + cwd = os.path.realpath(path % pid) + except Exception, ex: + err('Unable to get cwd for PID %s: %s' % (pid, ex)) + cwd = '/' + + return(cwd) + +def linux_get_pid_cwd(pid): + """Determine the cwd for a given PID on Linux kernels""" + return(proc_get_pid_cwd(pid, '/proc/%s/cwd')) + +def sunos_get_pid_cwd(pid): + """Determine the cwd for a given PID on SunOS kernels""" + return(proc_get_pid_cwd(pid, '/proc/%s/path/cwd')) + # vim: set expandtab ts=4 sw=4: From 0ccb264f3c37c6912469ced49d468039d75f58b7 Mon Sep 17 00:00:00 2001 From: Julien Nicoulaud Date: Mon, 9 Aug 2010 11:44:42 +0200 Subject: [PATCH 2/7] Add an URL handler for Apache Maven plugins --- terminatorlib/plugins/url_handlers.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/terminatorlib/plugins/url_handlers.py b/terminatorlib/plugins/url_handlers.py index 04524749..81b99702 100644 --- a/terminatorlib/plugins/url_handlers.py +++ b/terminatorlib/plugins/url_handlers.py @@ -5,7 +5,7 @@ import re import terminatorlib.plugin as plugin # Every plugin you want Terminator to load *must* be listed in 'AVAILABLE' -AVAILABLE = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler'] +AVAILABLE = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler', 'MavenPluginURLHandler'] class LaunchpadBugURLHandler(plugin.URLHandler): """Launchpad Bug URL handler. If the URL looks like a Launchpad changelog @@ -51,3 +51,16 @@ class APTURLHandler(plugin.URLHandler): """Actually we don't need to do anything for this to work""" return(url) +class MavenPluginURLHandler(plugin.URLHandler): + """Maven plugin handler. If there is the name of a Maven plugin, link + to its documentation site.""" + + capabilities = ['url_handler'] + handler_name = 'maven_plugin' + mavenfilters = {} + mavenfilters['apache_maven_plugins'] = 'clean|compiler|deploy|failsafe|install|resources|site|surefire|verifier|ear|ejb|jar|rar|war|shade|changelog|changes|checkstyle|clover|doap|docck|javadoc|jxr|linkcheck|pmd|project-info-reports|surefire-report|ant|antrun|archetype|assembly|dependency|enforcer|gpg|help|invoker|jarsigner|one|patch|pdf|plugin|release|reactor|remote-resources|repository|scm|source|stage|toolchains|IDEs|eclipse|idea' + + match = '\\b(maven-(%(apache_maven_plugins)s)-plugin)\\b' % mavenfilters + + def callback(self, url): + return('http://maven.apache.org/plugins/%s' % url) From e6fe1768bd4daf31971bcb48554d01a015f66ecb Mon Sep 17 00:00:00 2001 From: Julien Nicoulaud Date: Mon, 9 Aug 2010 13:57:06 +0200 Subject: [PATCH 3/7] Split Maven plugin to a separate file and add support for both Apache and Codehaus plugins --- terminatorlib/plugins/maven.py | 39 +++++++++++++++++++++++++++ terminatorlib/plugins/url_handlers.py | 15 +---------- 2 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 terminatorlib/plugins/maven.py diff --git a/terminatorlib/plugins/maven.py b/terminatorlib/plugins/maven.py new file mode 100644 index 00000000..c2c9a2a3 --- /dev/null +++ b/terminatorlib/plugins/maven.py @@ -0,0 +1,39 @@ +# Copyright (c) 2010 Julien Nicoulaud +# +# 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, version 2 only. +# +# 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor +# , Boston, MA 02110-1301 USA +import re +import terminatorlib.plugin as plugin + +AVAILABLE = [ 'MavenPluginURLHandler' ] + +class MavenPluginURLHandler(plugin.URLHandler): + """Maven plugin handler. If there is the name of a Maven plugin, link + to its documentation site.""" + + capabilities = ['url_handler'] + handler_name = 'maven_plugin' + mavenfilters = {} + mavenfilters['apache_maven_plugins'] = 'clean|compiler|deploy|failsafe|install|resources|site|surefire|verifier|ear|ejb|jar|rar|war|shade|changelog|changes|checkstyle|clover|doap|docck|javadoc|jxr|linkcheck|pmd|project-info-reports|surefire-report|ant|antrun|archetype|assembly|dependency|enforcer|gpg|help|invoker|jarsigner|one|patch|pdf|plugin|release|reactor|remote-resources|repository|scm|source|stage|toolchains|eclipse|idea' + mavenfilters['codehaus_maven_plugins'] = 'jboss|jboss-packaging|tomcat|was6|antlr|antlr3|aspectj|axistools|castor|commons-attributes|gwt|hibernate3|idlj|javacc|jaxb2|jpox|jspc|openjpa|rmic|sablecc|sqlj|sysdeo-tomcat|xmlbeans|xdoclet|netbeans-freeform|nbm|clirr|cobertura|taglist|scmchangelog|findbugs|fitnesse|selenium|animal-sniffer|appassembler|build-helper|exec|keytool|latex|ounce|rpm|sql|versions|apt|cbuilds|jspc|native|retrotranslator|springws|smc|ideauidesigner|dita|docbook|javancss|jdepend|dashboard|emma|sonar|jruby|dbunit|shitty|batik|buildnumber|ianal|jalopy|jasperreports|l10n|minijar|native2ascii|osxappbundle|properties|solaris|truezip|unix|virtualization|wagon|webstart|xml|argouml|dbupgrade|chronos|ckjm|codenarc|deb|ec2|enchanter|ejbdoclet|graphing|j2me|javascript tools|jardiff|kodo|macker|springbeandoc|mock-repository|nsis|pomtools|setup|simian-report|syslog|visibroker|weblogic|webdoclet|xjc|xsltc' + mavenfilters['apache_maven_plugin_name'] = 'maven\-(%s)\-plugin' % mavenfilters['apache_maven_plugins'] + mavenfilters['codehaus_maven_plugin_name'] = '(%s)\-maven\-plugin' % mavenfilters['codehaus_maven_plugins'] + + match = '\\b(%(apache_maven_plugin_name)s|%(codehaus_maven_plugin_name)s)\\b' % mavenfilters + + def callback(self, url): + if re.match(self.mavenfilters["apache_maven_plugin_name"],url): + return('http://maven.apache.org/plugins/%s' % url) + if re.match(self.mavenfilters["codehaus_maven_plugin_name"],url): + return('http://mojo.codehaus.org/%s' % url) diff --git a/terminatorlib/plugins/url_handlers.py b/terminatorlib/plugins/url_handlers.py index 81b99702..04524749 100644 --- a/terminatorlib/plugins/url_handlers.py +++ b/terminatorlib/plugins/url_handlers.py @@ -5,7 +5,7 @@ import re import terminatorlib.plugin as plugin # Every plugin you want Terminator to load *must* be listed in 'AVAILABLE' -AVAILABLE = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler', 'MavenPluginURLHandler'] +AVAILABLE = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler'] class LaunchpadBugURLHandler(plugin.URLHandler): """Launchpad Bug URL handler. If the URL looks like a Launchpad changelog @@ -51,16 +51,3 @@ class APTURLHandler(plugin.URLHandler): """Actually we don't need to do anything for this to work""" return(url) -class MavenPluginURLHandler(plugin.URLHandler): - """Maven plugin handler. If there is the name of a Maven plugin, link - to its documentation site.""" - - capabilities = ['url_handler'] - handler_name = 'maven_plugin' - mavenfilters = {} - mavenfilters['apache_maven_plugins'] = 'clean|compiler|deploy|failsafe|install|resources|site|surefire|verifier|ear|ejb|jar|rar|war|shade|changelog|changes|checkstyle|clover|doap|docck|javadoc|jxr|linkcheck|pmd|project-info-reports|surefire-report|ant|antrun|archetype|assembly|dependency|enforcer|gpg|help|invoker|jarsigner|one|patch|pdf|plugin|release|reactor|remote-resources|repository|scm|source|stage|toolchains|IDEs|eclipse|idea' - - match = '\\b(maven-(%(apache_maven_plugins)s)-plugin)\\b' % mavenfilters - - def callback(self, url): - return('http://maven.apache.org/plugins/%s' % url) From 299c817714e2eb6a6028a0f5f2f295c098d3783a Mon Sep 17 00:00:00 2001 From: Julien Nicoulaud Date: Mon, 9 Aug 2010 20:07:33 +0200 Subject: [PATCH 4/7] Add support for plugins goals, document --- terminatorlib/plugins/maven.py | 46 +++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 12 deletions(-) mode change 100644 => 100755 terminatorlib/plugins/maven.py diff --git a/terminatorlib/plugins/maven.py b/terminatorlib/plugins/maven.py old mode 100644 new mode 100755 index c2c9a2a3..2ab459a8 --- a/terminatorlib/plugins/maven.py +++ b/terminatorlib/plugins/maven.py @@ -19,21 +19,43 @@ import terminatorlib.plugin as plugin AVAILABLE = [ 'MavenPluginURLHandler' ] class MavenPluginURLHandler(plugin.URLHandler): - """Maven plugin handler. If there is the name of a Maven plugin, link - to its documentation site.""" + """Maven plugin handler. If the name of a Maven plugin is + detected, it is turned into a link to its documentation site. + If a Maven plugin goal is detected, the link points to the + particular goal page. Only Apache (org.apache.maven.plugins) + and Codehaus (org.codehaus.mojo) plugins are supported.""" capabilities = ['url_handler'] handler_name = 'maven_plugin' - mavenfilters = {} - mavenfilters['apache_maven_plugins'] = 'clean|compiler|deploy|failsafe|install|resources|site|surefire|verifier|ear|ejb|jar|rar|war|shade|changelog|changes|checkstyle|clover|doap|docck|javadoc|jxr|linkcheck|pmd|project-info-reports|surefire-report|ant|antrun|archetype|assembly|dependency|enforcer|gpg|help|invoker|jarsigner|one|patch|pdf|plugin|release|reactor|remote-resources|repository|scm|source|stage|toolchains|eclipse|idea' - mavenfilters['codehaus_maven_plugins'] = 'jboss|jboss-packaging|tomcat|was6|antlr|antlr3|aspectj|axistools|castor|commons-attributes|gwt|hibernate3|idlj|javacc|jaxb2|jpox|jspc|openjpa|rmic|sablecc|sqlj|sysdeo-tomcat|xmlbeans|xdoclet|netbeans-freeform|nbm|clirr|cobertura|taglist|scmchangelog|findbugs|fitnesse|selenium|animal-sniffer|appassembler|build-helper|exec|keytool|latex|ounce|rpm|sql|versions|apt|cbuilds|jspc|native|retrotranslator|springws|smc|ideauidesigner|dita|docbook|javancss|jdepend|dashboard|emma|sonar|jruby|dbunit|shitty|batik|buildnumber|ianal|jalopy|jasperreports|l10n|minijar|native2ascii|osxappbundle|properties|solaris|truezip|unix|virtualization|wagon|webstart|xml|argouml|dbupgrade|chronos|ckjm|codenarc|deb|ec2|enchanter|ejbdoclet|graphing|j2me|javascript tools|jardiff|kodo|macker|springbeandoc|mock-repository|nsis|pomtools|setup|simian-report|syslog|visibroker|weblogic|webdoclet|xjc|xsltc' - mavenfilters['apache_maven_plugin_name'] = 'maven\-(%s)\-plugin' % mavenfilters['apache_maven_plugins'] - mavenfilters['codehaus_maven_plugin_name'] = '(%s)\-maven\-plugin' % mavenfilters['codehaus_maven_plugins'] - match = '\\b(%(apache_maven_plugin_name)s|%(codehaus_maven_plugin_name)s)\\b' % mavenfilters + maven_filters = {} + maven_filters['apache_maven_plugin_shortname'] = 'clean|compiler|deploy|failsafe|install|resources|site|surefire|verifier|ear|ejb|jar|rar|war|shade|changelog|changes|checkstyle|clover|doap|docck|javadoc|jxr|linkcheck|pmd|project-info-reports|surefire-report|ant|antrun|archetype|assembly|dependency|enforcer|gpg|help|invoker|jarsigner|one|patch|pdf|plugin|release|reactor|remote-resources|repository|scm|source|stage|toolchains|eclipse|idea' + maven_filters['codehaus_maven_plugin_shortname'] = 'jboss|jboss-packaging|tomcat|was6|antlr|antlr3|aspectj|axistools|castor|commons-attributes|gwt|hibernate3|idlj|javacc|jaxb2|jpox|jspc|openjpa|rmic|sablecc|sqlj|sysdeo-tomcat|xmlbeans|xdoclet|netbeans-freeform|nbm|clirr|cobertura|taglist|scmchangelog|findbugs|fitnesse|selenium|animal-sniffer|appassembler|build-helper|exec|keytool|latex|ounce|rpm|sql|versions|apt|cbuilds|jspc|native|retrotranslator|springws|smc|ideauidesigner|dita|docbook|javancss|jdepend|dashboard|emma|sonar|jruby|dbunit|shitty|batik|buildnumber|ianal|jalopy|jasperreports|l10n|minijar|native2ascii|osxappbundle|properties|solaris|truezip|unix|virtualization|wagon|webstart|xml|argouml|dbupgrade|chronos|ckjm|codenarc|deb|ec2|enchanter|ejbdoclet|graphing|j2me|javascript tools|jardiff|kodo|macker|springbeandoc|mock-repository|nsis|pomtools|setup|simian-report|syslog|visibroker|weblogic|webdoclet|xjc|xsltc' + maven_filters['apache_maven_plugin_artifact_id'] = 'maven\-(%(apache_maven_plugin_shortname)s)\-plugin' % maven_filters + maven_filters['codehaus_maven_plugin_artifact_id'] = '(%(codehaus_maven_plugin_shortname)s)\-maven\-plugin' % maven_filters + maven_filters['maven_plugin_version'] = '[0-9\.\-\_]+' + maven_filters['maven_plugin_goal'] = '[a-z\-]+' + maven_filters['maven_plugin'] = '(%(apache_maven_plugin_artifact_id)s|%(codehaus_maven_plugin_artifact_id)s)(:%(maven_plugin_version)s:%(maven_plugin_goal)s)?' % maven_filters + maven_filters['maven_plugin_named_groups'] = '(?P%(apache_maven_plugin_artifact_id)s|%(codehaus_maven_plugin_artifact_id)s)(:%(maven_plugin_version)s:(?P%(maven_plugin_goal)s))?' % maven_filters + + match = '\\b%(maven_plugin)s\\b' % maven_filters def callback(self, url): - if re.match(self.mavenfilters["apache_maven_plugin_name"],url): - return('http://maven.apache.org/plugins/%s' % url) - if re.match(self.mavenfilters["codehaus_maven_plugin_name"],url): - return('http://mojo.codehaus.org/%s' % url) + matches = re.match(MavenPluginURLHandler.maven_filters['maven_plugin_named_groups'], url) + if matches is not None: + artifactid = matches.group('artifact_id') + goal = matches.group('goal') + if artifactid is not None: + if re.match(MavenPluginURLHandler.maven_filters['apache_maven_plugin_artifact_id'], artifactid): + if goal is not None: + return 'http://maven.apache.org/plugins/%s/%s-mojo.html' % ( artifactid, goal) + else: + return 'http://maven.apache.org/plugins/%s' % artifactid + elif re.match(MavenPluginURLHandler.maven_filters['codehaus_maven_plugin_artifact_id'], artifactid): + if goal is not None: + return 'http://mojo.codehaus.org/%s/%s-mojo.html' % ( artifactid, goal) + else: + return 'http://mojo.codehaus.org/%s' % artifactid + + plugin.err("Wrong match '%s' for MavenPluginURLHandler." % url) + return '' From b70dd7afe26410d4748cf2e17d3650981b77c966 Mon Sep 17 00:00:00 2001 From: Julien Nicoulaud Date: Thu, 12 Aug 2010 22:25:56 +0200 Subject: [PATCH 5/7] Maven plugin goals can contain capital letters too --- terminatorlib/plugins/maven.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terminatorlib/plugins/maven.py b/terminatorlib/plugins/maven.py index 2ab459a8..2bde9783 100755 --- a/terminatorlib/plugins/maven.py +++ b/terminatorlib/plugins/maven.py @@ -34,7 +34,7 @@ class MavenPluginURLHandler(plugin.URLHandler): maven_filters['apache_maven_plugin_artifact_id'] = 'maven\-(%(apache_maven_plugin_shortname)s)\-plugin' % maven_filters maven_filters['codehaus_maven_plugin_artifact_id'] = '(%(codehaus_maven_plugin_shortname)s)\-maven\-plugin' % maven_filters maven_filters['maven_plugin_version'] = '[0-9\.\-\_]+' - maven_filters['maven_plugin_goal'] = '[a-z\-]+' + maven_filters['maven_plugin_goal'] = '[a-zA-Z\-]+' maven_filters['maven_plugin'] = '(%(apache_maven_plugin_artifact_id)s|%(codehaus_maven_plugin_artifact_id)s)(:%(maven_plugin_version)s:%(maven_plugin_goal)s)?' % maven_filters maven_filters['maven_plugin_named_groups'] = '(?P%(apache_maven_plugin_artifact_id)s|%(codehaus_maven_plugin_artifact_id)s)(:%(maven_plugin_version)s:(?P%(maven_plugin_goal)s))?' % maven_filters From f3ef3c7bbdaf4a4592235adc3fedfce8774363e6 Mon Sep 17 00:00:00 2001 From: Julien Nicoulaud Date: Sun, 15 Aug 2010 17:24:02 +0200 Subject: [PATCH 6/7] Fix regexps matching Maven plugins version and goals --- terminatorlib/plugins/maven.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/terminatorlib/plugins/maven.py b/terminatorlib/plugins/maven.py index 2bde9783..0a631020 100755 --- a/terminatorlib/plugins/maven.py +++ b/terminatorlib/plugins/maven.py @@ -33,8 +33,8 @@ class MavenPluginURLHandler(plugin.URLHandler): maven_filters['codehaus_maven_plugin_shortname'] = 'jboss|jboss-packaging|tomcat|was6|antlr|antlr3|aspectj|axistools|castor|commons-attributes|gwt|hibernate3|idlj|javacc|jaxb2|jpox|jspc|openjpa|rmic|sablecc|sqlj|sysdeo-tomcat|xmlbeans|xdoclet|netbeans-freeform|nbm|clirr|cobertura|taglist|scmchangelog|findbugs|fitnesse|selenium|animal-sniffer|appassembler|build-helper|exec|keytool|latex|ounce|rpm|sql|versions|apt|cbuilds|jspc|native|retrotranslator|springws|smc|ideauidesigner|dita|docbook|javancss|jdepend|dashboard|emma|sonar|jruby|dbunit|shitty|batik|buildnumber|ianal|jalopy|jasperreports|l10n|minijar|native2ascii|osxappbundle|properties|solaris|truezip|unix|virtualization|wagon|webstart|xml|argouml|dbupgrade|chronos|ckjm|codenarc|deb|ec2|enchanter|ejbdoclet|graphing|j2me|javascript tools|jardiff|kodo|macker|springbeandoc|mock-repository|nsis|pomtools|setup|simian-report|syslog|visibroker|weblogic|webdoclet|xjc|xsltc' maven_filters['apache_maven_plugin_artifact_id'] = 'maven\-(%(apache_maven_plugin_shortname)s)\-plugin' % maven_filters maven_filters['codehaus_maven_plugin_artifact_id'] = '(%(codehaus_maven_plugin_shortname)s)\-maven\-plugin' % maven_filters - maven_filters['maven_plugin_version'] = '[0-9\.\-\_]+' - maven_filters['maven_plugin_goal'] = '[a-zA-Z\-]+' + maven_filters['maven_plugin_version'] = '[a-zA-Z0-9\.-]+' + maven_filters['maven_plugin_goal'] = '[a-zA-Z-]+' maven_filters['maven_plugin'] = '(%(apache_maven_plugin_artifact_id)s|%(codehaus_maven_plugin_artifact_id)s)(:%(maven_plugin_version)s:%(maven_plugin_goal)s)?' % maven_filters maven_filters['maven_plugin_named_groups'] = '(?P%(apache_maven_plugin_artifact_id)s|%(codehaus_maven_plugin_artifact_id)s)(:%(maven_plugin_version)s:(?P%(maven_plugin_goal)s))?' % maven_filters From 7df690dba52813c2ea5f64f2e39106b57c1f257f Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Tue, 17 Aug 2010 12:43:01 +0100 Subject: [PATCH 7/7] Document the antialias config --- doc/terminator_config.5 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/terminator_config.5 b/doc/terminator_config.5 index 07feaf1f..45f4f3e6 100644 --- a/doc/terminator_config.5 +++ b/doc/terminator_config.5 @@ -280,6 +280,10 @@ Each profile should be its own subsection with a header in the format \fB[[name] If true, allow applications in the terminal to make text boldface. Default value: \fBTrue\fR .TP +.B antialias\fR (boolean) +If false, do not apply anti-aliasing to fonts in the terminal. +Default value: \fBTrue\fR +.TP .B audible_bell\fR (boolean) If true, make a noise when applications send the escape sequence for the terminal bell. Default value: \fBFalse\fR