Sha256: 7d99b93014cbb31f0b6c40d77c27f38017845dc71e524974efa688ecdd1dba22

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 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
    class << self
      def locate_middleman_root!
        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?"
          exit(1)
        end
      
        if in_middleman_project?
          did_locate_middleman_project(cwd)
          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! unless cwd == Dir.pwd
        end
      rescue SystemCallError
        # could not chdir, no problem just return
      end

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

      def 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 did_locate_middleman_project(path)
        # 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!
      end
    
      def start_cli!
        require 'middleman'
        Middleman::Cli::Base.start
      end
    end
  end
end

ARGV << "server" if ARGV.length < 1
if %w(server s build b).include?(ARGV[0])
  Middleman::ProjectLocator.locate_middleman_root!
else
  Middleman::ProjectLocator.start_cli!
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
middleman-3.0.0.alpha.6 bin/middleman