doc 0.4.1 → 0.5.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.
@@ -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: