Sha256: 57d42ab842767d1f8d2c5af4ce7dccab5a9593ff5d9f0e4e4fea1c3202d84cac

Contents?: true

Size: 1.71 KB

Versions: 30

Compression:

Stored size: 1.71 KB

Contents

require 'fileutils'

module PowerStencil
  module Project

    module Create

      INITIAL_REPOSITORY_COMMIT_MESSAGE = 'Initial commit for project "%s".'

      include Climatic::Proxy

      def create_project_tree(path, config_directory_name = PowerStencil.config[:default_config_directory_name])
        path = File.expand_path path
        config_path = File.join path, config_directory_name
        if Dir.exists? config_path
          raise PowerStencil::Error, "The directory '#{path}' already contains a PowerStencil project !" unless config[:force]
        end
        logger.info "Creating project in '#{path}'..."
        render_project_template_in path
        initialize_git_repository path
      end

      private

      def initialize_git_repository(repo_path)
        if config[:'no-git']
          puts_and_logs 'Do not initialize project git repository as per config request.', logs_as: :debug
          return
        end
        if Dir.exists? File.join(repo_path, '.git')
          puts_and_logs 'Git repository already exists. Skipping.', logs_as: :debug, check_verbose: false
          return
        end
        puts_and_logs 'Initializing git repository...', logs_as: :debug
        git = ::Git.init repo_path
        logger.debug 'Adding all files.'
        git.add repo_path
        logger.debug 'Committing initial status'
        commit_msg = INITIAL_REPOSITORY_COMMIT_MESSAGE % [File.basename(repo_path)]
        git.commit_all commit_msg
      end

      def render_project_template_in(new_project_config_path)
        engine = PowerStencil::Engine::InitEngine.new
        engine.render_source PowerStencil::Project::Paths.project_system_template_template_path, new_project_config_path
      end

    end

  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
power_stencil-0.10.0 lib/power_stencil/project/create.rb
power_stencil-0.9.8 lib/power_stencil/project/create.rb
power_stencil-0.9.7 lib/power_stencil/project/create.rb
power_stencil-0.9.6 lib/power_stencil/project/create.rb
power_stencil-0.9.5 lib/power_stencil/project/create.rb
power_stencil-0.9.4 lib/power_stencil/project/create.rb
power_stencil-0.9.3 lib/power_stencil/project/create.rb
power_stencil-0.9.2 lib/power_stencil/project/create.rb
power_stencil-0.9.1 lib/power_stencil/project/create.rb
power_stencil-0.9.0 lib/power_stencil/project/create.rb
power_stencil-0.8.14 lib/power_stencil/project/create.rb
power_stencil-0.8.13 lib/power_stencil/project/create.rb
power_stencil-0.8.12 lib/power_stencil/project/create.rb
power_stencil-0.8.11 lib/power_stencil/project/create.rb
power_stencil-0.8.10 lib/power_stencil/project/create.rb
power_stencil-0.8.9 lib/power_stencil/project/create.rb
power_stencil-0.8.8 lib/power_stencil/project/create.rb
power_stencil-0.8.7 lib/power_stencil/project/create.rb
power_stencil-0.8.6 lib/power_stencil/project/create.rb
power_stencil-0.8.5 lib/power_stencil/project/create.rb