Sha256: 1cb0a5e0f21594b0e819bf490294501ddd2c5c175db7e8b59cd8f4a9ed795a11

Contents?: true

Size: 1.91 KB

Versions: 60

Compression:

Stored size: 1.91 KB

Contents

#!/usr/bin/env ruby

libdir = File.join(File.dirname(File.dirname(__FILE__)), "lib")
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)

require 'pathname'
require 'rubygems'

module Middleman
  module ProjectLocator
    def self.locate_middleman_root!(args)
      cwd = Dir.pwd
      
      if !in_middleman_project? && !in_middleman_project_subdirectory?
        $stderr.puts "== Error: Could not find a Middleman project config, perhaps you are in the wrong folder?"
        return
      end
      
      if in_middleman_project?
        did_locate_middleman_project(cwd, args)
        return
      end
      
      Dir.chdir("..") do
        # Recurse in a chdir block: if the search fails we want to be sure
        # the application is generated in the original working directory.
        locate_middleman_root!(args) unless cwd == Dir.pwd
      end
    rescue SystemCallError
      # could not chdir, no problem just return
    end

    def self.in_middleman_project?
      File.exists?('config.rb')
    end

    def self.in_middleman_project_subdirectory?(path = Pathname.new(Dir.pwd))
      File.exists?(File.join(path, 'config.rb')) || !path.root? && in_middleman_project_subdirectory?(path.parent)
    end
    
    def self.did_locate_middleman_project(path, args)
      # Set up gems listed in the Gemfile.
      ENV['BUNDLE_GEMFILE'] ||= File.expand_path('Gemfile', path)

      require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])

      start_cli!(args)
    end
    
    def self.start_cli!(args)
      require 'middleman'
      Middleman::CLI.start(args)
    end
  end
end

args = ARGV.dup

ARG_ALIASES = {
  "s" => "server",
  "b" => "build",
  "i" => "init"
}

if ARG_ALIASES.has_key?(args[0])
  args[0] = ARG_ALIASES[args[0]]
end
  
if args.length < 1 || %w(server build migrate).include?(args.first)
  Middleman::ProjectLocator.locate_middleman_root!(args)
else
  Middleman::ProjectLocator.start_cli!(args)
end

Version data entries

60 entries across 60 versions & 1 rubygems

Version Path
middleman-2.0.16.1-x86-mingw32 bin/middleman
middleman-2.0.16.1 bin/middleman
middleman-2.0.16-x86-mingw32 bin/middleman
middleman-2.0.16 bin/middleman
middleman-2.0.15.4-x86-mingw32 bin/middleman
middleman-2.0.15.4 bin/middleman
middleman-2.0.15.3-x86-mingw32 bin/middleman
middleman-2.0.15.3 bin/middleman
middleman-2.0.15.2-x86-mingw32 bin/middleman
middleman-2.0.15.2 bin/middleman
middleman-2.0.15.1-x86-mingw32 bin/middleman
middleman-2.0.15.1 bin/middleman
middleman-2.0.15-x86-mingw32 bin/middleman
middleman-2.0.15 bin/middleman
middleman-3.0.0.alpha.2 bin/middleman
middleman-2.0.14-x86-mingw32 bin/middleman
middleman-2.0.14 bin/middleman
middleman-2.0.14.pre2-x86-mingw32 bin/middleman
middleman-2.0.14.pre2 bin/middleman
middleman-2.0.13.2-x86-mingw32 bin/middleman