Sha256: 73cb3826b83e3ffff852530c758861da5169afd8dab0ce618592b6abacf5b591

Contents?: true

Size: 1.86 KB

Versions: 20

Compression:

Stored size: 1.86 KB

Contents

# frozen_string_literal: true

require 'fileutils'
require_relative 'locatable'
require_relative 'normalizable'

module Branch
  module Name
    module Projectable
      include Locatable
      include Normalizable

      def create_project!(branch_name)
        raise 'options[:project] is false' unless options[:project]

        project_folder = project_folder_for branch_name

        if Dir.exist? project_folder
          puts "Project folder \"#{project_folder}\" already exists"
          create_project_files!(project_folder)
          return
        end

        FileUtils.mkdir_p(project_folder)
        create_project_files!(project_folder)

        project_files = options[:project_files]
        if project_files.blank?
          puts "Project folder \"#{project_folder}\" was created.".green
        else
          puts "Project folder \"#{project_folder}\" was created with project files:".green
          project_files.each do |project_file|
            puts "- #{project_file}".green
          end
        end
      end

      def create_project_files!(project_folder)
        raise 'options[:project] is false' unless options[:project]
        raise "Project folder \"#{project_folder}\" does not exist" unless Dir.exist? project_folder

        project_files = options[:project_files]

        return if project_files.blank?

        project_files.each do |project_file|
          full_file_name = File.join(project_folder, project_file)

          next if File.exist? full_file_name

          FileUtils.touch full_file_name
          puts "Created project file \"#{full_file_name}\"" if options[:verbose]
        end
      end

      def project_folder_for(branch_name)
        branch_name = project_folder_name_from branch_name
        project_location = Time.new.strftime(options[:project_location])
        File.join(project_location, branch_name)
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
branch-name-4.0.3 lib/branch/name/projectable.rb
branch-name-4.0.2 lib/branch/name/projectable.rb
branch-name-4.0.1 lib/branch/name/projectable.rb
branch-name-4.0.0 lib/branch/name/projectable.rb
branch-name-3.10.10 lib/branch/name/projectable.rb
branch-name-3.10.9 lib/branch/name/projectable.rb
branch-name-3.10.8 lib/branch/name/projectable.rb
branch-name-3.10.7 lib/branch/name/projectable.rb
branch-name-3.10.6 lib/branch/name/projectable.rb
branch-name-3.10.5 lib/branch/name/projectable.rb
branch-name-3.10.4 lib/branch/name/projectable.rb
branch-name-3.10.3 lib/branch/name/projectable.rb
branch-name-3.10.2 lib/branch/name/projectable.rb
branch-name-3.10.1 lib/branch/name/projectable.rb
branch-name-3.10.0 lib/branch/name/projectable.rb
branch-name-3.9.0 lib/branch/name/projectable.rb
branch-name-3.8.0 lib/branch/name/projectable.rb
branch-name-3.7.0 lib/branch/name/projectable.rb
branch-name-3.6.0 lib/branch/name/projectable.rb
branch-name-3.5.1 lib/branch/name/projectable.rb