sc-docs 0.0.1 → 0.0.2
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/README.md +15 -14
- data/lib/sc-docs.rb +1 -0
- data/lib/sc_docs/cli.rb +38 -16
- data/lib/sc_docs/generator.rb +15 -15
- data/lib/sc_docs/version.rb +1 -1
- metadata +3 -2
data/README.md
CHANGED
@@ -8,37 +8,38 @@ A tool to generate documentation for the SproutCore framework and SproutCore pro
|
|
8
8
|
Usage
|
9
9
|
-----
|
10
10
|
|
11
|
+
gem install sc-docs
|
12
|
+
|
13
|
+
*NOTE: If you are not using the latest version of SproutCore, the
|
14
|
+
built-in sc-docs command may conflict. This has been fixed in the newest
|
15
|
+
versions of SC.*
|
16
|
+
|
11
17
|
### Basic
|
12
18
|
|
13
|
-
sc-docs --input_dir INPUT_DIRECTORY_PATH
|
19
|
+
sc-docs preview --input_dir INPUT_DIRECTORY_PATH \
|
20
|
+
--output_dir OUTPUT_DIRECTORY_PATH
|
14
21
|
|
15
22
|
This documents the specified directory and then runs a preview sc-server instance.
|
16
23
|
|
17
24
|
### Deploy
|
18
25
|
|
19
|
-
sc-docs --input_dir INPUT_DIRECTORY_PATH
|
26
|
+
sc-docs generate --input_dir INPUT_DIRECTORY_PATH \
|
20
27
|
--output_dir = OUTPUT_DIRECTORY_PATH
|
21
28
|
|
22
|
-
The
|
29
|
+
The generate command runs sc-build and deploys to the specified directory.
|
23
30
|
|
24
31
|
### HTML Templates
|
25
32
|
|
26
|
-
sc-docs --input_dir INPUT_DIRECTORY_PATH
|
33
|
+
sc-docs generate --input_dir INPUT_DIRECTORY_PATH \
|
34
|
+
--output_dir = OUTPUT_DIRECTORY_PATH \
|
35
|
+
--template TEMPLATE_PATH
|
36
|
+
|
27
37
|
|
28
|
-
By default sc-docs assumes that you want to generate docs for the SproutCore based Doc Viewer. However, you
|
38
|
+
By default sc-docs assumes that you want to generate docs for the SproutCore based Doc Viewer. However, if you pass a template it will generate a standard HTML output.
|
29
39
|
|
30
40
|
Dependencies
|
31
41
|
------------
|
32
42
|
|
33
|
-
### Gems
|
34
|
-
|
35
|
-
* thor
|
36
|
-
* child_labor
|
37
|
-
* rack
|
38
|
-
* thin *(optional, but recommended)*
|
39
|
-
|
40
|
-
### Other
|
41
|
-
|
42
43
|
* **node.js**: We use a special (much faster) version of jsdoc-toolkit that requires node.js.
|
43
44
|
|
44
45
|
Templates
|
data/lib/sc-docs.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'sc_docs'
|
data/lib/sc_docs/cli.rb
CHANGED
@@ -5,43 +5,49 @@ require 'sc_docs/generator'
|
|
5
5
|
module ScDocs
|
6
6
|
class CLI < Thor
|
7
7
|
|
8
|
-
class_option :input_dir, :aliases => ['-i'], :type => :string,
|
9
|
-
:banner => "Directory to generate docs for"
|
10
|
-
class_option :output_dir, :aliases => ['-o'], :type => :string,
|
11
|
-
:banner => "Directory to output docs to"
|
12
8
|
class_option :update, :aliases => ['-u'], :type => :boolean, :default => false,
|
13
9
|
:banner => "If input is a git repo, pull and rebase"
|
14
10
|
class_option :template, :aliases => ['-t'], :type => :string,
|
15
11
|
:banner => "Path to jsdoc template (forces HTML output)"
|
16
12
|
class_option :verbose, :aliases => ['-v'], :type => :boolean, :default => false
|
17
13
|
|
18
|
-
desc "generate", "Generate docs"
|
14
|
+
desc "generate DIRECTORY", "Generate docs"
|
15
|
+
method_option :output_dir, :aliases => ['-o'], :type => :string, :required => true,
|
16
|
+
:banner => "Directory to output docs to"
|
19
17
|
method_option :project, :aliases => ['-p'], :type => :string,
|
20
18
|
:banner => "SproutCore Project Name"
|
21
|
-
def generate
|
19
|
+
def generate(directory)
|
20
|
+
|
22
21
|
puts "Generating Documentation...\n\n"
|
23
|
-
|
22
|
+
update_repo
|
23
|
+
generator(directory).generate
|
24
24
|
end
|
25
25
|
|
26
|
-
desc "preview", "Preview docs output"
|
27
|
-
|
26
|
+
desc "preview DIRECTORY", "Preview docs output"
|
27
|
+
method_option :output_dir, :aliases => ['-o'], :type => :string, :required => false,
|
28
|
+
:banner => "Directory to output docs to (defaults to a tempfile)"
|
29
|
+
def preview(directory)
|
28
30
|
puts "Building Documentation Preview...\n\n"
|
29
|
-
|
31
|
+
update_repo
|
32
|
+
with_temp_output{ generator(directory).preview }
|
30
33
|
end
|
31
34
|
|
32
35
|
private
|
33
36
|
|
34
|
-
def
|
35
|
-
|
37
|
+
def output_dir
|
38
|
+
@output_dir || options[:output_dir]
|
39
|
+
end
|
36
40
|
|
37
|
-
|
38
|
-
|
39
|
-
|
41
|
+
def generator(directory)
|
42
|
+
opts = options.merge(:output_dir => output_dir)
|
43
|
+
(opts[:template] ? HtmlGenerator : ScGenerator).new(directory, opts)
|
40
44
|
end
|
41
45
|
|
42
46
|
def update_repo
|
47
|
+
return unless options[:update]
|
48
|
+
|
43
49
|
puts "Updating repository...\n\n" if options[:verbose]
|
44
|
-
|
50
|
+
|
45
51
|
if File.directory? input_dir and File.directory? "#{input_dir}/.git"
|
46
52
|
Dir.chdir input_dir do
|
47
53
|
run("git fetch", print_output)
|
@@ -50,5 +56,21 @@ module ScDocs
|
|
50
56
|
end
|
51
57
|
end
|
52
58
|
|
59
|
+
def with_temp_output
|
60
|
+
using_temp_dir = output_dir.nil? || output_dir.empty?
|
61
|
+
|
62
|
+
if using_temp_dir
|
63
|
+
require 'tempfile' # For Dir.tmpdir
|
64
|
+
@output_dir = File.join(Dir.tmpdir, "docs#{rand(100000)}")
|
65
|
+
end
|
66
|
+
|
67
|
+
yield
|
68
|
+
ensure
|
69
|
+
if using_temp_dir
|
70
|
+
FileUtils.rm_rf output_dir
|
71
|
+
@output_dir = nil # Probably not necessary
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
53
75
|
end
|
54
76
|
end
|
data/lib/sc_docs/generator.rb
CHANGED
@@ -13,8 +13,8 @@ module ScDocs
|
|
13
13
|
|
14
14
|
attr_reader :verbose
|
15
15
|
|
16
|
-
def initialize(options={})
|
17
|
-
@input_dir = File.expand_path(
|
16
|
+
def initialize(directory, options={})
|
17
|
+
@input_dir = File.expand_path(directory)
|
18
18
|
@output_dir = File.expand_path(options[:output_dir])
|
19
19
|
@verbose = options[:verbose]
|
20
20
|
end
|
@@ -58,10 +58,11 @@ module ScDocs
|
|
58
58
|
path = File.join(template, "output")
|
59
59
|
if File.directory?(path)
|
60
60
|
puts "Copying additional files" if verbose
|
61
|
+
# This is stupid, but necessary to copy only the contents
|
61
62
|
Dir["#{path}/*"].each{|p| FileUtils.cp_r(p, output_dir) }
|
62
63
|
end
|
63
64
|
end
|
64
|
-
|
65
|
+
|
65
66
|
def run_server
|
66
67
|
Server.new(output_dir).start
|
67
68
|
end
|
@@ -70,7 +71,7 @@ module ScDocs
|
|
70
71
|
|
71
72
|
class HtmlGenerator < Generator
|
72
73
|
|
73
|
-
def initialize(options={})
|
74
|
+
def initialize(directory, options={})
|
74
75
|
super
|
75
76
|
@template = File.expand_path(options[:template])
|
76
77
|
end
|
@@ -80,10 +81,10 @@ module ScDocs
|
|
80
81
|
class ScGenerator < Generator
|
81
82
|
|
82
83
|
attr_reader :app_dir
|
83
|
-
|
84
|
+
|
84
85
|
attr_reader :project_name
|
85
86
|
|
86
|
-
def initialize(options={})
|
87
|
+
def initialize(directory, options={})
|
87
88
|
super
|
88
89
|
@template = File.expand_path("../templates/sc_fixture", __FILE__)
|
89
90
|
@app_dir = File.expand_path(options[:output_dir])
|
@@ -100,10 +101,10 @@ module ScDocs
|
|
100
101
|
private
|
101
102
|
|
102
103
|
def prep
|
103
|
-
target_dir = File.dirname(app_dir)
|
104
104
|
FileUtils.rm_rf app_dir
|
105
|
-
FileUtils.mkdir_p
|
106
|
-
|
105
|
+
FileUtils.mkdir_p app_dir
|
106
|
+
# This is stupid, but necessary to copy only the contents
|
107
|
+
Dir[File.expand_path("../docs/*", __FILE__)].each{|f| FileUtils.cp_r f, app_dir }
|
107
108
|
end
|
108
109
|
|
109
110
|
def run_server
|
@@ -118,11 +119,11 @@ module ScDocs
|
|
118
119
|
tmp_path = File.join(Dir.tmpdir, "docs#{rand(100000)}")
|
119
120
|
|
120
121
|
FileUtils.mv app_dir, tmp_path
|
121
|
-
|
122
|
+
|
122
123
|
Dir.chdir tmp_path
|
123
124
|
|
124
125
|
build_cmd = "sc-build -r --languages=en --build-targets=docs --build=#{project_name}"
|
125
|
-
|
126
|
+
|
126
127
|
puts "Deploying...\n\n"
|
127
128
|
|
128
129
|
puts "#{build_cmd}\n\n" if verbose
|
@@ -131,15 +132,14 @@ module ScDocs
|
|
131
132
|
FileUtils.rm_rf app_dir
|
132
133
|
FileUtils.mkdir_p app_dir
|
133
134
|
|
134
|
-
|
135
|
-
FileUtils.
|
136
|
-
FileUtils.cp File.join(docs_dir, "docs", "en", project_name, "index.html"), docs_dir
|
135
|
+
FileUtils.cp_r File.join(tmp_path, "tmp", "build", "sc_docs"), app_dir
|
136
|
+
FileUtils.cp File.join(app_dir, "sc_docs", "docs", "en", project_name, "index.html"), app_dir
|
137
137
|
|
138
138
|
puts "Deployed"
|
139
139
|
|
140
140
|
ensure
|
141
141
|
FileUtils.rm_rf tmp_path
|
142
142
|
end
|
143
|
-
|
143
|
+
|
144
144
|
end
|
145
145
|
end
|
data/lib/sc_docs/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: sc-docs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Majd Taby
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-05-
|
14
|
+
date: 2011-05-19 00:00:00 -07:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- LICENSE
|
55
55
|
- README.md
|
56
56
|
- bin/sc-docs
|
57
|
+
- lib/sc-docs.rb
|
57
58
|
- lib/sc_docs.rb
|
58
59
|
- lib/sc_docs/cli.rb
|
59
60
|
- lib/sc_docs/docs/Buildfile
|