Commit d9662f60 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Added --template-links command line option.

Useful when developing template files, to avoid running JSDuck every
time you make a change to JavaScript file.
parent def3e659
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -34,6 +34,12 @@ opts = OptionParser.new do | opts |
    app.template_dir = path
  end

  opts.on('--template-links', "Instead of copying template files, create symbolic links.",
    "Useful for template files development.",
    "Only works on platforms supporting symbolic links.") do
    app.template_links = true
  end

  opts.on('--json', "Produces JSON export instead of HTML documentation.") do
    app.export = :json
  end
+16 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ module JsDuck
    # These are basically input parameters for app
    attr_accessor :output_dir
    attr_accessor :template_dir
    attr_accessor :template_links
    attr_accessor :input_files
    attr_accessor :verbose
    attr_accessor :export
@@ -31,6 +32,7 @@ module JsDuck
    def initialize
      @output_dir = nil
      @template_dir = nil
      @template_links = false
      @input_files = []
      @verbose = false
      @export = nil
@@ -61,8 +63,12 @@ module JsDuck
        init_output_dirs(@output_dir)
        @timer.time(:generating) { write_src(@output_dir+"/source", parsed_files) }
        @timer.time(:generating) { write_json(@output_dir+"/output", relations) }
      else
        if @template_links
          link_template(@template_dir, @output_dir)
        else
          copy_template(@template_dir, @output_dir)
        end
        @timer.time(:generating) { write_src(@output_dir+"/source", parsed_files) }
        @timer.time(:generating) { write_tree(@output_dir+"/output/tree.js", relations) }
        @timer.time(:generating) { write_members(@output_dir+"/output/members.js", relations) }
@@ -205,6 +211,15 @@ module JsDuck
      init_output_dirs(dir)
    end

    def link_template(template_dir, dir)
      puts "Linking template files to #{dir}..." if @verbose
      FileUtils.mkdir(dir)
      Dir.glob(template_dir + "/*").each do |file|
        File.symlink(File.expand_path(file), dir+"/"+File.basename(file))
      end
      init_output_dirs(dir)
    end

    def clear_dir(dir)
      if File.exists?(dir)
        FileUtils.rm_r(dir)