hoe 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +28 -17
 - data/lib/hoe.rb +118 -34
 - data/test/test_hoe.rb +1 -0
 - metadata +3 -3
 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,4 +1,15 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            === 1.3.0 / 2007-08-13
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * 1 major enhancement:
         
     | 
| 
      
 4 
     | 
    
         
            +
              * Hoe now builds signed gems automatically.  Run the generate_key task to
         
     | 
| 
      
 5 
     | 
    
         
            +
                automatically create a signing key.
         
     | 
| 
      
 6 
     | 
    
         
            +
            * 4 minor enhancements:
         
     | 
| 
      
 7 
     | 
    
         
            +
              * Extended rdoc pattern to include ext dirs.
         
     | 
| 
      
 8 
     | 
    
         
            +
              * Fixed dependency adding for versionless dependencies.
         
     | 
| 
      
 9 
     | 
    
         
            +
              * Added NODOT env var to disable RDoc diagram generation.
         
     | 
| 
      
 10 
     | 
    
         
            +
              * The config_hoe task automatically merges in new config entries.
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            === 1.2.2 / 2007-07-23
         
     | 
| 
       2 
13 
     | 
    
         | 
| 
       3 
14 
     | 
    
         
             
            * 2 minor enhancement:
         
     | 
| 
       4 
15 
     | 
    
         
             
              * Added exclude parameter for check_manifest filtering to .hoerc.
         
     | 
| 
         @@ -6,7 +17,7 @@ 
     | 
|
| 
       6 
17 
     | 
    
         
             
            * 1 bug fix:
         
     | 
| 
       7 
18 
     | 
    
         
             
              * Various (untested) fixes for windows compatibility.
         
     | 
| 
       8 
19 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 20 
     | 
    
         
            +
            === 1.2.1 / 2007-05-21
         
     | 
| 
       10 
21 
     | 
    
         | 
| 
       11 
22 
     | 
    
         
             
            * 8 minor enhancements:
         
     | 
| 
       12 
23 
     | 
    
         
             
              * Allow for spaces in filenames in manifest. Thanks to Aaron Patterson.
         
     | 
| 
         @@ -20,14 +31,14 @@ 
     | 
|
| 
       20 
31 
     | 
    
         
             
            * 1 bug fixes:
         
     | 
| 
       21 
32 
     | 
    
         
             
              * Fixed executables regexp to /^bin/.
         
     | 
| 
       22 
33 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
            === 1.2.0 / 2007-02-13
         
     | 
| 
       24 
35 
     | 
    
         | 
| 
       25 
36 
     | 
    
         
             
            * Added more support for ext dirs.
         
     | 
| 
       26 
37 
     | 
    
         
             
            * Added a simple config file (yaml). Use 'rake config_hoe' to edit.
         
     | 
| 
       27 
38 
     | 
    
         
             
            * Added post_blog task (thanks Aaron!), configured via config_hoe.
         
     | 
| 
       28 
39 
     | 
    
         
             
            * Announce task now posts to your blogs and/or publishes API depending on config.
         
     | 
| 
       29 
40 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 41 
     | 
    
         
            +
            === 1.1.7 / 2007-01-10
         
     | 
| 
       31 
42 
     | 
    
         | 
| 
       32 
43 
     | 
    
         
             
            * extra_deps is now self-healing, and ensures no (direct) cycles.
         
     | 
| 
       33 
44 
     | 
    
         
             
            * cleans check_manifest for CVS projects.
         
     | 
| 
         @@ -35,22 +46,22 @@ 
     | 
|
| 
       35 
46 
     | 
    
         
             
            * Now uses rsync for publish_docs. YAY for fast!
         
     | 
| 
       36 
47 
     | 
    
         
             
            * Bug #7193 fix spelling of 'synopsys'.  Submitted by Jacob Atzen.
         
     | 
| 
       37 
48 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
            === 1.1.6 / 2006-11-29
         
     | 
| 
       39 
50 
     | 
    
         | 
| 
       40 
51 
     | 
    
         
             
            * Fix release to work correctly with need_zip and need_tar.
         
     | 
| 
       41 
52 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 53 
     | 
    
         
            +
            === 1.1.5 / 2006-11-29
         
     | 
| 
       43 
54 
     | 
    
         | 
| 
       44 
55 
     | 
    
         
             
            * Reduced check_manifest dependencies to just diff for windows.
         
     | 
| 
       45 
56 
     | 
    
         
             
            * Don't use default author in summary, description or changes.
         
     | 
| 
       46 
57 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
            === 1.1.4 / 2006-11-12
         
     | 
| 
       48 
59 
     | 
    
         | 
| 
       49 
60 
     | 
    
         
             
            * Added need_tar and need_zip to customize package requirements. Stupid windoze.
         
     | 
| 
       50 
61 
     | 
    
         
             
            * Extended spec_extras to take procs as values. Passes in named parameter.
         
     | 
| 
       51 
62 
     | 
    
         
             
            * Removed test from require_paths. I thought I already parameterized this. :/
         
     | 
| 
       52 
63 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 64 
     | 
    
         
            +
            === 1.1.3 / 2006-11-09
         
     | 
| 
       54 
65 
     | 
    
         | 
| 
       55 
66 
     | 
    
         
             
            * Added test_deps, now you can automatically discover test dependency ommisions.
         
     | 
| 
       56 
67 
     | 
    
         
             
            * Added ext support! Build C extensions with hoe!
         
     | 
| 
         @@ -59,7 +70,7 @@ 
     | 
|
| 
       59 
70 
     | 
    
         
             
            * Fixed doco and automated updating of it.
         
     | 
| 
       60 
71 
     | 
    
         
             
            * Added rdoc_pattern. Go doco go!
         
     | 
| 
       61 
72 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
            === 1.1.2 / 2006-10-22
         
     | 
| 
       63 
74 
     | 
    
         | 
| 
       64 
75 
     | 
    
         
             
            * Added -d and -t flags to sow to make dev or trunk subdirs for p4 and svn projects.
         
     | 
| 
       65 
76 
     | 
    
         
             
            * Added install_gem to further test gem builds.
         
     | 
| 
         @@ -67,17 +78,17 @@ 
     | 
|
| 
       67 
78 
     | 
    
         
             
            * Removed demo.rb from clean_globs. I'm torn on this one.
         
     | 
| 
       68 
79 
     | 
    
         
             
            * Fixed bug in install rule.
         
     | 
| 
       69 
80 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 81 
     | 
    
         
            +
            === 1.1.1 / 2006-10-11
         
     | 
| 
       71 
82 
     | 
    
         | 
| 
       72 
83 
     | 
    
         
             
            * Fixed minor problem with subject of email.
         
     | 
| 
       73 
84 
     | 
    
         
             
            * Fixed problem in test.
         
     | 
| 
       74 
85 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
            === 1.1.0 / 2006-10-04
         
     | 
| 
       76 
87 
     | 
    
         | 
| 
       77 
88 
     | 
    
         
             
            * Added sow, a command-line tool for quickly creating new projects.
         
     | 
| 
       78 
89 
     | 
    
         
             
            * Added check_manifest task
         
     | 
| 
       79 
90 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
      
 91 
     | 
    
         
            +
            === 1.0.5 / 2006-10-03
         
     | 
| 
       81 
92 
     | 
    
         | 
| 
       82 
93 
     | 
    
         
             
            * Doco cleanup.
         
     | 
| 
       83 
94 
     | 
    
         
             
            * Removed Manifest.txt from rdoc and added title.
         
     | 
| 
         @@ -88,11 +99,11 @@ 
     | 
|
| 
       88 
99 
     | 
    
         
             
            * Added email and rubyforge news announcement tasks.
         
     | 
| 
       89 
100 
     | 
    
         
             
            * Url attribute may now be an array of urls.
         
     | 
| 
       90 
101 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
      
 102 
     | 
    
         
            +
            === 1.0.4 / 2006-09-23
         
     | 
| 
       92 
103 
     | 
    
         | 
| 
       93 
104 
     | 
    
         
             
            * Damnit... I messed up. There is no rubygems gem to be dependent upon. Duh.
         
     | 
| 
       94 
105 
     | 
    
         | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
      
 106 
     | 
    
         
            +
            === 1.0.3 / 2006-09-23
         
     | 
| 
       96 
107 
     | 
    
         | 
| 
       97 
108 
     | 
    
         
             
            * Added debug_gem rule.
         
     | 
| 
       98 
109 
     | 
    
         
             
            * Added lots of doco.
         
     | 
| 
         @@ -105,12 +116,12 @@ 
     | 
|
| 
       105 
116 
     | 
    
         
             
            * Renamed upload to publish_docs.
         
     | 
| 
       106 
117 
     | 
    
         
             
            * publish_docs is now smart about subprojects and missing subdirectories.
         
     | 
| 
       107 
118 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
      
 119 
     | 
    
         
            +
            === 1.0.2 / 2006-09-20
         
     | 
| 
       109 
120 
     | 
    
         | 
| 
       110 
121 
     | 
    
         
             
            * Wee little tests.
         
     | 
| 
       111 
122 
     | 
    
         
             
            * Fixed up gemspec's require_paths.
         
     | 
| 
       112 
123 
     | 
    
         | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
      
 124 
     | 
    
         
            +
            === 1.0.1 / 2006-09-20
         
     | 
| 
       114 
125 
     | 
    
         | 
| 
       115 
126 
     | 
    
         
             
            * Finally got deployment straightened out. Maybe. Some might be on rubyforge.org.
         
     | 
| 
       116 
127 
     | 
    
         
             
            * Added default description and summary.
         
     | 
| 
         @@ -118,6 +129,6 @@ 
     | 
|
| 
       118 
129 
     | 
    
         
             
            * Improved gemspec debugging.
         
     | 
| 
       119 
130 
     | 
    
         
             
            * Swapped gem with tgz in deploy... we'd rather screw up on tgz
         
     | 
| 
       120 
131 
     | 
    
         | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
      
 132 
     | 
    
         
            +
            === 1.0.0 / 2006-09-19
         
     | 
| 
       122 
133 
     | 
    
         | 
| 
       123 
134 
     | 
    
         
             
            * Birthday!
         
     | 
    
        data/lib/hoe.rb
    CHANGED
    
    | 
         @@ -8,6 +8,7 @@ require 'rake/rdoctask' 
     | 
|
| 
       8 
8 
     | 
    
         
             
            require 'rake/testtask'
         
     | 
| 
       9 
9 
     | 
    
         
             
            require 'rbconfig'
         
     | 
| 
       10 
10 
     | 
    
         
             
            require 'rubyforge'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
            ##
         
     | 
| 
       13 
14 
     | 
    
         
             
            # hoe - a tool to help rake
         
     | 
| 
         @@ -64,12 +65,39 @@ require 'rubyforge' 
     | 
|
| 
       64 
65 
     | 
    
         
             
            # exclude::             A regular expression of files to exclude from
         
     | 
| 
       65 
66 
     | 
    
         
             
            #                       +check_manifest+.
         
     | 
| 
       66 
67 
     | 
    
         
             
            # publish_on_announce:: Run +publish_docs+ when you run +release+.
         
     | 
| 
      
 68 
     | 
    
         
            +
            # signing_key_file:: Signs your gems with this private key.
         
     | 
| 
      
 69 
     | 
    
         
            +
            # signing_cert_file:: Signs your gem with this certificate.
         
     | 
| 
       67 
70 
     | 
    
         
             
            # blogs::               An array of hashes of blog settings.
         
     | 
| 
       68 
71 
     | 
    
         
             
            #
         
     | 
| 
       69 
72 
     | 
    
         
             
            # Run +config_hoe+ and see ~/.hoerc for examples.
         
     | 
| 
       70 
73 
     | 
    
         
             
            #
         
     | 
| 
      
 74 
     | 
    
         
            +
            # === Signing Gems:
         
     | 
| 
      
 75 
     | 
    
         
            +
            #
         
     | 
| 
      
 76 
     | 
    
         
            +
            # Run the 'generate_key' task.  This will:
         
     | 
| 
      
 77 
     | 
    
         
            +
            #
         
     | 
| 
      
 78 
     | 
    
         
            +
            # 1. Configure your ~/.hoerc.
         
     | 
| 
      
 79 
     | 
    
         
            +
            # 2. Generate a signing key and certificate.
         
     | 
| 
      
 80 
     | 
    
         
            +
            # 3. Install the private key and public certificate files into ~/.gem.
         
     | 
| 
      
 81 
     | 
    
         
            +
            # 4. Upload the certificate to RubyForge.
         
     | 
| 
      
 82 
     | 
    
         
            +
            #
         
     | 
| 
      
 83 
     | 
    
         
            +
            # Hoe will now generate signed gems when the package task is run.  If you have
         
     | 
| 
      
 84 
     | 
    
         
            +
            # multiple machines you build gems on, be sure to install your key and
         
     | 
| 
      
 85 
     | 
    
         
            +
            # certificate on each machine.
         
     | 
| 
      
 86 
     | 
    
         
            +
            #
         
     | 
| 
      
 87 
     | 
    
         
            +
            # Keep your private key secret!  Keep your private key safe!
         
     | 
| 
      
 88 
     | 
    
         
            +
            #
         
     | 
| 
      
 89 
     | 
    
         
            +
            # To make sure your gems are signed run:
         
     | 
| 
      
 90 
     | 
    
         
            +
            #
         
     | 
| 
      
 91 
     | 
    
         
            +
            #   rake package; tar tf pkg/yourproject-1.2.3.gem
         
     | 
| 
      
 92 
     | 
    
         
            +
            #
         
     | 
| 
      
 93 
     | 
    
         
            +
            # If your gem is signed you will see:
         
     | 
| 
      
 94 
     | 
    
         
            +
            #
         
     | 
| 
      
 95 
     | 
    
         
            +
            #   data.tar.gz
         
     | 
| 
      
 96 
     | 
    
         
            +
            #   data.tar.gz.sig
         
     | 
| 
      
 97 
     | 
    
         
            +
            #   metadata.gz
         
     | 
| 
      
 98 
     | 
    
         
            +
            #   metadata.gz.sig
         
     | 
| 
       71 
99 
     | 
    
         
             
            class Hoe
         
     | 
| 
       72 
     | 
    
         
            -
              VERSION = '1. 
     | 
| 
      
 100 
     | 
    
         
            +
              VERSION = '1.3.0'
         
     | 
| 
       73 
101 
     | 
    
         | 
| 
       74 
102 
     | 
    
         
             
              ruby_prefix = Config::CONFIG['prefix']
         
     | 
| 
       75 
103 
     | 
    
         
             
              sitelibdir = Config::CONFIG['sitelibdir']
         
     | 
| 
         @@ -243,7 +271,7 @@ class Hoe 
     | 
|
| 
       243 
271 
     | 
    
         
             
                self.extra_deps = []
         
     | 
| 
       244 
272 
     | 
    
         
             
                self.need_tar = true
         
     | 
| 
       245 
273 
     | 
    
         
             
                self.need_zip = false
         
     | 
| 
       246 
     | 
    
         
            -
                self.rdoc_pattern = /^(lib|bin)|txt$/
         
     | 
| 
      
 274 
     | 
    
         
            +
                self.rdoc_pattern = /^(lib|bin|ext)|txt$/
         
     | 
| 
       247 
275 
     | 
    
         
             
                self.remote_rdoc_dir = name
         
     | 
| 
       248 
276 
     | 
    
         
             
                self.rsync_args = '-av --delete'
         
     | 
| 
       249 
277 
     | 
    
         
             
                self.rubyforge_name = name.downcase
         
     | 
| 
         @@ -259,9 +287,8 @@ class Hoe 
     | 
|
| 
       259 
287 
     | 
    
         
             
                  'rubyforge' => ">= #{::RubyForge::VERSION}",
         
     | 
| 
       260 
288 
     | 
    
         
             
                }
         
     | 
| 
       261 
289 
     | 
    
         | 
| 
       262 
     | 
    
         
            -
                self.extra_deps = Array(extra_deps)  
     | 
| 
       263 
     | 
    
         
            -
             
     | 
| 
       264 
     | 
    
         
            -
                  extra_deps.empty? or Array === extra_deps.first
         
     | 
| 
      
 290 
     | 
    
         
            +
                self.extra_deps = Array(extra_deps).map { |o| String === o ? [o] : o }
         
     | 
| 
      
 291 
     | 
    
         
            +
             
     | 
| 
       265 
292 
     | 
    
         
             
                if name == 'hoe' then
         
     | 
| 
       266 
293 
     | 
    
         
             
                  hoe_deps.each do |pkg, version|
         
     | 
| 
       267 
294 
     | 
    
         
             
                    extra_deps << [pkg, version]
         
     | 
| 
         @@ -274,6 +301,13 @@ class Hoe 
     | 
|
| 
       274 
301 
     | 
    
         
             
              end
         
     | 
| 
       275 
302 
     | 
    
         | 
| 
       276 
303 
     | 
    
         
             
              def define_tasks # :nodoc:
         
     | 
| 
      
 304 
     | 
    
         
            +
                def with_config # :nodoc:
         
     | 
| 
      
 305 
     | 
    
         
            +
                  rc = File.expand_path("~/.hoerc")
         
     | 
| 
      
 306 
     | 
    
         
            +
                  exists = File.exist? rc
         
     | 
| 
      
 307 
     | 
    
         
            +
                  config = exists ? YAML.load_file(rc) : {}
         
     | 
| 
      
 308 
     | 
    
         
            +
                  yield(config, rc)
         
     | 
| 
      
 309 
     | 
    
         
            +
                end
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
       277 
311 
     | 
    
         
             
                desc 'Run the default tasks'
         
     | 
| 
       278 
312 
     | 
    
         
             
                task :default => :test
         
     | 
| 
       279 
313 
     | 
    
         | 
| 
         @@ -301,6 +335,18 @@ class Hoe 
     | 
|
| 
       301 
335 
     | 
    
         
             
                ############################################################
         
     | 
| 
       302 
336 
     | 
    
         
             
                # Packaging and Installing
         
     | 
| 
       303 
337 
     | 
    
         | 
| 
      
 338 
     | 
    
         
            +
                signing_key = nil
         
     | 
| 
      
 339 
     | 
    
         
            +
                cert_chain = []
         
     | 
| 
      
 340 
     | 
    
         
            +
             
     | 
| 
      
 341 
     | 
    
         
            +
                with_config do |config, path|
         
     | 
| 
      
 342 
     | 
    
         
            +
                  break unless config['signing_key_file'] and config['signing_cert_file']
         
     | 
| 
      
 343 
     | 
    
         
            +
                  key_file = File.expand_path config['signing_key_file'].to_s
         
     | 
| 
      
 344 
     | 
    
         
            +
                  signing_key = key_file if File.exist? key_file
         
     | 
| 
      
 345 
     | 
    
         
            +
             
     | 
| 
      
 346 
     | 
    
         
            +
                  cert_file = File.expand_path config['signing_cert_file'].to_s
         
     | 
| 
      
 347 
     | 
    
         
            +
                  cert_chain << cert_file if File.exist? cert_file
         
     | 
| 
      
 348 
     | 
    
         
            +
                end
         
     | 
| 
      
 349 
     | 
    
         
            +
             
     | 
| 
       304 
350 
     | 
    
         
             
                self.spec = Gem::Specification.new do |s|
         
     | 
| 
       305 
351 
     | 
    
         
             
                  s.name = name
         
     | 
| 
       306 
352 
     | 
    
         
             
                  s.version = version
         
     | 
| 
         @@ -338,6 +384,11 @@ class Hoe 
     | 
|
| 
       338 
384 
     | 
    
         
             
                    s.test_files = Dir[*test_globs]
         
     | 
| 
       339 
385 
     | 
    
         
             
                  end
         
     | 
| 
       340 
386 
     | 
    
         | 
| 
      
 387 
     | 
    
         
            +
                  if signing_key and cert_chain then
         
     | 
| 
      
 388 
     | 
    
         
            +
                    s.signing_key = signing_key
         
     | 
| 
      
 389 
     | 
    
         
            +
                    s.cert_chain = cert_chain
         
     | 
| 
      
 390 
     | 
    
         
            +
                  end
         
     | 
| 
      
 391 
     | 
    
         
            +
             
     | 
| 
       341 
392 
     | 
    
         
             
                  # Do any extra stuff the user wants
         
     | 
| 
       342 
393 
     | 
    
         
             
                  spec_extras.each do |msg, val|
         
     | 
| 
       343 
394 
     | 
    
         
             
                    case val
         
     | 
| 
         @@ -424,7 +475,7 @@ class Hoe 
     | 
|
| 
       424 
475 
     | 
    
         | 
| 
       425 
476 
     | 
    
         
             
                Rake::RDocTask.new(:docs) do |rd|
         
     | 
| 
       426 
477 
     | 
    
         
             
                  rd.main = "README.txt"
         
     | 
| 
       427 
     | 
    
         
            -
                  rd.options << '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/
         
     | 
| 
      
 478 
     | 
    
         
            +
                  rd.options << '-d' if RUBY_PLATFORM !~ /win32/ and `which dot` =~ /\/dot/ and not ENV['NODOT']
         
     | 
| 
       428 
479 
     | 
    
         
             
                  rd.rdoc_dir = 'doc'
         
     | 
| 
       429 
480 
     | 
    
         
             
                  files = spec.files.grep(rdoc_pattern)
         
     | 
| 
       430 
481 
     | 
    
         
             
                  files -= ['Manifest.txt']
         
     | 
| 
         @@ -454,32 +505,14 @@ class Hoe 
     | 
|
| 
       454 
505 
     | 
    
         | 
| 
       455 
506 
     | 
    
         
             
                # no doco for this one
         
     | 
| 
       456 
507 
     | 
    
         
             
                task :publish_on_announce do
         
     | 
| 
       457 
     | 
    
         
            -
                  with_config do | 
     | 
| 
       458 
     | 
    
         
            -
                    if  
     | 
| 
       459 
     | 
    
         
            -
                      Rake::Task['publish_docs'].invoke
         
     | 
| 
       460 
     | 
    
         
            -
                    end
         
     | 
| 
      
 508 
     | 
    
         
            +
                  with_config do |config, _|
         
     | 
| 
      
 509 
     | 
    
         
            +
                    Rake::Task['publish_docs'].invoke if config["publish_on_announce"]
         
     | 
| 
       461 
510 
     | 
    
         
             
                  end
         
     | 
| 
       462 
511 
     | 
    
         
             
                end
         
     | 
| 
       463 
512 
     | 
    
         | 
| 
       464 
513 
     | 
    
         
             
                ############################################################
         
     | 
| 
       465 
514 
     | 
    
         
             
                # Misc/Maintenance:
         
     | 
| 
       466 
515 
     | 
    
         | 
| 
       467 
     | 
    
         
            -
                def with_config(create=false) # :nodoc:
         
     | 
| 
       468 
     | 
    
         
            -
                  require 'yaml'
         
     | 
| 
       469 
     | 
    
         
            -
                  rc = File.expand_path("~/.hoerc")
         
     | 
| 
       470 
     | 
    
         
            -
             
     | 
| 
       471 
     | 
    
         
            -
                  unless create then
         
     | 
| 
       472 
     | 
    
         
            -
                    if test ?f, rc then
         
     | 
| 
       473 
     | 
    
         
            -
                      config = YAML.load_file(rc)
         
     | 
| 
       474 
     | 
    
         
            -
                      yield(config, rc)
         
     | 
| 
       475 
     | 
    
         
            -
                    end
         
     | 
| 
       476 
     | 
    
         
            -
                  else
         
     | 
| 
       477 
     | 
    
         
            -
                    unless test ?f, rc then
         
     | 
| 
       478 
     | 
    
         
            -
                      yield(rc)
         
     | 
| 
       479 
     | 
    
         
            -
                    end
         
     | 
| 
       480 
     | 
    
         
            -
                  end
         
     | 
| 
       481 
     | 
    
         
            -
                end
         
     | 
| 
       482 
     | 
    
         
            -
             
     | 
| 
       483 
516 
     | 
    
         
             
                desc 'Run ZenTest against the package'
         
     | 
| 
       484 
517 
     | 
    
         
             
                task :audit do
         
     | 
| 
       485 
518 
     | 
    
         
             
                  libs = %w(lib test ext).join(File::PATH_SEPARATOR)
         
     | 
| 
         @@ -496,10 +529,12 @@ class Hoe 
     | 
|
| 
       496 
529 
     | 
    
         | 
| 
       497 
530 
     | 
    
         
             
                desc 'Create a fresh ~/.hoerc file'
         
     | 
| 
       498 
531 
     | 
    
         
             
                task :config_hoe do
         
     | 
| 
       499 
     | 
    
         
            -
                  with_config 
     | 
| 
       500 
     | 
    
         
            -
                     
     | 
| 
      
 532 
     | 
    
         
            +
                  with_config do |config, path|
         
     | 
| 
      
 533 
     | 
    
         
            +
                    default_config = {
         
     | 
| 
       501 
534 
     | 
    
         
             
                      "exclude" => /tmp$|CVS|\.svn/,
         
     | 
| 
       502 
535 
     | 
    
         
             
                      "publish_on_announce" => false,
         
     | 
| 
      
 536 
     | 
    
         
            +
                      "signing_key_file" => "~/.gem/gem-private_key.pem",
         
     | 
| 
      
 537 
     | 
    
         
            +
                      "signing_cert_file" => "~/.gem/gem-public_cert.pem",
         
     | 
| 
       503 
538 
     | 
    
         
             
                      "blogs" => [ {
         
     | 
| 
       504 
539 
     | 
    
         
             
                                     "user" => "user",
         
     | 
| 
       505 
540 
     | 
    
         
             
                                     "url" => "url",
         
     | 
| 
         @@ -510,14 +545,12 @@ class Hoe 
     | 
|
| 
       510 
545 
     | 
    
         
             
                                     "password"=>"password",
         
     | 
| 
       511 
546 
     | 
    
         
             
                                   } ],
         
     | 
| 
       512 
547 
     | 
    
         
             
                    }
         
     | 
| 
       513 
     | 
    
         
            -
                    File.open( 
     | 
| 
       514 
     | 
    
         
            -
                      YAML.dump( 
     | 
| 
      
 548 
     | 
    
         
            +
                    File.open(path, "w") do |f|
         
     | 
| 
      
 549 
     | 
    
         
            +
                      YAML.dump(default_config.merge(config), f)
         
     | 
| 
       515 
550 
     | 
    
         
             
                    end
         
     | 
| 
       516 
     | 
    
         
            -
                  end
         
     | 
| 
       517 
551 
     | 
    
         | 
| 
       518 
     | 
    
         
            -
                  with_config do |rc, path|
         
     | 
| 
       519 
552 
     | 
    
         
             
                    editor = ENV['EDITOR'] || 'vi'
         
     | 
| 
       520 
     | 
    
         
            -
                    system "#{editor} #{path}"
         
     | 
| 
      
 553 
     | 
    
         
            +
                    system "#{editor} #{path}" if ENV['SHOW_EDITOR'] != 'no'
         
     | 
| 
       521 
554 
     | 
    
         
             
                  end
         
     | 
| 
       522 
555 
     | 
    
         
             
                end
         
     | 
| 
       523 
556 
     | 
    
         | 
| 
         @@ -545,8 +578,9 @@ class Hoe 
     | 
|
| 
       545 
578 
     | 
    
         
             
                  require 'xmlrpc/client'
         
     | 
| 
       546 
579 
     | 
    
         | 
| 
       547 
580 
     | 
    
         
             
                  with_config do |config, path|
         
     | 
| 
       548 
     | 
    
         
            -
                     
     | 
| 
      
 581 
     | 
    
         
            +
                    break unless config['blogs']
         
     | 
| 
       549 
582 
     | 
    
         | 
| 
      
 583 
     | 
    
         
            +
                    subject, title, body, urls = announcement
         
     | 
| 
       550 
584 
     | 
    
         
             
                    body += "\n\n#{urls}"
         
     | 
| 
       551 
585 
     | 
    
         | 
| 
       552 
586 
     | 
    
         
             
                    config['blogs'].each do |site|
         
     | 
| 
         @@ -596,6 +630,56 @@ class Hoe 
     | 
|
| 
       596 
630 
     | 
    
         
             
                  end
         
     | 
| 
       597 
631 
     | 
    
         
             
                end
         
     | 
| 
       598 
632 
     | 
    
         | 
| 
      
 633 
     | 
    
         
            +
                desc 'Generate a key for signing your gems.'
         
     | 
| 
      
 634 
     | 
    
         
            +
                task :generate_key do
         
     | 
| 
      
 635 
     | 
    
         
            +
                  email = spec.email
         
     | 
| 
      
 636 
     | 
    
         
            +
                  abort "No email in your gemspec" if email.nil? or email.empty?
         
     | 
| 
      
 637 
     | 
    
         
            +
             
     | 
| 
      
 638 
     | 
    
         
            +
                  key_file = with_config { |config, _| config['signing_key_file'] }
         
     | 
| 
      
 639 
     | 
    
         
            +
                  cert_file = with_config { |config, _| config['signing_cert_file'] }
         
     | 
| 
      
 640 
     | 
    
         
            +
             
     | 
| 
      
 641 
     | 
    
         
            +
                  if key_file.nil? or cert_file.nil? then
         
     | 
| 
      
 642 
     | 
    
         
            +
                    ENV['SHOW_EDITOR'] ||= 'no'
         
     | 
| 
      
 643 
     | 
    
         
            +
                    Rake::Task['config_hoe'].invoke
         
     | 
| 
      
 644 
     | 
    
         
            +
             
     | 
| 
      
 645 
     | 
    
         
            +
                    key_file = with_config { |config, _| config['signing_key_file'] }
         
     | 
| 
      
 646 
     | 
    
         
            +
                    cert_file = with_config { |config, _| config['signing_cert_file'] }
         
     | 
| 
      
 647 
     | 
    
         
            +
                  end
         
     | 
| 
      
 648 
     | 
    
         
            +
             
     | 
| 
      
 649 
     | 
    
         
            +
                  key_file = File.expand_path key_file
         
     | 
| 
      
 650 
     | 
    
         
            +
                  cert_file = File.expand_path cert_file
         
     | 
| 
      
 651 
     | 
    
         
            +
             
     | 
| 
      
 652 
     | 
    
         
            +
                  unless File.exist? key_file or File.exist? cert_file then
         
     | 
| 
      
 653 
     | 
    
         
            +
                    sh "gem cert --build #{email}"
         
     | 
| 
      
 654 
     | 
    
         
            +
                    mv "gem-private_key.pem", key_file, :verbose => true
         
     | 
| 
      
 655 
     | 
    
         
            +
                    mv "gem-public_cert.pem", cert_file, :verbose => true
         
     | 
| 
      
 656 
     | 
    
         
            +
             
     | 
| 
      
 657 
     | 
    
         
            +
                    puts "Installed key and certificate."
         
     | 
| 
      
 658 
     | 
    
         
            +
             
     | 
| 
      
 659 
     | 
    
         
            +
                    rf = RubyForge.new
         
     | 
| 
      
 660 
     | 
    
         
            +
                    rf.login
         
     | 
| 
      
 661 
     | 
    
         
            +
             
     | 
| 
      
 662 
     | 
    
         
            +
                    cert_package = "#{rubyforge_name}-certificates"
         
     | 
| 
      
 663 
     | 
    
         
            +
             
     | 
| 
      
 664 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 665 
     | 
    
         
            +
                      rf.lookup 'package', cert_package
         
     | 
| 
      
 666 
     | 
    
         
            +
                    rescue
         
     | 
| 
      
 667 
     | 
    
         
            +
                      rf.create_package rubyforge_name, cert_package
         
     | 
| 
      
 668 
     | 
    
         
            +
                    end
         
     | 
| 
      
 669 
     | 
    
         
            +
             
     | 
| 
      
 670 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 671 
     | 
    
         
            +
                      rf.lookup('release', cert_package)['certificates']
         
     | 
| 
      
 672 
     | 
    
         
            +
                      rf.add_file rubyforge_name, cert_package, 'certificates', cert_file
         
     | 
| 
      
 673 
     | 
    
         
            +
                    rescue
         
     | 
| 
      
 674 
     | 
    
         
            +
                      rf.add_release rubyforge_name, cert_package, 'certificates', cert_file
         
     | 
| 
      
 675 
     | 
    
         
            +
                    end
         
     | 
| 
      
 676 
     | 
    
         
            +
             
     | 
| 
      
 677 
     | 
    
         
            +
                    puts "Uploaded certificate to release \"certificates\" in package #{cert_package}"
         
     | 
| 
      
 678 
     | 
    
         
            +
                  else
         
     | 
| 
      
 679 
     | 
    
         
            +
                    puts "Keys already exist."
         
     | 
| 
      
 680 
     | 
    
         
            +
                  end
         
     | 
| 
      
 681 
     | 
    
         
            +
                end
         
     | 
| 
      
 682 
     | 
    
         
            +
             
     | 
| 
       599 
683 
     | 
    
         
             
              end # end define
         
     | 
| 
       600 
684 
     | 
    
         | 
| 
       601 
685 
     | 
    
         
             
              def announcement # :nodoc:
         
     | 
    
        data/test/test_hoe.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -3,8 +3,8 @@ rubygems_version: 0.9.4 
     | 
|
| 
       3 
3 
     | 
    
         
             
            specification_version: 1
         
     | 
| 
       4 
4 
     | 
    
         
             
            name: hoe
         
     | 
| 
       5 
5 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       6 
     | 
    
         
            -
              version: 1. 
     | 
| 
       7 
     | 
    
         
            -
            date: 2007- 
     | 
| 
      
 6 
     | 
    
         
            +
              version: 1.3.0
         
     | 
| 
      
 7 
     | 
    
         
            +
            date: 2007-08-13 00:00:00 -07:00
         
     | 
| 
       8 
8 
     | 
    
         
             
            summary: Hoe is a way to write Rakefiles much easier and cleaner.
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -59,7 +59,7 @@ dependencies: 
     | 
|
| 
       59 
59 
     | 
    
         
             
                requirements: 
         
     | 
| 
       60 
60 
     | 
    
         
             
                - - ">="
         
     | 
| 
       61 
61 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       62 
     | 
    
         
            -
                    version: 0.4. 
     | 
| 
      
 62 
     | 
    
         
            +
                    version: 0.4.4
         
     | 
| 
       63 
63 
     | 
    
         
             
                version: 
         
     | 
| 
       64 
64 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       65 
65 
     | 
    
         
             
              name: rake
         
     |