bookshop 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.
Files changed (34) hide show
  1. data/README.rdoc +86 -0
  2. data/bookshop.gemspec +11 -2
  3. data/lib/bookshop/commands/build.rb +28 -0
  4. data/lib/bookshop/generators/bookshop/project/USAGE +3 -3
  5. data/lib/bookshop/generators/bookshop/project/project_generator.rb +7 -2
  6. data/lib/bookshop/generators/bookshop/project/templates/README.rdoc +0 -2
  7. data/lib/bookshop/generators/bookshop/project/templates/script/build +4 -32
  8. data/lib/bookshop/version.rb +1 -1
  9. metadata +44 -32
  10. data/lib/bookshop/commands/app_bk +0 -135
  11. data/lib/bookshop/commands/application.rb +0 -16
  12. data/lib/bookshop/generators/actions.rb +0 -320
  13. data/lib/bookshop/generators/base.rb +0 -16
  14. data/lib/bookshop/generators/bookshop/project/tools/java-libs/avalon-framework-4.2.0.jar +0 -0
  15. data/lib/bookshop/generators/bookshop/project/tools/java-libs/batik-all-1.7.jar +0 -0
  16. data/lib/bookshop/generators/bookshop/project/tools/java-libs/bsf.jar +0 -0
  17. data/lib/bookshop/generators/bookshop/project/tools/java-libs/commons-io-1.3.1.jar +0 -0
  18. data/lib/bookshop/generators/bookshop/project/tools/java-libs/commons-logging-1.0.4.jar +0 -0
  19. data/lib/bookshop/generators/bookshop/project/tools/java-libs/fop-hyph.jar +0 -0
  20. data/lib/bookshop/generators/bookshop/project/tools/java-libs/fop.jar +0 -0
  21. data/lib/bookshop/generators/bookshop/project/tools/java-libs/jai_codec.jar +0 -0
  22. data/lib/bookshop/generators/bookshop/project/tools/java-libs/jai_core.jar +0 -0
  23. data/lib/bookshop/generators/bookshop/project/tools/java-libs/serializer-2.7.0.jar +0 -0
  24. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xalan-2.7.0.jar +0 -0
  25. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xalansamples.jar +0 -0
  26. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xalanservlet.war +0 -0
  27. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xercesImpl-2.7.1.jar +0 -0
  28. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xml-apis-1.3.04.jar +0 -0
  29. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xml-apis-ext-1.3.04.jar +0 -0
  30. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xmlgraphics-commons-1.4.jar +0 -0
  31. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcapplet.jar +0 -0
  32. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcbrazil.jar +0 -0
  33. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcejb.jar +0 -0
  34. data/lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcservlet.jar +0 -0
data/README.rdoc ADDED
@@ -0,0 +1,86 @@
1
+ == Welcome to bookShop
2
+
3
+ bookShop is an open-source ruby-based development framework for working with DocBook/XSL production flows. The framework is optimized to help developers quickly ramp-up, allowing them to more rapidly jump in and develop their DocBook-to-Output flows, by favoring convention over configuration, setting them up with best practices from the get-go.
4
+
5
+ bookShop hopes to simplify the process by:
6
+ * providing a Ruby Gem to make working with DocBook as easy as 'sudo gem install bookShop'
7
+ * pulling all the DocBook tools together into one place
8
+ * giving the developer a set of scripts to automate the redundant stuff
9
+ * providing an architecture/structure that follows best-practices and simplification (DRY... Don't Repeat Yourself)
10
+ * providing an extendable framework for other developers to add their own custom templates (and hopefully provide them for the community)
11
+
12
+ == How to Install
13
+
14
+ === System Requirements
15
+
16
+ * Ruby v1.8.7 or v1.9.2 http://www.ruby-lang.org/en/downloads/
17
+ * Rubygems v1.3.6 http://docs.rubygems.org/read/chapter/3
18
+ * Java v1.6 http://www.java.com/
19
+
20
+ === Install bookShop
21
+
22
+ <tt>$ sudo gem install bookshop</tt>
23
+
24
+ === Create bookShop project
25
+
26
+ <tt>$ bookshop new ~/Path/to/NewProject</tt>
27
+
28
+ This will create a new bookshop project in ~/Path/to/NewProject
29
+
30
+ == Getting Help
31
+
32
+ bookShop comes with a built in help feature. Simply run 'bookshop --help' from the command line to get
33
+ list of possible commands to issue including possible options. You can also run 'bookshop COMMAND --help'
34
+ (where COMMAND is the command you want) to get a list of possible options for that particular command
35
+
36
+ == Description of Gem Contents
37
+
38
+ The basic gem architecture:
39
+
40
+ |-- bin
41
+ |-- lib
42
+
43
+ bin
44
+ command file copied to /usr/bin upon installation (which is then called from the command line)
45
+
46
+ lib
47
+ bookshop gem library files
48
+
49
+ == Description of bookShop Project contents
50
+
51
+ The default directory structure of a generated bookShop project:
52
+
53
+ |-- book
54
+ |-- builds
55
+ | |-- epub
56
+ | |-- html
57
+ | |-- mobi
58
+ `-- pdf
59
+ |-- stylesheets
60
+ |-- tools
61
+
62
+ book
63
+ Holds all the manuscript DocBook code/files. This is where your master manuscript lives from which everything is built.
64
+
65
+ builds
66
+ Holds all the output files built from the DocBook using their specific Stylesheets
67
+
68
+ builds/epub
69
+ When building the epub, the generated output will reside here in an .epub file.
70
+ You can rename the .epub extension to .zip then unzip the file to view the contents.
71
+
72
+ builds/html
73
+ When building the html asset, the generated output will reside here.
74
+
75
+ build/mobi
76
+ When building the mobi asset, the generated output will reside here as "book.mobi".
77
+
78
+ build/pdf
79
+ When building the pdf book, the generated output will reside here as "book.pdf".
80
+
81
+ stylesheets
82
+ Holds the XSL stylesheets for customizing your book output.
83
+
84
+ tools
85
+ Holds the dtd and DocBook-XSL specs which serve as the base for building formats.
86
+ Customization should happen via the stylesheets in the "stylesheets" folder. Files here should remain unchanged.
data/bookshop.gemspec CHANGED
@@ -9,14 +9,23 @@ Gem::Specification.new do |s|
9
9
  s.email = ['da@blueheadpublishing.com']
10
10
  s.homepage = "http://rubygems.org/gems/bookshop"
11
11
  s.summary = "A framework for DocBook happiness and sustainable productivity."
12
- s.description = "A framework for DocBook happiness and sustainable productivity."
12
+ s.description = "bookShop is an open-source ruby-based development framework for working
13
+ with DocBook/XSL tool-chain flows. The framework is optimized to help
14
+ developers quickly ramp-up, allowing them to more rapidly jump in and
15
+ develop their DocBook-to-Output flows, by favoring convention over
16
+ configuration, setting them up with best practices, standards and
17
+ tools from the get-go."
13
18
 
14
19
  s.required_rubygems_version = ">= 1.3.6"
15
20
  s.rubyforge_project = "bookshop"
21
+ s.has_rdoc = true
16
22
 
23
+
24
+ s.add_dependency "thor", ">= 0.14.6"
17
25
  s.add_development_dependency "bundler", ">= 1.0.0"
26
+ s.add_development_dependency "rspec"
18
27
 
19
28
  s.files = `git ls-files`.split("\n")
20
29
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
21
30
  s.require_path = 'lib'
22
- end
31
+ end
@@ -2,7 +2,35 @@ require 'thor/group'
2
2
 
3
3
  module Bookshop
4
4
  class Build
5
+ def build_pdf
6
+ puts "Deleting your old ebook"
7
+ File.delete("builds/pdf/book.pdf") if File::exists?( "builds/pdf/book.pdf" )
8
+ puts "File Deleted"
9
+ puts "Building new pdf at builds/pdf/book.pdf"
10
+ cmd = %x[java org.apache.fop.cli.Main -xml book/book.xml -xsl stylesheets/fo-stylesheet.xsl builds/pdf/book.pdf]
11
+ end
5
12
 
13
+ def build_epub
14
+ puts "Deleting your old ebook"
15
+ File.delete("builds/epub/book.epub") if File::exists?( "builds/epub/book.epub" )
16
+ puts "File Deleted"
17
+ puts "Building new pdf at builds/epub/book.epub"
18
+ cmd = %x[docbook/templates/epub/bin/dbtoepub -v book/book.xml -o builds/epub/book.epub]
19
+ end
20
+
21
+ if ARGV.empty?
22
+ puts ""
23
+ puts "tell me what to build (epub or pdf)"
24
+ puts ""
25
+ else
26
+ ARGV.each do |a|
27
+ if a == 'pdf'
28
+ build_pdf
29
+ elsif a == 'epub'
30
+ build_epub
31
+ end
32
+ end
33
+ end
6
34
  # shift ARGV's so that value after build (pdf, etc) is then iterated over with options
7
35
  # ARGV.shift
8
36
 
@@ -1,9 +1,9 @@
1
1
  Description:
2
- The 'bookshop new' command creates a new Bookr project with a default
2
+ The 'bookshop new' command creates a new Bookshop project with a default
3
3
  directory structure and configuration at the path you specify.
4
4
 
5
5
  Example:
6
- bookr new ~/Projects/NewBookProject
6
+ bookshop new ~/Projects/NewBookProject
7
7
 
8
- This generates a skeletal Bookr installation in ~/Projects/NewBookProject.
8
+ This generates a skeletal Bookshop installation in ~/Projects/NewBookProject.
9
9
  See the README in the newly created application to get going.
@@ -9,26 +9,31 @@ module Bookshop
9
9
 
10
10
  # Define arguments and options
11
11
  argument :name, :type => :string
12
+
12
13
 
13
14
  class_option :dtd, :type => :string, :aliases => "-dtd",
14
15
  :desc => "DTD version [ 4.5, 5.0 ]", :default => "5.0"
15
16
 
16
17
  class_option :xsl, :type => :string, :aliases => "-xsl",
17
18
  :desc => "DocBook-XSL version [ 1.75.2, 1.76.1 ]", :default => "1.76.1"
18
-
19
+
20
+ # Define source root of application
19
21
  def self.source_root
20
22
  File.dirname(__FILE__)
21
23
  end
22
24
 
23
- def create_base_app
25
+ # Create the project from templates
26
+ def create_base_project
24
27
  directory "templates", "#{name}"
25
28
  end
26
29
 
30
+ # Adds the dtd specified by user
27
31
  def add_dtd
28
32
  dtd = "#{options[:dtd]}"
29
33
  directory "tools/dtd/#{options[:dtd]}", "#{name}/tools/dtd/#{options[:dtd]}"
30
34
  end
31
35
 
36
+ # Adds the XSL/version specified by user
32
37
  def add_xsl
33
38
  directory "tools/xsl/#{options[:xsl]}", "#{name}/tools/xsl/#{options[:xsl]}"
34
39
  end
@@ -2,8 +2,6 @@
2
2
 
3
3
  bookShop is an open-source ruby-based development framework for working with DocBook/XSL production flows. The framework is optimized to help developers quickly ramp-up, allowing them to more rapidly jump in and develop their DocBook-to-Output flows, by favoring convention over configuration, setting them up with best practices from the get-go.
4
4
 
5
- Let's face it, the DocBook universe is a brutish, uber-complex amalgomation of XML/XSL(T)'s. It's evil... but hey, it works well for what it does best: making your HUMAN-friendly book COMPUTER-friendly, then spitting it out into whatever format you want.
6
-
7
5
  bookShop hopes to simplify the process by:
8
6
  * providing a Ruby Gem to make working with DocBook as easy as 'sudo gem install bookShop'
9
7
  * pulling all the DocBook tools together into one place
@@ -1,34 +1,6 @@
1
- #!/usr/bin/env ruby
1
+ # This command will automatically be run when you run "bookshop" with Bookshop gem installed from the root of your application.
2
2
 
3
- require 'fileutils'
4
-
5
- def build_pdf
6
- puts "Deleting your old ebook"
7
- File.delete("builds/pdf/book.pdf") if File::exists?( "builds/pdf/book.pdf" )
8
- puts "File Deleted"
9
- puts "Building new pdf at builds/pdf/book.pdf"
10
- cmd = %x[java org.apache.fop.cli.Main -xml book/book.xml -xsl stylesheets/fo-stylesheet.xsl builds/pdf/book.pdf]
11
- end
12
-
13
- def build_epub
14
- puts "Deleting your old ebook"
15
- File.delete("builds/epub/book.epub") if File::exists?( "builds/epub/book.epub" )
16
- puts "File Deleted"
17
- puts "Building new pdf at builds/epub/book.epub"
18
- cmd = %x[docbook/templates/epub/bin/dbtoepub -v book/book.xml -o builds/epub/book.epub]
19
- end
20
-
21
- if ARGV.empty?
22
- puts ""
23
- puts "tell me what to build (epub or pdf)"
24
- puts ""
25
- else
26
- ARGV.each do |a|
27
- if a == 'pdf'
28
- build_pdf
29
- elsif a == 'epub'
30
- build_epub
31
- end
32
- end
33
- end
3
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
4
+ require File.expand_path('../../config/boot', __FILE__)
5
+ require 'bookshop/commands'
34
6
 
@@ -1,3 +1,3 @@
1
1
  module Bookshop
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookshop
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - D.a. Thompson
@@ -15,13 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-01 00:00:00 -08:00
18
+ date: 2011-02-02 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: bundler
22
+ name: thor
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 43
30
+ segments:
31
+ - 0
32
+ - 14
33
+ - 6
34
+ version: 0.14.6
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: bundler
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
25
41
  none: false
26
42
  requirements:
27
43
  - - ">="
@@ -33,8 +49,28 @@ dependencies:
33
49
  - 0
34
50
  version: 1.0.0
35
51
  type: :development
36
- version_requirements: *id001
37
- description: A framework for DocBook happiness and sustainable productivity.
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ version: "0"
65
+ type: :development
66
+ version_requirements: *id003
67
+ description: |-
68
+ bookShop is an open-source ruby-based development framework for working
69
+ with DocBook/XSL tool-chain flows. The framework is optimized to help
70
+ developers quickly ramp-up, allowing them to more rapidly jump in and
71
+ develop their DocBook-to-Output flows, by favoring convention over
72
+ configuration, setting them up with best practices, standards and
73
+ tools from the get-go.
38
74
  email:
39
75
  - da@blueheadpublishing.com
40
76
  executables:
@@ -46,16 +82,13 @@ extra_rdoc_files: []
46
82
  files:
47
83
  - .gitignore
48
84
  - Gemfile
85
+ - README.rdoc
49
86
  - Rakefile
50
87
  - bin/bookshop
51
88
  - bookshop.gemspec
52
89
  - lib/bookshop.rb
53
90
  - lib/bookshop/commands.rb
54
- - lib/bookshop/commands/app_bk
55
- - lib/bookshop/commands/application.rb
56
91
  - lib/bookshop/commands/build.rb
57
- - lib/bookshop/generators/actions.rb
58
- - lib/bookshop/generators/base.rb
59
92
  - lib/bookshop/generators/bookshop/generator/USAGE
60
93
  - lib/bookshop/generators/bookshop/generator/generator_generator.rb
61
94
  - lib/bookshop/generators/bookshop/generator/templates/%file_name%_generator.rb.tt
@@ -128,27 +161,6 @@ files:
128
161
  - lib/bookshop/generators/bookshop/project/tools/dtd/5.0/xsd/docbook.xsd
129
162
  - lib/bookshop/generators/bookshop/project/tools/dtd/5.0/xsd/xlink.xsd
130
163
  - lib/bookshop/generators/bookshop/project/tools/dtd/5.0/xsd/xml.xsd
131
- - lib/bookshop/generators/bookshop/project/tools/java-libs/avalon-framework-4.2.0.jar
132
- - lib/bookshop/generators/bookshop/project/tools/java-libs/batik-all-1.7.jar
133
- - lib/bookshop/generators/bookshop/project/tools/java-libs/bsf.jar
134
- - lib/bookshop/generators/bookshop/project/tools/java-libs/commons-io-1.3.1.jar
135
- - lib/bookshop/generators/bookshop/project/tools/java-libs/commons-logging-1.0.4.jar
136
- - lib/bookshop/generators/bookshop/project/tools/java-libs/fop-hyph.jar
137
- - lib/bookshop/generators/bookshop/project/tools/java-libs/fop.jar
138
- - lib/bookshop/generators/bookshop/project/tools/java-libs/jai_codec.jar
139
- - lib/bookshop/generators/bookshop/project/tools/java-libs/jai_core.jar
140
- - lib/bookshop/generators/bookshop/project/tools/java-libs/serializer-2.7.0.jar
141
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xalan-2.7.0.jar
142
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xalansamples.jar
143
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xalanservlet.war
144
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xercesImpl-2.7.1.jar
145
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xml-apis-1.3.04.jar
146
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xml-apis-ext-1.3.04.jar
147
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xmlgraphics-commons-1.4.jar
148
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcapplet.jar
149
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcbrazil.jar
150
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcejb.jar
151
- - lib/bookshop/generators/bookshop/project/tools/java-libs/xsltcservlet.jar
152
164
  - lib/bookshop/generators/bookshop/project/tools/xsl/1.75.2/AUTHORS
153
165
  - lib/bookshop/generators/bookshop/project/tools/xsl/1.75.2/BUGS
154
166
  - lib/bookshop/generators/bookshop/project/tools/xsl/1.75.2/COPYING
@@ -1,135 +0,0 @@
1
-
2
-
3
- require 'thor'
4
-
5
- module Bookshop
6
- module Application
7
-
8
- class Base < Thor
9
- include Thor::Actions
10
- include Thor::RakeCompat
11
-
12
- class_option :help, :type => :boolean, :desc => "Show help usage"
13
-
14
- desc "rake", "Execute rake tasks"
15
- method_option :environment, :type => :string, :aliases => "-e", :required => true, :default => :development
16
- method_option :list, :type => :string, :aliases => "-T", :desc => "Display the tasks (matching optional PATTERN) with descriptions, then exit."
17
- method_option :trace, :type => :boolean, :aliases => "-t", :desc => "Turn on invoke/execute tracing, enable full backtrace."
18
- method_option :verbose, :type => :boolean, :aliases => "-v", :desc => "Log message to standard output."
19
- def rake(*args)
20
- prepare :rake
21
- args << "-T" if options[:list]
22
- args << options[:list] unless options[:list].nil? || options[:list].to_s == "list"
23
- args << "--trace" if options[:trace]
24
- args << "--verbose" if options[:verbose]
25
- ARGV.clear
26
- ARGV.concat(args)
27
- puts "=> Executing Rake #{ARGV.join(' ')} ..."
28
- ENV['BOOKSHOP_LOG_LEVEL'] ||= "test"
29
- require File.expand_path(File.dirname(__FILE__) + '/rake')
30
- silence(:stdout) { require File.expand_path('config/boot.rb') }
31
- bookshopTasks.init
32
- end
33
-
34
- desc "generate", "Executes the bookshop generator with given options."
35
- def generate(*args)
36
- # Build bookshop g as an alias of book-gen
37
- begin
38
- # We try to load the vendored book-gen if exist
39
- book_gen_path = File.expand_path('../../../../../book-gen/lib', __FILE__)
40
- $:.unshift(book_gen_path) if File.directory?(book_gen_path) && !$:.include?(book_gen_path)
41
- require 'book-core/command'
42
- require 'book-gen/command'
43
- ARGV.shift
44
- bookshop.bin_gen(ARGV)
45
- rescue
46
- puts "<= You need book-gen! Run: gem install book-gen"
47
- end
48
- end
49
- desc "g", "Executes the bookshop generator with given options."
50
- alias :g :generate
51
- desc "gen", "Executes the bookshop generator with given options."
52
- alias :gen :generate
53
-
54
- desc "version", "Show current bookshop Version"
55
- map "-v" => :version, "--version" => :version
56
- def version
57
- require 'book-core/version'
58
- puts "bookshop v. #{bookshop.version}"
59
- end
60
-
61
- private
62
- def prepare(task)
63
- if options.help?
64
- help(task.to_s)
65
- raise SystemExit
66
- end
67
- ENV["BOOKSHOP_ENV"] ||= options.environment.to_s
68
- ENV["RACK_ENV"] = ENV["BOOKSHOP_ENV"] # Also set this for middleware
69
- chdir(options.chdir)
70
- unless File.exist?('config/boot.rb')
71
- puts "=> Could not find boot file in: #{options.chdir}/config/boot.rb !!!"
72
- raise SystemExit
73
- end
74
- end
75
-
76
- protected
77
- def self.banner(task=nil, *args)
78
- "book #{task.name}"
79
- end
80
-
81
- def capture(stream)
82
- begin
83
- stream = stream.to_s
84
- eval "$#{stream} = StringIO.new"
85
- yield
86
- result = eval("$#{stream}").string
87
- ensure
88
- eval("$#{stream} = #{stream.upcase}")
89
- end
90
-
91
- result
92
- end
93
- alias :silence :capture
94
- end # Base
95
- end # Cli
96
- end # bookshop
97
-
98
-
99
- #!/usr/bin/env ruby
100
-
101
- require 'rubygems'
102
- require 'thor/group'
103
-
104
- class ProjectGenerator < Thor::Group
105
- include Thor::Actions
106
-
107
- # Define arguments and options
108
- argument :name, :type => :string
109
-
110
- class_option :dtd, :type => :string, :aliases => "-dtd",
111
- :desc => "DTD version [ 4.5, 5.0 ]", :default => "5.0"
112
-
113
- class_option :xsl, :type => :string, :aliases => "-xsl",
114
- :desc => "DocBook-XSL version [ 1.75.2, 1.76.1 ]", :default => "1.76.1"
115
-
116
- def self.source_root
117
- File.dirname(__FILE__)
118
- end
119
-
120
- def create_base_app
121
- directory "app/project_base", "#{name}"
122
- end
123
-
124
- def add_dtd
125
- dtd = "#{options[:dtd]}"
126
- directory "app/tools/dtd/#{options[:dtd]}", "#{name}/tools/dtd/#{options[:dtd]}"
127
- end
128
-
129
- def add_xsl
130
- directory "app/tools/xsl/#{options[:xsl]}", "#{name}/tools/xsl/#{options[:xsl]}"
131
- end
132
-
133
- end
134
-
135
- ProjectGenerator.start
@@ -1,16 +0,0 @@
1
- require 'bookshop/version'
2
- if %w(--version -v).include? ARGV.first
3
- puts "Bookshop #{Bookshop::VERSION::STRING}"
4
- exit(0)
5
- end
6
-
7
- if ARGV.first != "new"
8
- ARGV[0] = "--help"
9
- else
10
- ARGV.shift
11
- end
12
-
13
- # require 'bookshop/generators'
14
- require 'bookshop/generators/bookshop/project/project_generator'
15
-
16
- Bookshop::Generators::ProjectGenerator.start
@@ -1,320 +0,0 @@
1
- require 'open-uri'
2
- require 'rbconfig'
3
-
4
- module Bookshop
5
- module Generators
6
- module Actions
7
-
8
- # Install a plugin. You must provide either a Subversion url or Git url.
9
- #
10
- # For a Git-hosted plugin, you can specify a branch and
11
- # whether it should be added as a submodule instead of cloned.
12
- #
13
- # For a Subversion-hosted plugin you can specify a revision.
14
- #
15
- # ==== Examples
16
- #
17
- # plugin 'restful-authentication', :git => 'git://github.com/technoweenie/restful-authentication.git'
18
- # plugin 'restful-authentication', :git => 'git://github.com/technoweenie/restful-authentication.git', :branch => 'stable'
19
- # plugin 'restful-authentication', :git => 'git://github.com/technoweenie/restful-authentication.git', :submodule => true
20
- # plugin 'restful-authentication', :svn => 'svn://svnhub.com/technoweenie/restful-authentication/trunk'
21
- # plugin 'restful-authentication', :svn => 'svn://svnhub.com/technoweenie/restful-authentication/trunk', :revision => 1234
22
- #
23
- def plugin(name, options)
24
- log :plugin, name
25
-
26
- if options[:git] && options[:submodule]
27
- options[:git] = "-b #{options[:branch]} #{options[:git]}" if options[:branch]
28
- in_root do
29
- run "git submodule add #{options[:git]} vendor/plugins/#{name}", :verbose => false
30
- end
31
- elsif options[:git] || options[:svn]
32
- options[:git] = "-b #{options[:branch]} #{options[:git]}" if options[:branch]
33
- options[:svn] = "-r #{options[:revision]} #{options[:svn]}" if options[:revision]
34
- in_root do
35
- run_ruby_script "script/bookshop plugin install #{options[:svn] || options[:git]}", :verbose => false
36
- end
37
- else
38
- log "! no git or svn provided for #{name}. Skipping..."
39
- end
40
- end
41
-
42
- # Adds an entry into Gemfile for the supplied gem. If env
43
- # is specified, add the gem to the given environment.
44
- #
45
- # ==== Example
46
- #
47
- # gem "rspec", :env => :test
48
- # gem "technoweenie-restful-authentication", :lib => "restful-authentication", :source => "http://gems.github.com/"
49
- # gem "bookshop", "3.0", :git => "git://github.com/bookshop/bookshop"
50
- #
51
- def gem(*args)
52
- options = args.extract_options!
53
- name, version = args
54
-
55
- # Deal with deprecated options
56
- { :env => :group, :only => :group,
57
- :lib => :require, :require_as => :require }.each do |old, new|
58
- next unless options[old]
59
- options[new] = options.delete(old)
60
- ActiveSupport::Deprecation.warn "#{old.inspect} option in gem is deprecated, use #{new.inspect} instead"
61
- end
62
-
63
- # Deal with deprecated source
64
- if source = options.delete(:source)
65
- ActiveSupport::Deprecation.warn ":source option in gem is deprecated, use add_source method instead"
66
- add_source(source)
67
- end
68
-
69
- # Set the message to be shown in logs. Uses the git repo if one is given,
70
- # otherwise use name (version).
71
- parts, message = [ name.inspect ], name
72
- if version ||= options.delete(:version)
73
- parts << version.inspect
74
- message << " (#{version})"
75
- end
76
- message = options[:git] if options[:git]
77
-
78
- log :gemfile, message
79
-
80
- options.each do |option, value|
81
- parts << ":#{option} => #{value.inspect}"
82
- end
83
-
84
- in_root do
85
- append_file "Gemfile", "gem #{parts.join(", ")}\n", :verbose => false
86
- end
87
- end
88
-
89
- # Add the given source to Gemfile
90
- #
91
- # ==== Example
92
- #
93
- # add_source "http://gems.github.com/"
94
- def add_source(source, options={})
95
- log :source, source
96
-
97
- in_root do
98
- prepend_file "Gemfile", "source #{source.inspect}\n", :verbose => false
99
- end
100
- end
101
-
102
- # Adds a line inside the Application class for config/application.rb.
103
- #
104
- # If options :env is specified, the line is appended to the corresponding
105
- # file in config/environments.
106
- #
107
- def environment(data=nil, options={}, &block)
108
- sentinel = /class [a-z_:]+ < Bookshop::Application/i
109
- data = block.call if !data && block_given?
110
-
111
- in_root do
112
- if options[:env].nil?
113
- inject_into_file 'config/application.rb', "\n #{data}", :after => sentinel, :verbose => false
114
- else
115
- Array.wrap(options[:env]).each do|env|
116
- append_file "config/environments/#{env}.rb", "\n#{data}", :verbose => false
117
- end
118
- end
119
- end
120
- end
121
- alias :application :environment
122
-
123
- # Run a command in git.
124
- #
125
- # ==== Examples
126
- #
127
- # git :init
128
- # git :add => "this.file that.rb"
129
- # git :add => "onefile.rb", :rm => "badfile.cxx"
130
- #
131
- def git(command={})
132
- if command.is_a?(Symbol)
133
- run "git #{command}"
134
- else
135
- command.each do |command, options|
136
- run "git #{command} #{options}"
137
- end
138
- end
139
- end
140
-
141
- # Create a new file in the vendor/ directory. Code can be specified
142
- # in a block or a data string can be given.
143
- #
144
- # ==== Examples
145
- #
146
- # vendor("sekrit.rb") do
147
- # sekrit_salt = "#{Time.now}--#{3.years.ago}--#{rand}--"
148
- # "salt = '#{sekrit_salt}'"
149
- # end
150
- #
151
- # vendor("foreign.rb", "# Foreign code is fun")
152
- #
153
- def vendor(filename, data=nil, &block)
154
- log :vendor, filename
155
- create_file("vendor/#{filename}", data, :verbose => false, &block)
156
- end
157
-
158
- # Create a new file in the lib/ directory. Code can be specified
159
- # in a block or a data string can be given.
160
- #
161
- # ==== Examples
162
- #
163
- # lib("crypto.rb") do
164
- # "crypted_special_value = '#{rand}--#{Time.now}--#{rand(1337)}--'"
165
- # end
166
- #
167
- # lib("foreign.rb", "# Foreign code is fun")
168
- #
169
- def lib(filename, data=nil, &block)
170
- log :lib, filename
171
- create_file("lib/#{filename}", data, :verbose => false, &block)
172
- end
173
-
174
- # Create a new Rakefile with the provided code (either in a block or a string).
175
- #
176
- # ==== Examples
177
- #
178
- # rakefile("bootstrap.rake") do
179
- # project = ask("What is the UNIX name of your project?")
180
- #
181
- # <<-TASK
182
- # namespace :#{project} do
183
- # task :bootstrap do
184
- # puts "i like boots!"
185
- # end
186
- # end
187
- # TASK
188
- # end
189
- #
190
- # rakefile("seed.rake", "puts 'im plantin ur seedz'")
191
- #
192
- def rakefile(filename, data=nil, &block)
193
- log :rakefile, filename
194
- create_file("lib/tasks/#{filename}", data, :verbose => false, &block)
195
- end
196
-
197
- # Create a new initializer with the provided code (either in a block or a string).
198
- #
199
- # ==== Examples
200
- #
201
- # initializer("globals.rb") do
202
- # data = ""
203
- #
204
- # ['MY_WORK', 'ADMINS', 'BEST_COMPANY_EVAR'].each do
205
- # data << "#{const} = :entp"
206
- # end
207
- #
208
- # data
209
- # end
210
- #
211
- # initializer("api.rb", "API_KEY = '123456'")
212
- #
213
- def initializer(filename, data=nil, &block)
214
- log :initializer, filename
215
- create_file("config/initializers/#{filename}", data, :verbose => false, &block)
216
- end
217
-
218
- # Generate something using a generator from Bookshop or a plugin.
219
- # The second parameter is the argument string that is passed to
220
- # the generator or an Array that is joined.
221
- #
222
- # ==== Example
223
- #
224
- # generate(:authenticated, "user session")
225
- #
226
- def generate(what, *args)
227
- log :generate, what
228
- argument = args.map {|arg| arg.to_s }.flatten.join(" ")
229
-
230
- in_root { run_ruby_script("script/bookshop generate #{what} #{argument}", :verbose => false) }
231
- end
232
-
233
- # Runs the supplied rake task
234
- #
235
- # ==== Example
236
- #
237
- # rake("db:migrate")
238
- # rake("db:migrate", :env => "production")
239
- # rake("gems:install", :sudo => true)
240
- #
241
- def rake(command, options={})
242
- log :rake, command
243
- env = options[:env] || 'development'
244
- sudo = options[:sudo] && RbConfig::CONFIG['host_os'] !~ /mswin|mingw/ ? 'sudo ' : ''
245
- in_root { run("#{sudo}#{extify(:rake)} #{command} BOOKSHOP_ENV=#{env}", :verbose => false) }
246
- end
247
-
248
- # Just run the capify command in root
249
- #
250
- # ==== Example
251
- #
252
- # capify!
253
- #
254
- def capify!
255
- log :capify, ""
256
- in_root { run("#{extify(:capify)} .", :verbose => false) }
257
- end
258
-
259
- # Add Bookshop to /vendor/bookshop
260
- #
261
- # ==== Example
262
- #
263
- # freeze!
264
- #
265
- def freeze!(args={})
266
- ActiveSupport::Deprecation.warn "freeze! is deprecated since your bookshop app now comes bundled with Bookshop by default, please check your Gemfile"
267
- end
268
-
269
- # Make an entry in Bookshop routing file config/routes.rb
270
- #
271
- # === Example
272
- #
273
- # route "root :to => 'welcome'"
274
- #
275
- def route(routing_code)
276
- log :route, routing_code
277
- sentinel = /\.routes\.draw do(?:\s*\|map\|)?\s*$/
278
-
279
- in_root do
280
- inject_into_file 'config/routes.rb', "\n #{routing_code}\n", { :after => sentinel, :verbose => false }
281
- end
282
- end
283
-
284
- # Reads the given file at the source root and prints it in the console.
285
- #
286
- # === Example
287
- #
288
- # readme "README"
289
- #
290
- def readme(path)
291
- say File.read(find_in_source_paths(path))
292
- end
293
-
294
- protected
295
-
296
- # Define log for backwards compatibility. If just one argument is sent,
297
- # invoke say, otherwise invoke say_status.
298
- #
299
- def log(*args)
300
- if args.size == 1
301
- say args.first.to_s
302
- else
303
- args << (self.behavior == :invoke ? :green : :red)
304
- say_status *args
305
- end
306
- end
307
-
308
- # Add an extension to the given name based on the platform.
309
- #
310
- def extify(name)
311
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
312
- "#{name}.bat"
313
- else
314
- name
315
- end
316
- end
317
-
318
- end
319
- end
320
- end
@@ -1,16 +0,0 @@
1
- begin
2
- require 'thor/group'
3
- rescue LoadError
4
- puts "Thor is not available.\nIf you ran this command from a git checkout " \
5
- "of Bookshop, please make sure thor is installed,\nand run this command " \
6
- "as `ruby #{$0} #{ARGV.join(" ")} --dev`"
7
- exit
8
- end
9
-
10
- module Bookshop
11
- module Generators
12
- module Base
13
-
14
- end
15
- end
16
- end