Class: Frank::CLI
- Inherits:
-
Object
- Object
- Frank::CLI
- Defined in:
- lib/frank/cli.rb
Constant Summary collapse
- BANNER =
<<-USAGE Usage: frank new PROJECT_PATH frank server [options] frank export PATH [options] frank publish Description: The `frank new' command generates a frank template project with the default directory structure and configuration at the given path. Once you have a frank project you can use the `frank server' or the aliased 'frank up' commands to start the development server and begin developing your project. When you are finished working and ready to export you can use the `frank export' or aliased `frank out' commands. Example: frank new ~/Dev/blah.com cd ~/Dev/blah.com frank server # do some development # export it frank export ~/Dev/html/blah.com # or publish it frank publish USAGE
Class Method Summary collapse
-
.bootstrap ⇒ Object
bootstrap this project up only if we really need to.
-
.print_usage_and_exit! ⇒ Object
print the usage banner and exit.
-
.run ⇒ Object
parse and set options bootstrap if we need to and go go go.
-
.run! ⇒ Object
determine what the user wants us to do and then, just do it.
- .set_options ⇒ Object
Class Method Details
.bootstrap ⇒ Object
bootstrap this project up only if we really need to
156 157 158 159 160 |
# File 'lib/frank/cli.rb', line 156 def bootstrap if %w[server up export out publish upgrade s e p].include? ARGV.first Frank.bootstrap(Dir.pwd) end end |
.print_usage_and_exit! ⇒ Object
print the usage banner and exit
149 150 151 152 |
# File 'lib/frank/cli.rb', line 149 def print_usage_and_exit! puts @opts exit end |
.run ⇒ Object
parse and set options bootstrap if we need to and go go go
92 93 94 95 96 97 98 99 100 101 |
# File 'lib/frank/cli.rb', line 92 def run if ARGV.empty? print_usage_and_exit! else bootstrap run! end end |
.run! ⇒ Object
determine what the user wants us to do and then, just do it
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/frank/cli.rb', line 105 def run! case ARGV.first when 'new', 'n' print_usage_and_exit! unless ARGV[1] # stub out the project Frank.stub(ARGV[1]) when 'server', 's', 'up' # setup server from options = @options[:server] Frank.server.handler = ['handler'] if ['handler'] Frank.server.hostname = ['hostname'] if ['hostname'] Frank.server.port = ['port'] if ['port'] if File.exist? 'setup.rb' # setup folder options if we have setup.rb Frank.dynamic_folder = @options[:dynamic_folder] if @options[:dynamic_folder] Frank.static_folder = @options[:static_folder] if @options[:static_folder] else # let frank act like a real grown up server Frank.serving_static! Frank.dynamic_folder = '.' Frank.static_folder = '.' end Frank.new when 'export', 'e', 'out', 'compile' # compile the project Frank.exporting! Frank.production! if @options[:production] Frank.force_export! if @options[:force_export] Frank.export.path = ARGV[1] if ARGV[1] Frank::Compile.export! when 'publish', 'p' # compile the project and scp it to server Frank.publishing! Frank::Publish.execute! when 'upgrade' # upgrade if we need to upgrade Frank.upgrade! else puts "frank doesn't know that one... `frank --help' for usage" exit end end |
.set_options ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/frank/cli.rb', line 38 def @options = {:server => {}} @opts = OptionParser.new do |opts| opts. = BANNER.gsub(/^\s{4}/, '') opts.separator '' opts.separator 'Options:' opts.on('--server [HANDLER]', 'Set the server handler (frank server)') do |handler| @options[:server]['handler'] = handler unless handler.nil? end opts.on('--hostname [HOSTNAME]', 'Set the server hostname (frank server)') do |hostname| @options[:server]['hostname'] = hostname unless hostname.nil? end opts.on('--port [PORT]', 'Set the server port (frank server)') do |port| @options[:server]['port'] = port unless port.nil? end opts.on('--dynamic_folder [FOLDER]', 'Set the dynamic folder (frank server)') do |folder| @options[:dynamic_folder] = folder unless folder.nil? end opts.on('--static_folder [FOLDER]', 'Set the static folder (frank server)') do |folder| @options[:static_folder] = folder unless folder.nil? end opts.on('--production', 'Production ready export (frank export) i.e. ([FOLDER]/index.html)') do |handler| @options[:production] = true end opts.on('-f', 'Overwrite existing folder on export (frank export)') do |handler| @options[:force_export] = true end opts.on('-v', '--version', 'Show the frank version and exit') do puts "Frank v#{Frank::VERSION}" exit end opts.on( '-h', '--help', 'Display this help' ) do puts opts exit end end @opts.parse! end |