sup 0.19.0 → 0.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +4 -1
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +12 -6
  5. data/CONTRIBUTORS +28 -14
  6. data/Gemfile +5 -0
  7. data/History.txt +92 -0
  8. data/README.md +26 -5
  9. data/Rakefile +41 -1
  10. data/ReleaseNotes +17 -0
  11. data/bin/sup +12 -23
  12. data/bin/sup-add +15 -16
  13. data/bin/sup-config +30 -45
  14. data/bin/sup-dump +2 -3
  15. data/bin/sup-import-dump +5 -6
  16. data/bin/sup-sync +3 -4
  17. data/bin/sup-sync-back-maildir +3 -4
  18. data/bin/sup-tweak-labels +6 -7
  19. data/contrib/colorpicker.rb +0 -2
  20. data/contrib/completion/_sup.bash +102 -0
  21. data/devel/profile.rb +0 -1
  22. data/ext/mkrf_conf_xapian.rb +47 -0
  23. data/lib/sup.rb +10 -8
  24. data/lib/sup/buffer.rb +12 -0
  25. data/lib/sup/colormap.rb +5 -2
  26. data/lib/sup/contact.rb +4 -2
  27. data/lib/sup/crypto.rb +58 -16
  28. data/lib/sup/draft.rb +8 -8
  29. data/lib/sup/hook.rb +9 -9
  30. data/lib/sup/index.rb +20 -7
  31. data/lib/sup/label.rb +1 -1
  32. data/lib/sup/logger.rb +1 -1
  33. data/lib/sup/maildir.rb +16 -5
  34. data/lib/sup/mbox.rb +13 -5
  35. data/lib/sup/message.rb +36 -12
  36. data/lib/sup/message_chunks.rb +13 -4
  37. data/lib/sup/mode.rb +34 -28
  38. data/lib/sup/modes/contact_list_mode.rb +1 -0
  39. data/lib/sup/modes/edit_message_mode.rb +3 -2
  40. data/lib/sup/modes/forward_mode.rb +22 -3
  41. data/lib/sup/modes/line_cursor_mode.rb +1 -1
  42. data/lib/sup/modes/reply_mode.rb +3 -1
  43. data/lib/sup/modes/text_mode.rb +6 -1
  44. data/lib/sup/modes/thread_index_mode.rb +12 -2
  45. data/lib/sup/modes/thread_view_mode.rb +111 -14
  46. data/lib/sup/person.rb +68 -61
  47. data/lib/sup/search.rb +1 -1
  48. data/lib/sup/sent.rb +1 -1
  49. data/lib/sup/source.rb +1 -1
  50. data/lib/sup/util.rb +15 -94
  51. data/lib/sup/util/axe.rb +17 -0
  52. data/lib/sup/util/locale_fiddler.rb +24 -0
  53. data/lib/sup/util/ncurses.rb +3 -3
  54. data/lib/sup/version.rb +10 -1
  55. data/sup.gemspec +29 -11
  56. data/test/{messages → fixtures}/bad-content-transfer-encoding-1.eml +0 -0
  57. data/test/{messages → fixtures}/binary-content-transfer-encoding-2.eml +0 -0
  58. data/test/fixtures/blank-header-fields.eml +71 -0
  59. data/test/fixtures/contacts.txt +1 -0
  60. data/test/fixtures/mailing-list-header.eml +80 -0
  61. data/test/fixtures/malicious-attachment-names.eml +55 -0
  62. data/test/fixtures/missing-from-to.eml +18 -0
  63. data/test/{messages → fixtures}/missing-line.eml +0 -0
  64. data/test/fixtures/multi-part-2.eml +72 -0
  65. data/test/fixtures/multi-part.eml +61 -0
  66. data/test/fixtures/no-body.eml +18 -0
  67. data/test/fixtures/simple-message.eml +29 -0
  68. data/test/fixtures/text-attachments-with-charset.eml +46 -0
  69. data/test/fixtures/zimbra-quote-with-bottom-post.eml +27 -0
  70. data/test/gnupg_test_home/gpg.conf +3 -1
  71. data/test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key +0 -0
  72. data/test/gnupg_test_home/pubring.gpg +0 -0
  73. data/test/gnupg_test_home/receiver_pubring.gpg +0 -0
  74. data/test/gnupg_test_home/receiver_secring.gpg +0 -0
  75. data/test/gnupg_test_home/regen_keys.sh +89 -0
  76. data/test/gnupg_test_home/secring.gpg +0 -0
  77. data/test/gnupg_test_home/sup-test-2@foo.bar.asc +20 -17
  78. data/test/integration/test_maildir.rb +75 -0
  79. data/test/integration/test_mbox.rb +69 -0
  80. data/test/test_crypto.rb +14 -2
  81. data/test/test_header_parsing.rb +1 -1
  82. data/test/test_helper.rb +6 -3
  83. data/test/test_message.rb +115 -341
  84. data/test/test_messages_dir.rb +4 -28
  85. data/test/test_yaml_regressions.rb +1 -1
  86. data/test/unit/test_contact.rb +33 -0
  87. data/test/unit/test_locale_fiddler.rb +15 -0
  88. data/test/unit/test_person.rb +37 -0
  89. data/test/unit/util/test_query.rb +10 -4
  90. data/test/unit/util/test_string.rb +6 -0
  91. metadata +137 -53
  92. data/test/gnupg_test_home/receiver_trustdb.gpg +0 -0
  93. data/test/gnupg_test_home/trustdb.gpg +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d330a3455ed22952d8c45fce0f6a0d69346c40f2
4
- data.tar.gz: 337b95be43bc301f6180b542b2395df025f4f1db
2
+ SHA256:
3
+ metadata.gz: f073aae1fcb4d1c56fc300ed854e5edd398bddd078e073eeae2aede068122ae3
4
+ data.tar.gz: 8f5956c3305f5accb16de9ca57dd2ae370696c4e0f0cda18305af98a895338bf
5
5
  SHA512:
6
- metadata.gz: f538e3054ba742a5fadd296bcb6d29b0295e3ca807a0dfe600d908b3cfa9602697bd4e422ac5bde8facb603fe12784add4709ccc4f5ca9b7b76bf348cec3a6f3
7
- data.tar.gz: 1923d32e3cfc13998e52bc7c53b19482f6a4ed9b13d4e79880a1a6a16d926b26af2e6aaa73d1ea6556a6d2cdaf51aae1979afc51eff01697df9801dd787a45a3
6
+ metadata.gz: 1cb9c3e0de8d3a17936a47f7ba925f380d3b84303d7d132b581b4fd9f6d71887e9d7fe137d2f18ec4fbb898e81f59fac38c2396d911df233e98f2fc401b949cc
7
+ data.tar.gz: f24c2c5f0f95dc042f330d5d949b740ec0c29363f480d8f8fdcefb972b53ab41eb3f2255848c5437c0e32bbc177ad2e7559c421d0c2fafd861e1a91c037f9603
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  *~
5
5
  # artifact
6
6
  pkg/
7
+ man/
7
8
  *.gem
8
9
  # i have accidently added this one one too many times
9
10
  sup-exception-log.txt
@@ -14,4 +15,6 @@ Gemfile.lock
14
15
 
15
16
  # generated file for gnupg test
16
17
  test/gnupg_test_home/random_seed
17
-
18
+ test/gnupg_test_home/trustdb.gpg
19
+ test/gnupg_test_home/.gpg-v21-migrated
20
+ test/gnupg_test_home/openpgp-revocs.d
@@ -0,0 +1,3 @@
1
+ [submodule "doc/wiki"]
2
+ path = doc/wiki
3
+ url = https://github.com/sup-heliotrope/sup.wiki.git
@@ -1,12 +1,18 @@
1
1
  language: ruby
2
2
 
3
+ dist: focal
4
+
3
5
  rvm:
4
- - 2.1.1
5
- - 2.0.0
6
- - 1.9.3
6
+ - 2.5
7
+ - 2.6
8
+ - 2.7
7
9
 
8
10
  before_install:
9
- - sudo apt-get update -qq
10
- - sudo apt-get install -qq uuid-dev uuid libncursesw5-dev libncursesw5 gnupg2
11
+ - sudo apt update -qq
12
+ - sudo apt install -qq uuid-dev uuid libncursesw5-dev libncursesw5 gnupg2 pandoc
13
+ - git submodule update --init --recursive
14
+
15
+ script:
16
+ - bundle exec rake travis
17
+ - bundle exec gem install pkg/sup-*.gem
11
18
 
12
- script: bundle exec rake travis
@@ -3,29 +3,34 @@ Rich Lane
3
3
  Gaute Hope <eg at the gaute.vetsj dot coms>
4
4
  Whyme Lyu <callme5long at the gmail dot coms>
5
5
  Hamish Downer <dmishd at the gmail dot coms>
6
+ Zeger-Jan van de Weg <mail at the zjvandeweg dot nls>
6
7
  Damien Leone <damien.leone at the fensalir dot frs>
7
8
  Sascha Silbe <sascha-pgp at the silbe dot orgs>
8
9
  Eric Weikl <eric.weikl at the gmx dot nets>
9
10
  Paweł Wilk <siefca at the gnu dot orgs>
11
+ Matthieu Rakotojaona <matthieu.rakotojaona at the gmail dot coms>
10
12
  Ismo Puustinen <ismo at the iki dot fis>
13
+ Dan Callaghan <djc at the djc.id dot aus>
11
14
  Nicolas Pouillard <nicolas.pouillard at the gmail dot coms>
12
15
  Michael Stapelberg <michael at the stapelberg dot des>
13
16
  Eric Sherman <hyperbolist at the gmail dot coms>
14
17
  Tero Tilus <tero at the tilus dot nets>
15
18
  Ben Walton <bwalton at the artsci.utoronto dot cas>
19
+ Scott Bonds <scott at the ggr dot coms>
20
+ Iain Parris <ipv2.vcs at the parris dot orgs>
16
21
  Mike Stipicevic <stipim at the rpi dot edus>
17
22
  Martin Bähr <mbaehr at the societyserver dot orgs>
23
+ Timon Vonk <timonv at the gmail dot coms>
18
24
  Clint Byrum <clint at the ubuntu dot coms>
19
25
  Wael M. Nasreddine <wael.nasreddine at the gmail dot coms>
20
26
  Marcus Williams <marcus-sup at the bar-coded dot nets>
21
- Matthieu Rakotojaona <matthieu.rakotojaona at the gmail dot coms>
22
27
  Lionel Ott <white.magic at the gmx dot des>
28
+ Per Andersson <avtobiff at the gmail dot coms>
23
29
  Gaudenz Steinlin <gaudenz at the soziologie dot chs>
24
- Ingmar Vanhassel <ingmar at the exherbo dot orgs>
25
30
  Mark Alexander <marka at the pobox dot coms>
31
+ Ingmar Vanhassel <ingmar at the exherbo dot orgs>
26
32
  Edward Z. Yang <ezyang at the mit dot edus>
27
- Timon Vonk <timonv at the gmail dot coms>
28
- julien@macbook <julien.stechele at the gmail dot coms>
33
+ julien at the macbook <julien.stechele at the gmail dot coms>
29
34
  Christopher Warrington <chrisw at the rice dot edus>
30
35
  W. Trevor King <wking at the drexel dot edus>
31
36
  Richard Brown <rbrown at the exherbo dot orgs>
@@ -37,8 +42,8 @@ Markus Klinik
37
42
  Bo Borgerson <gigabo at the gmail dot coms>
38
43
  Atte Kojo <atte.kojo at the reaktor dot fis>
39
44
  Michael Hamann <michael at the content-space dot des>
40
- William Erik Baxter <web at the superscript dot coms>
41
45
  Jonathan Lassoff <jof at the thejof dot coms>
46
+ William Erik Baxter <web at the superscript dot coms>
42
47
  Grant Hollingworth <grant at the antiflux dot orgs>
43
48
  Ico Doornekamp <ico at the pruts dot nls>
44
49
  Adeodato Simó <dato at the net.com.org dot ess>
@@ -48,6 +53,7 @@ Jason Petsod
48
53
  Robin Burchell <viroteck at the viroteck dot nets>
49
54
  Steve Goldman <sgoldman at the tower-research dot coms>
50
55
  Peter Harkins <ph at the malaprop dot orgs>
56
+ rjg-vB <rthrd at the web dot des>
51
57
  Decklin Foster <decklin at the red-bean dot coms>
52
58
  Cameron Matheson <cam+sup at the cammunism dot orgs>
53
59
  Carl Worth <cworth at the cworth dot orgs>
@@ -56,29 +62,37 @@ Andrew Pimlott
56
62
  Jeff Balogh <its.jeff.balogh at the gmail dot coms>
57
63
  Matías Aguirre <matiasaguirre at the gmail dot coms>
58
64
  PaulSmecker <paul.smecker at the gmail dot coms>
65
+ Ruthard Baudach <rthrd at the web dot des>
66
+ Vickenty Fesunov <kent at the setattr dot nets>
59
67
  Kornilios Kourtis <kkourt at the cslab.ece.ntua dot grs>
68
+ Antoni Kaniowski <a at the generativestuff dot coms>
60
69
  Lars Fischer <fischer at the wiwi.uni-siegen dot des>
70
+ Sharif Olorin <sio at the tesser dot orgs>
71
+ Steven Lawrance <stl at the koffein dot nets>
61
72
  madhat2r <MaDhAt2r at the dukefoo dot coms>
62
- Giorgio Lando <patroclo7 at the gmail dot coms>
63
73
  Kevin Riggle <kevinr at the free-dissociation dot coms>
74
+ Giorgio Lando <patroclo7 at the gmail dot coms>
64
75
  Benoît PIERRE <benoit.pierre at the gmail dot coms>
76
+ Seva Zhidkov <zhidkovseva at the gmail dot coms>
65
77
  Alvaro Herrera <alvherre at the alvh.no-ip dot orgs>
66
- Steven Lawrance <stl at the koffein dot nets>
67
78
  Jonah <Jonah at the GoodCoffee dot cas>
68
79
  ian <itaylor at the uark dot edus>
69
- Adam Lloyd <adam at the alloy-d dot nets>
80
+ Simon Tatham <anakin at the pobox dot coms>
81
+ Elias Norberg <xyzzy at the kudzu dot ses>
82
+ 0xACE <0xACE at the users.noreply.github dot coms>
70
83
  MichaelRevell <mikearevell at the gmail dot coms>
71
84
  Gregor Hoffleit <gregor at the sam.mediasupervision dot des>
85
+ Adam Lloyd <adam at the alloy-d dot nets>
72
86
  Todd Eisenberger <teisenbe at the andrew.cmu dot edus>
73
- Per Andersson <avtobiff at the gmail dot coms>
74
- 0xACE <0xACE at the users.noreply.github dot coms>
87
+ Johannes Larsen <mail at the johslarsen dot nets>
75
88
  Steven Schmeiser <steven at the schmeiser dot orgs>
76
89
  Steven Walter <swalter at the monarch.(none)>
77
- Jon M. Dugan <jdugan at the es dot nets>
78
- akojo <atte.kojo at the gmail dot coms>
79
- Matthias Vallentin <vallentin at the icir dot orgs>
90
+ Michael Dwyer <mdwyer at the michaelmdwyer dot coms>
91
+ Kyle Hunt <Kyle_Hunt at the ymail dot coms>
80
92
  William A. Kennington III <william at the wkennington dot coms>
93
+ akojo <atte.kojo at the gmail dot coms>
81
94
  Horacio Sanson <horacio at the skillupjapan.co dot jps>
95
+ Matthias Vallentin <vallentin at the icir dot orgs>
96
+ Jon M. Dugan <jdugan at the es dot nets>
82
97
  Stefan Lundström <lundst at the snabb.(none)>
83
- Johannes Larsen <johs.a.larsen at the gmail dot coms>
84
98
  Kirill Smelkov <kirr at the landau.phys.spbu dot rus>
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source 'https://rubygems.org/'
2
2
 
3
+ if !RbConfig::CONFIG['arch'].include?('openbsd')
4
+ # update version in ext/mkrf_conf_xapian.rb as well.
5
+ gem 'xapian-ruby', '~> 1.2'
6
+ end
7
+
3
8
  gemspec
@@ -1,3 +1,95 @@
1
+ == 0.23 / 2020-07-10
2
+
3
+ * #505: Shell metacharacters in attachment filenames are no longer escaped when
4
+ saving the attachment to disk using 's'. Fixes attachments being saved with
5
+ unnecessary \ escapes in their filename. (Felix Van der Jeugt)
6
+ * When saving attachments, Sup now creates all parent directories of the
7
+ destination path. (Matthieu Rakotojaona)
8
+ * The '@' key now reloads all messages in thread view. (Seva Zhidkov)
9
+ * #517: The 'g' key now correctly opens each selected URL if multiple URLs are
10
+ under the cursor, instead of opening the last URL multiple times.
11
+ (Matthieu Rakotojaona)
12
+ * The 'g' key now works when the cursor is over a URL inside a signature block.
13
+ (Michael Dwyer)
14
+ * The 'reply-to' hook is now passed a 'message' variable, the message being
15
+ replied to, so that the hook can choose the reply mode based on properties of
16
+ the message like the list address. (Simon Tatham)
17
+ * The contacts list now shows also email addresses supplied by the
18
+ 'extra-contract-addresses' hook. (Matthieu Rakotojaona)
19
+ * #510: The micalg= parameter is now set correctly when sending
20
+ multipart/signed messages. Fixes issues with other mail clients which fail to
21
+ handle a missing micalg= parameter on signed messages. (Dan Callaghan)
22
+ * Attachments with text/plain MIME type are now correctly decoded according to
23
+ their charset= parameter. (Dan Callaghan)
24
+ * Strings returned by the 'mime-decode' hook are now kept in their original
25
+ encoding and displayed as is, instead of being wrongly transcoded.
26
+ (Dan Callaghan)
27
+ * Rendering speed of thread list views is improved. (Vickenty Fesunov)
28
+ * Fixed display width calculation for emoji. Previously, sender names and
29
+ thread subjects using emoji would be incorrectly truncated, if the terminal
30
+ emulator displays emoji as double-width. (Dan Callaghan)
31
+ * List address is parsed from the non-standard Mailing-List header used by
32
+ Groups.io. (Dan Callaghan)
33
+ * Fixed misinterpretation of quoted text where the quote uses both an
34
+ "---- Original Message ----" marker and > delimiters, for example from
35
+ Zimbra users. (Steven Lawrance)
36
+ * Added a new option 'indent_spaces' in config.yaml, to control the number of
37
+ spaces for indenting each child message when displaying the thread view.
38
+ The default remains 2. (Antoni Kaniowski)
39
+ * Attachment sizes are now displayed using standard unit abbreviations like
40
+ "MiB". (Sharif Olorin)
41
+ * Sup now gives a hint if a search query results in an empty search after
42
+ tokenization (for example, if the user tries to search for only punctuation).
43
+ (Per Andersson)
44
+ * The --list-hooks option now takes an additional option --hooks-matching, to
45
+ filter the listed hooks. (Matthieu Rakotojaona)
46
+ * Fixed ArgumentError in logging methods on Ruby 2.7. (Dan Callaghan)
47
+ * Fixed FrozenError in verified_ok? method on Ruby 2.7. (Iain Parris)
48
+ * Fixed Fixnum deprecation warnings on Ruby 2.4+. (Dan Callaghan)
49
+ * Several dependency version updates. The optimist gem replaces trollop. The
50
+ unicode-display_width gem is a new dependency.
51
+
52
+ == 0.22.1 / 2015-06-18
53
+
54
+ * Fix bug (#429) in gem build / install.
55
+
56
+ == 0.22.0 / 2015-06-16
57
+
58
+ * Use mime-types 2
59
+ * Fix ruby style (Zeger-Jan van de Weg)
60
+ * Johannes Larsen: fix long-standing bug with draft-id mixups causing
61
+ drafts to disappear.
62
+ * Various bugs and minor improvements.
63
+
64
+ == 0.21.0 / 2015-02-12
65
+
66
+ * Key binding to fetch GPG key from keyserver (Matthieu Rakotojaona)
67
+ * Replace occurences of File.exists? with File.exist? (Zeger-Jan van de
68
+ Weg)
69
+ * You can now unsubscribe from mailinglists using an url, if you have a
70
+ goto-hook setup (Timon Vonk).
71
+ * Forward attribution can be customized using the forward-attribution
72
+ hook (Ruthard Baudach)
73
+ * Do a few more checks for buffer not nil in the hope to fix a few
74
+ random crashes
75
+ * Add bash completion (Per Andersson)
76
+ * Replace dl/import with Fiddle (Timon Vonk)
77
+ * Drop support for ruby 1.9.3
78
+ * Add tests for contact manager and persons (Zeger-Jan van de Weg)
79
+
80
+ == 0.20.0 / 2014-10-06
81
+
82
+ * add man-pages (generated from wiki) (Per Andersson)!
83
+ * HTML messages or messages that are decoded with the mime-decode hook
84
+ are now indexed if the mime-decode hook is set up (Scott Bonds).
85
+ * OpenBSD support (Scott Bonds)!
86
+ * goto-hook for keybinding to open URLs.
87
+ * support special charaters in source URIs (Scott Bonds).
88
+ * output message id and locations on all load_from_source failures
89
+ * fix long-standing getlocal bug
90
+ * make new test GPG keys (old ones expired), valid for one year, script
91
+ now available in devel/ for making new ones.
92
+
1
93
  == 0.19.0 / 2014-07-05
2
94
 
3
95
  * new check-attachment hook
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Sup
2
2
 
3
- A console-based email client with the best features of GMail, mutt and
4
- Emacs.
3
+ Sup is a console-based email client for people with a lot of email.
4
+
5
+ <img src="https://sup-heliotrope.github.io/images/old_screenshot_1.png" />
5
6
 
6
7
  ## Installation
7
8
 
@@ -30,20 +31,40 @@ Current limitations:
30
31
 
31
32
  ## Problems
32
33
 
33
- Please report bugs to the [Github issue tracker](https://github.com/sup-heliotrope/sup/issues).
34
+ Please report bugs to the [GitHub issue tracker](https://github.com/sup-heliotrope/sup/issues).
34
35
 
35
36
  ## Links
36
37
 
37
- * [Homepage](http://supmua.org/)
38
+ * [Homepage](https://sup-heliotrope.github.io/)
38
39
  * [Code repository](https://github.com/sup-heliotrope/sup)
39
40
  * [Wiki](https://github.com/sup-heliotrope/sup/wiki)
40
41
  * IRC: [#sup @ freenode.net](http://webchat.freenode.net/?channels=#sup)
41
42
  * Mailing list: supmua@googlegroups.com (subscribe: supmua+subscribe@googlegroups.com, archive: https://groups.google.com/d/forum/supmua )
42
43
 
44
+ ## Maintenance status
45
+
46
+ Sup is a mature, production-quality mail client. The maintainers are also
47
+ long-term users, and mainly focus on preserving the current feature set. Pull
48
+ requests are very welcome, especially to fix bugs or improve compatibility,
49
+ however pull requests for major new features are unlikely to be merged.
50
+
51
+ ## Alternatives
52
+
53
+ If Sup is missing a feature you are interested in, it might be possible to
54
+ accomplish using Sup's [powerful hooks mechanism][hooks]. Otherwise, here are
55
+ some alternatives to consider:
56
+
57
+ * [Notmuch](https://notmuchmail.org/) was inspired by Sup. There are a wide
58
+ variety of [Notmuch clients](https://notmuchmail.org/frontends/) available.
59
+ The most similar to Sup's look-and-feel is
60
+ [Alot](https://github.com/pazz/alot) &mdash; also a curses-based frontend.
61
+ Alot even ships with a built-in
62
+ [Sup theme](https://github.com/pazz/alot/blob/master/extra/themes/sup)!
63
+
43
64
  ## License
44
65
 
45
66
  ```
46
- Copyright (c) 2013 Sup developers.
67
+ Copyright (c) 2013-- Sup developers.
47
68
  Copyright (c) 2006--2009 William Morgan.
48
69
 
49
70
  This program is free software; you can redistribute it and/or
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- require 'rubygems'
2
1
  require 'rake/testtask'
3
2
  require "bundler/gem_tasks"
4
3
 
@@ -9,4 +8,45 @@ Rake::TestTask.new(:test) do |test|
9
8
  end
10
9
  task :default => :test
11
10
 
11
+ task :build => [:man]
12
12
  task :travis => [:test, :build]
13
+
14
+ def test_pandoc
15
+ return system("pandoc -v > /dev/null 2>&1")
16
+ end
17
+
18
+ task :man do
19
+ puts "building manpages from wiki.."
20
+ unless test_pandoc
21
+ puts "no pandoc installed, needed for manpage generation."
22
+ return
23
+ end
24
+
25
+ # test if wiki is cloned
26
+ unless Dir.exist? 'doc/wiki/man'
27
+ puts "wiki git repository is not cloned in doc/wiki, try: git submodule update --init."
28
+ return
29
+ end
30
+
31
+ unless Dir.exist? 'man'
32
+ Dir.mkdir 'man'
33
+ end
34
+
35
+ Dir.glob("doc/wiki/man/*.md").each do |md|
36
+ m = /^.*\/(?<manpage>[^\/]*)\.md$/.match(md)[:manpage]
37
+ puts "generating manpage for: #{m}.."
38
+ r = system "pandoc -s -f markdown -t man #{md} -o man/#{m}"
39
+
40
+ unless r
41
+ puts "failed to generate manpage: #{m}."
42
+ return
43
+ end
44
+ end
45
+ end
46
+
47
+ task :clean do
48
+ ['man', 'pkg'].each do |d|
49
+ puts "cleaning #{d}.."
50
+ FileUtils.rm_r d if Dir.exist? d
51
+ end
52
+ end
@@ -1,3 +1,20 @@
1
+ Release 0.21.0:
2
+
3
+ Several small features as well as polishing (including fetching a GPG key with
4
+ a shortcut and unsubscribing from mailinglist using an url). Several old
5
+ deprecated parts of sup have been modernized. Support for Ruby 1.9.3 has been
6
+ dropped. Have a look in History.txt for the details.
7
+
8
+ Release 0.20.0:
9
+
10
+ We've got man pages (Mr. Andersson)! We've got OpenBSD support (Scott Bonds)!
11
+ It is now possible to get your HTML emails indexed by setting up a mime-decode
12
+ hook before you index (Scott Bonds)! Scott Bonds also fixed up special character handing in source URIs. It is now possible to set up a goto hook
13
+ for opening the URL below the cursor.
14
+
15
+ Also a few long standing bugs have been fixed, and new GPG keys have been made
16
+ for the tests.
17
+
1
18
  Release 0.19.0:
2
19
 
3
20
  New hook: check-attachment and a new option to shows dates in 24h format.
data/bin/sup CHANGED
@@ -3,10 +3,11 @@
3
3
 
4
4
  $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
5
5
 
6
- require 'rubygems'
7
6
  require 'ncursesw'
8
7
 
9
8
  require 'sup/util/ncurses'
9
+ require 'sup/util/locale_fiddler'
10
+ require 'sup/util/axe'
10
11
 
11
12
  no_gpgme = false
12
13
  begin
@@ -16,7 +17,7 @@ rescue LoadError
16
17
  end
17
18
 
18
19
  require 'fileutils'
19
- require 'trollop'
20
+ require 'optimist'
20
21
  require "sup"
21
22
 
22
23
  if ENV['SUP_PROFILE']
@@ -28,7 +29,7 @@ if no_gpgme
28
29
  info "No 'gpgme' gem detected. Install it for email encryption, decryption and signatures."
29
30
  end
30
31
 
31
- $opts = Trollop::options do
32
+ $opts = Optimist::options do
32
33
  version "sup v#{Redwood::VERSION}"
33
34
  banner <<EOS
34
35
  Sup is a curses-based email client.
@@ -38,7 +39,8 @@ Usage:
38
39
 
39
40
  Options are:
40
41
  EOS
41
- opt :list_hooks, "List all hooks and descriptions, and quit."
42
+ opt :list_hooks, "List all hooks and descriptions, and quit. Use --hooks-matching to filter."
43
+ opt :hooks_matching, "If given, list all hooks and descriptions matching the given pattern. Needs the --list-hooks option", short: "m", default: ""
42
44
  opt :no_threads, "Turn off threading. Helps with debugging. (Necessarily disables background polling for new messages.)"
43
45
  opt :no_initial_poll, "Don't poll for new messages when starting."
44
46
  opt :search, "Search for this query upon startup", :type => String
@@ -46,7 +48,7 @@ EOS
46
48
  opt :subject, "When composing, use this subject", :type => String, :short => "j"
47
49
  end
48
50
 
49
- Trollop::die :subject, "requires --compose" if $opts[:subject] && !$opts[:compose]
51
+ Optimist::die :subject, "requires --compose" if $opts[:subject] && !$opts[:compose]
50
52
 
51
53
  Redwood::HookManager.register "startup", <<EOS
52
54
  Executes at startup
@@ -64,7 +66,7 @@ EOS
64
66
 
65
67
  if $opts[:list_hooks]
66
68
  Redwood.start
67
- Redwood::HookManager.print_hooks
69
+ Redwood::HookManager.print_hooks $opts[:hooks_matching]
68
70
  exit
69
71
  end
70
72
 
@@ -102,27 +104,14 @@ global_keymap = Keymap.new do |k|
102
104
  end
103
105
  end
104
106
 
105
- ## the following magic enables wide characters when used with a ruby
106
- ## ncurses.so that's been compiled against libncursesw. (note the w.) why
107
- ## this works, i have no idea. much like pretty much every aspect of
108
- ## dealing with curses. cargo cult programming at its best.
109
- require 'dl/import'
110
107
  require 'rbconfig'
111
- module LibC
112
- extend DL.const_defined?(:Importer) ? DL::Importer : DL::Importable
113
- setlocale_lib = case RbConfig::CONFIG['arch']
114
- when /darwin/; "libc.dylib"
115
- when /cygwin/; "cygwin1.dll"
116
- when /freebsd/; "libc.so.7"
117
- else; "libc.so.6"
118
- end
119
108
 
120
- debug "dynamically loading setlocale() from #{setlocale_lib}"
109
+ unless RbConfig::CONFIG['arch'] =~ /openbsd/
110
+ debug "dynamically loading setlocale()"
121
111
  begin
122
- dlload setlocale_lib
123
- extern "void setlocale(int, const char *)"
112
+ class LibC; extend LocaleFiddler; end
124
113
  debug "setting locale..."
125
- LibC.setlocale(6, "") # LC_ALL == 6
114
+ LibC.setlocale(6, "")
126
115
  rescue RuntimeError => e
127
116
  warn "cannot dlload setlocale(); ncurses wide character support probably broken."
128
117
  warn "dlload error was #{e.class}: #{e.message}"