doc 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b3c67d282df1baec1c1b258b082bccca10b69c55
4
+ data.tar.gz: 57dec17e5ece6a3541f6db38df7ee41580c767e0
5
+ SHA512:
6
+ metadata.gz: 41e583d7077a19db63db7cb072e952722e13285d9b69df6f7034d30454c37f06e5d2f21727feeb000ff26df577527ff916fb8a8029c77ecb287a7440bb2f0ae3
7
+ data.tar.gz: f1db12160b470bdfaf09d29a9a23c554c513d0fb57881749104a74fa8a127fa997466ccbc8c128330b266217910921991d73991d9e0478377d2483eade4c0f3f
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2011 Ivan Kuchin
1
+ Copyright (c) 2010-2017 Ivan Kuchin
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -83,4 +83,4 @@ Use `:title` to specify title, it must be a proc receiving path and returning ti
83
83
 
84
84
  ## Copyright
85
85
 
86
- Copyright (c) 2010-2012 Ivan Kuchin. See LICENSE.txt for details.
86
+ Copyright (c) 2010-2017 Ivan Kuchin. See LICENSE.txt for details.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'doc'
5
- s.version = '0.4.1'
5
+ s.version = '0.5.0'
6
6
  s.summary = %q{Get all ruby documentation in one place}
7
7
  s.description = %Q{Generate `Rakefile` with `docr` and get searchable documentation for ruby, rails, gems, plugins and all other ruby code in one place}
8
8
  s.homepage = "http://github.com/toy/#{s.name}"
@@ -16,9 +16,9 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = %w[lib]
18
18
 
19
- s.add_runtime_dependency 'sdoc', '~> 0.2.0'
20
- s.add_runtime_dependency 'fspath'
21
- s.add_runtime_dependency 'progress', '~> 2.4'
19
+ s.add_runtime_dependency 'sdoc', '~> 0.2'
20
+ s.add_runtime_dependency 'fspath', '~> 3.0'
21
+ s.add_runtime_dependency 'progress', '~> 3.0'
22
22
  s.add_runtime_dependency 'net-ftp-list'
23
23
  s.add_runtime_dependency 'rake'
24
24
  end
@@ -1,6 +1,7 @@
1
1
  require 'digest/sha2'
2
2
  require 'shellwords'
3
3
  require 'sdoc'
4
+ require 'yaml'
4
5
 
5
6
  module Doc
6
7
  class BaseTask
@@ -25,11 +26,12 @@ module Doc
25
26
  doc_dir / '.#{name}_state'
26
27
  end
27
28
  def #{name}_state_changed?
28
- !#{name}_state_path.exist? || Marshal.load(#{name}_state_path.read) != #{name}_state
29
- rescue true
29
+ !#{name}_state_path.exist? || YAML.load(#{name}_state_path.read) != #{name}_state
30
+ rescue
31
+ true
30
32
  end
31
33
  def write_#{name}_state
32
- #{name}_state_path.write(Marshal.dump(#{name}_state))
34
+ #{name}_state_path.write(YAML.dump(#{name}_state))
33
35
  end
34
36
  RUBY
35
37
  end
@@ -59,9 +61,10 @@ module Doc
59
61
  def run(force = false)
60
62
  if force || run?
61
63
  if doc_dir.exist?
62
- in_progress_message %W[rm -r #{doc_dir}].shelljoin
64
+ $stderr.puts %W[rm -r #{doc_dir}].shelljoin
63
65
  doc_dir.rmtree
64
66
  end
67
+ Progress.note = title
65
68
  build
66
69
  write_config_state
67
70
  @state = control_files_exist? ? :succeeded : :failed
@@ -85,13 +88,5 @@ module Doc
85
88
  def loaded_gem_version(gem)
86
89
  Gem.loaded_specs[gem].version
87
90
  end
88
-
89
- def in_progress_message(message)
90
- if Progress.running?
91
- Progress.note = message
92
- else
93
- $stderr.puts message
94
- end
95
- end
96
91
  end
97
92
  end
@@ -1,11 +1,7 @@
1
1
  module Doc
2
2
  class ConfigError < Exception
3
3
  def initialize(object, message)
4
- super("#{object.class.name}: #{message}").tap do |e|
5
- if Exception === message
6
- e.set_backtrace(message.backtrace)
7
- end
8
- end
4
+ super("#{object.class.name}: #{message}")
9
5
  end
10
6
  end
11
7
  end
@@ -31,6 +31,7 @@ module Doc
31
31
  def tasks
32
32
  @specs.map do |spec|
33
33
  main = spec.rdoc_options.each_cons(2).select{ |key, value| %w[--main -m].include?(key) }.map(&:last).first
34
+ next if spec.respond_to?(:default_gem?) && spec.default_gem?
34
35
  Dir.chdir(spec.full_gem_path) do
35
36
  file_list = FileList.new
36
37
  file_list.include *spec.extra_rdoc_files
@@ -44,7 +45,7 @@ module Doc
44
45
  :main => main,
45
46
  })
46
47
  end
47
- end
48
+ end.compact
48
49
  end
49
50
 
50
51
  private
@@ -32,15 +32,12 @@ module Doc
32
32
 
33
33
  private
34
34
 
35
- def version_less_than_3?(version)
36
- version.segments.first < 3
37
- end
38
-
39
35
  def paths_to_document_for_version(version)
40
- code = if version_less_than_3?(version)
36
+ code = case version.segments.first
37
+ when 2
41
38
  <<-RUBY
42
- require 'rdoc/task'
43
39
  gem 'rails', ARGV.first
40
+ require 'rdoc/task'
44
41
 
45
42
  Rake::FileList.class_eval do
46
43
  alias_method :original_include, :include
@@ -75,10 +72,10 @@ module Doc
75
72
 
76
73
  load 'tasks/documentation.rake'
77
74
  RUBY
78
- else
75
+ when 3
79
76
  <<-RUBY
80
- require 'rdoc/task'
81
77
  gem 'rails', ARGV.first
78
+ require 'rdoc/task'
82
79
 
83
80
  class RDocTaskWithoutDescriptions < Rake::RDocTask
84
81
  def initialize(name = :rdoc)
@@ -89,6 +86,26 @@ module Doc
89
86
 
90
87
  load 'rails/tasks/documentation.rake'
91
88
  RUBY
89
+ else
90
+ <<-RUBY
91
+ gem 'rails', ARGV.first
92
+ require 'rdoc/task'
93
+ require 'rails/api/task'
94
+
95
+ module Rails
96
+ module API
97
+ class InstalledTask < StableTask
98
+ def component_root_dir(component)
99
+ Gem::Specification.find_by_name(component).gem_dir
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ task = Rails::API::InstalledTask.new('rdoc')
106
+ task.configure_rdoc_files
107
+ puts task.rdoc_files
108
+ RUBY
92
109
  end
93
110
  args = %W[ruby -r rubygems -e #{code} -- #{version}]
94
111
  IO.popen(args.shelljoin, &:readlines).map(&:strip)
@@ -37,8 +37,6 @@ module Doc
37
37
  raise 'index should be a path to directory with index.html inside'
38
38
  end
39
39
  end
40
- rescue => e
41
- raise ConfigError.new(self, e)
42
40
  end
43
41
 
44
42
  def avaliable_formats
@@ -9,7 +9,7 @@ module Doc
9
9
 
10
10
  def self.for_path(path)
11
11
  name = path.basename.to_s
12
- if name =~ /^ruby-(\d+\.\d+\.\d+-p\d+)(?i:\.(tar\.(?:gz|bz2)|tgz|tbz|zip))?$/
12
+ if name =~ /^ruby-(\d+\.\d+\.\d+(?:-p\d+)?)(?i:\.(tar\.(?:gz|bz2)|tgz|tbz|zip))?$/
13
13
  extension = $2 ? $2.downcase : :dir
14
14
  type = ({'tar.bz2' => 'tbz', 'tar.gz' => 'tgz'}[extension] || extension).to_sym
15
15
  new(path, name, type, $1, $1.scan(/\d+/).map(&:to_i))
@@ -13,6 +13,7 @@ module Doc
13
13
  version = VersionSpecifier.new(`#{binary} -e 'print "\#{RUBY_VERSION}-p\#{RUBY_PATCHLEVEL}"'`)
14
14
  if $?.success?
15
15
  if version.valid?
16
+ version = version.drop unless version < VersionSpecifier.new(2.1)
16
17
  by_version(version, update)
17
18
  else
18
19
  raise "invalid version from `#{binary}`: #{version.to_s.inspect}"
@@ -44,7 +45,7 @@ module Doc
44
45
  if path.basename.to_s =~ /^(.*)(?i:\.(tar\.(?:gz|bz2)|tgz|tbz|zip))$/
45
46
  dir, extension = sources_dir / $1, $2.downcase
46
47
  unless dir.exist?
47
- Dir.mktmpdir 'ruby' do |d|
48
+ FSPath.temp_dir 'ruby', sources_dir do |d|
48
49
  begin
49
50
  case extension
50
51
  when 'tbz', 'tar.bz2'
@@ -55,7 +56,7 @@ module Doc
55
56
  Command.run('unzip', '-q', path, '-d', d)
56
57
  end
57
58
 
58
- children = FSPath(d).children
59
+ children = d.children
59
60
  if children.length == 1
60
61
  children.first.rename(dir)
61
62
  else
@@ -104,8 +105,7 @@ module Doc
104
105
  end
105
106
 
106
107
  def tempfile_for(dst)
107
- Tempfile.open 'ruby' do |f|
108
- path = FSPath(f.path)
108
+ FSPath.temp_file_path 'ruby', sources_dir do |path|
109
109
  yield path
110
110
  path.rename(dst)
111
111
  end
@@ -122,8 +122,8 @@ module Doc
122
122
  def tmpdir_for_latest_version_from_tag_list(command, regexp, version)
123
123
  if tag_version = latest_version_from_tag_list(command, regexp, version)
124
124
  unless path_for_version(tag_version)
125
- Dir.mktmpdir 'ruby' do |d|
126
- tmp_dir = FSPath(d) / tag_version.dir_name
125
+ FSPath.temp_dir 'ruby', sources_dir do |d|
126
+ tmp_dir = d / tag_version.dir_name
127
127
  if yield(tmp_dir, tag_version)
128
128
  tmp_dir.rename(sources_dir / tag_version.dir_name)
129
129
  end
@@ -149,11 +149,11 @@ module Doc
149
149
  FTP_HOST = 'ftp.ruby-lang.org'
150
150
  SVN_TAGS_URL = 'http://svn.ruby-lang.org/repos/ruby/tags/'
151
151
  SVN_TAG_LIST_COMMAND = "svn list --non-interactive #{SVN_TAGS_URL}"
152
- SVN_TAG_REGEXP = /^(v\d+(?:_\d+){3})\/$/
152
+ SVN_TAG_REGEXP = /^(v\d+(?:_\d+){2,3})\/$/
153
153
  GIT_BARE_URL = 'github.com/ruby/ruby'
154
154
  GIT_URL = "git://#{GIT_BARE_URL}.git"
155
155
  GIT_TAG_LIST_COMMAND = "git ls-remote -t #{GIT_URL}"
156
- GIT_TAG_REGEXP = /^.*\t(refs\/tags\/v\d+(?:_\d+){3})$/
156
+ GIT_TAG_REGEXP = /^.*\t(refs\/tags\/v\d+(?:_\d+){2,3})$/
157
157
 
158
158
  def download_version_via_ftp(version)
159
159
  Net::FTP.open(FTP_HOST) do |ftp|
@@ -9,6 +9,10 @@ module Doc
9
9
  @parts = str.scan(/\d+/).map(&:to_i)
10
10
  end
11
11
 
12
+ def drop
13
+ self.class.new(parts.drop(1).join('.'))
14
+ end
15
+
12
16
  def valid?
13
17
  str =~ /^\d+\.\d+(?:\.\d+(?:-p\d+)?)?$/
14
18
  end
@@ -18,7 +22,8 @@ module Doc
18
22
  end
19
23
 
20
24
  def dir_name
21
- 'ruby-%d.%d.%d-p%d' % parts
25
+ fmt = 'ruby' + %w[-%d .%d .%d -p%d].take(parts.length).join('')
26
+ fmt % parts
22
27
  end
23
28
 
24
29
  include Comparable
@@ -30,7 +30,7 @@ module Doc
30
30
  end
31
31
 
32
32
  def build
33
- in_progress_message "Merging #{title}"
33
+ $stderr.puts "Merging #{title}"
34
34
 
35
35
  succeded_tasks = tasks.reject(&:failed?)
36
36
  task_titles = succeded_tasks.map{ |task| task.title.gsub(',', '_') }
metadata CHANGED
@@ -1,105 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: doc
3
- version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Ivan Kuchin
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-12-27 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2017-02-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: sdoc
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 23
29
- segments:
30
- - 0
31
- - 2
32
- - 0
33
- version: 0.2.0
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.2'
34
20
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: fspath
38
21
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fspath
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
48
34
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: progress
52
35
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 11
59
- segments:
60
- - 2
61
- - 4
62
- version: "2.4"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: progress
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
63
48
  type: :runtime
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: net-ftp-list
67
49
  prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: net-ftp-list
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
71
59
  - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
77
62
  type: :runtime
78
- version_requirements: *id004
79
- - !ruby/object:Gem::Dependency
80
- name: rake
81
63
  prerelease: false
82
- requirement: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
85
73
  - - ">="
86
- - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 0
90
- version: "0"
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
91
76
  type: :runtime
92
- version_requirements: *id005
93
- description: Generate `Rakefile` with `docr` and get searchable documentation for ruby, rails, gems, plugins and all other ruby code in one place
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Generate `Rakefile` with `docr` and get searchable documentation for
84
+ ruby, rails, gems, plugins and all other ruby code in one place
94
85
  email:
95
- executables:
86
+ executables:
96
87
  - docr
97
88
  extensions: []
98
-
99
89
  extra_rdoc_files: []
100
-
101
- files:
102
- - .gitignore
90
+ files:
91
+ - ".gitignore"
103
92
  - LICENSE.txt
104
93
  - README.markdown
105
94
  - TODO
@@ -128,38 +117,27 @@ files:
128
117
  - lib/doc/tasks.rb
129
118
  - vendor/stdlib-config.yaml
130
119
  homepage: http://github.com/toy/doc
131
- licenses:
120
+ licenses:
132
121
  - MIT
122
+ metadata: {}
133
123
  post_install_message:
134
124
  rdoc_options: []
135
-
136
- require_paths:
125
+ require_paths:
137
126
  - lib
138
- required_ruby_version: !ruby/object:Gem::Requirement
139
- none: false
140
- requirements:
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
141
129
  - - ">="
142
- - !ruby/object:Gem::Version
143
- hash: 3
144
- segments:
145
- - 0
146
- version: "0"
147
- required_rubygems_version: !ruby/object:Gem::Requirement
148
- none: false
149
- requirements:
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
150
134
  - - ">="
151
- - !ruby/object:Gem::Version
152
- hash: 3
153
- segments:
154
- - 0
155
- version: "0"
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
156
137
  requirements: []
157
-
158
138
  rubyforge_project: doc
159
- rubygems_version: 1.8.24
139
+ rubygems_version: 2.6.10
160
140
  signing_key:
161
- specification_version: 3
141
+ specification_version: 4
162
142
  summary: Get all ruby documentation in one place
163
143
  test_files: []
164
-
165
- has_rdoc: