docster 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,7 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency "sdoc"
23
- s.add_dependency "thor"
22
+ %w(sdoc thor colored).each do |dep|
23
+ s.add_dependency dep
24
+ end
24
25
  s.add_development_dependency "rake"
25
26
  end
@@ -14,5 +14,6 @@ module Docster
14
14
  DocGenerator.generate! options.name, options.groups, (options.without_ruby ? nil : options.ruby_version)
15
15
  end
16
16
 
17
+ # TODO: #open should generate, then open merged docs. #generate should just RE-generate and not open.
17
18
  end
18
19
  end
@@ -1,8 +1,13 @@
1
1
  require 'bundler'
2
+ require 'colored'
2
3
 
3
4
  module Docster
4
5
  class RubyNotFound < StandardError; end
5
-
6
+ class SdocMergeError < StandardError; end
7
+ class SdocError < StandardError; end
8
+ class WgetError < StandardError; end
9
+ class RubyExtractionError < StandardError; end
10
+
6
11
  class DocGenerator
7
12
  def self.generate!(project_name, groups, ruby_version)
8
13
  begin
@@ -28,7 +33,7 @@ module Docster
28
33
  FileUtils.rm_rf project_path_for project_name
29
34
  sdoc_merge project_name, ruby_version
30
35
  end
31
-
36
+
32
37
  `open #{File.join project_path_for(project_name), 'index.html'}`
33
38
  ensure
34
39
  cleanup!
@@ -39,11 +44,28 @@ module Docster
39
44
  def self.sdoc_merge(project_name, ruby_version)
40
45
  names = ruby_version ? [gem_names, 'ruby'].join(',') : gem_names
41
46
  paths = ruby_version ? doc_paths << %Q( "#{doc_path_for 'ruby', ruby_version}") : doc_paths
42
- `sdoc-merge --title "#{project_name}" --op "#{project_path_for project_name}" --names "#{names}" #{paths}`
47
+
48
+ begin
49
+ print "Generating project documentation...".yellow
50
+ raise SdocMergeError unless system %Q(sdoc-merge --title "#{project_name}" --op "#{project_path_for project_name}" --names "#{names}" #{paths} &> /dev/null)
51
+ puts "done!".green
52
+ rescue SdocMergeError => e
53
+ # On error, remove potentially partial documentation
54
+ FileUtils.rm_rf project_path_for(project_name)
55
+ raise e
56
+ end
43
57
  end
44
58
 
45
- def self.generate_sdoc_for(options = {})
46
- `sdoc -o "#{doc_path_for options[:name], options[:version]}" "#{options[:path]}"`
59
+ def self.generate_sdoc_for(options = {})
60
+ begin
61
+ print "Generating sdoc for #{options[:name]}-#{options[:version]}...".yellow
62
+ raise SdocError unless system %Q(sdoc -o "#{doc_path_for options[:name], options[:version]}" "#{options[:path]}" &> /dev/null)
63
+ puts "done!".green
64
+ rescue SdocError => e
65
+ # On error, remove potentially partial documentation
66
+ FileUtils.rm_rf doc_path_for(options[:name], options[:version])
67
+ raise e
68
+ end
47
69
  end
48
70
 
49
71
  def self.gems
@@ -107,9 +129,17 @@ module Docster
107
129
  def self.download_ruby(version)
108
130
  ruby_archive = "ruby-#{version}.tar.bz2"
109
131
  archive_path = File.join tmp_path, ruby_archive
110
- `wget http://ftp.ruby-lang.org/pub/ruby/#{version.split('.')[0..1].join('.')}/#{ruby_archive} -O "#{archive_path}"`
132
+
133
+ print "Downloading ruby #{version} source from ruby-lang.org, this may take a while...".yellow
134
+ raise WgetError unless system %Q(wget http://ftp.ruby-lang.org/pub/ruby/#{version.split('.')[0..1].join('.')}/#{ruby_archive} -O "#{archive_path}" &> /dev/null)
135
+ puts "done!".green
136
+
111
137
  raise RubyNotFound unless File.size?(archive_path)
112
- `tar -xf "#{archive_path}" -C "#{tmp_path}"`
138
+
139
+ print "Extracting ruby...".yellow
140
+ raise RubyExtractionError unless system %Q(tar -xf "#{archive_path}" -C "#{tmp_path}" &> /dev/null)
141
+ puts "done!".green
142
+
113
143
  File.join tmp_path, "ruby-#{version}"
114
144
  end
115
145
  end
@@ -1,3 +1,3 @@
1
1
  module Docster
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-12-28 00:00:00.000000000 Z
13
+ date: 2011-12-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sdoc
17
- requirement: &2164266320 !ruby/object:Gem::Requirement
17
+ requirement: &2173340400 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2164266320
25
+ version_requirements: *2173340400
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: thor
28
- requirement: &2164265900 !ruby/object:Gem::Requirement
28
+ requirement: &2173339940 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,21 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2164265900
36
+ version_requirements: *2173339940
37
+ - !ruby/object:Gem::Dependency
38
+ name: colored
39
+ requirement: &2173339440 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *2173339440
37
48
  - !ruby/object:Gem::Dependency
38
49
  name: rake
39
- requirement: &2164265400 !ruby/object:Gem::Requirement
50
+ requirement: &2173339020 !ruby/object:Gem::Requirement
40
51
  none: false
41
52
  requirements:
42
53
  - - ! '>='
@@ -44,7 +55,7 @@ dependencies:
44
55
  version: '0'
45
56
  type: :development
46
57
  prerelease: false
47
- version_requirements: *2164265400
58
+ version_requirements: *2173339020
48
59
  description: Generates searchable documentation for your ruby project
49
60
  email:
50
61
  - info@room118solutions.com
@@ -77,7 +88,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
88
  version: '0'
78
89
  segments:
79
90
  - 0
80
- hash: 3265255303828275375
91
+ hash: -4609553935689345376
81
92
  required_rubygems_version: !ruby/object:Gem::Requirement
82
93
  none: false
83
94
  requirements:
@@ -86,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
97
  version: '0'
87
98
  segments:
88
99
  - 0
89
- hash: 3265255303828275375
100
+ hash: -4609553935689345376
90
101
  requirements: []
91
102
  rubyforge_project: docster
92
103
  rubygems_version: 1.8.6