require "thor" require "vim_printer" require "html2pdf" require "pdfs2pdf" require_relative "github_exporter" module GithubExporter class CLI < Thor desc "export", "Export a given Github project or a local project to a single pdf file" method_option "url", aliases: "-u", desc: "The full url of the github project to be cloned or local project directory (mandatory)", required: true method_option "exts", type: :array, aliases: "-e", desc: "The list of file extension to be exported (mandatory)", required: true method_option "non_exts", type: :array, aliases: "-f", desc: "The list of file without extension to be exported", default: [] method_option "theme", type: :string, aliases: "-t", desc: "The theme to be used with vim_printer", default: "default" method_option "output_name", type: :string, aliases: "-o", desc: "The output filename (optional)" def export exporter = GithubExporter::Exporter.new options[:url], exts: options[:exts], non_exts: options[:non_exts], theme: options[:theme], output_name: options[:output_name] exporter.export end desc "usage", "Display help screen" def usage puts <<-EOS Usage: $github_exporter -u, --url=URL \ -e, --exts=EXT1 EXT2 EXT3 \ -t, --theme=theme_name \ -o, --output-name=output_file.pdf Example: # Export the *.rb from the given repository $github_exporter -e rb -u https://github.com/agilecreativity/github_exporter.git # Export the *.rb and also 'Gemfile' from a 'github_exporter' directory # Note: this directory must be directly below the current directory $github_exporter -e rb -f Gemfile -u github_exporter # Same as previous command with the 'solarized' instead of 'default' colorscheme $github_exporter -e rb -f Gemfile -u filename_cleaner -t solarized Options: -u, --url=URL # The full url of the github project to be cloned OR local directory name -e, --exts=EXT1 EXT2 EXT3 .. # The list of extension names to be exported # e.g. -e md rb java -f, [--non-exts=one two three] # The list of file without extension to be exported # e.g. -f Gemfile LICENSE -t, [--theme=theme_name] # The theme/colorscheme to be used with vim_printer see :help :colorscheme from inside Vim # default: 'default' # e.g. -t solarized -o, [--output-name=output.pdf] # The output pdf filename (will default to 'repository_name'.pdf) # e.g. -o repository_name.pdf Export a given Github project or a local project directory to a single pdf file EOS end default_task :usage end end