Sha256: 2b379be5a667f8ac45960160e66d04c537585404f3de0afd279aa42b4a74a8a1

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

require 'fileutils'
require_relative 'locatable'

module Branch
  module Name
    module Projectable
      include Locatable

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

        project_location = Time.new.strftime(options[:project_location])
        project_folder = "#{project_location}/#{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)

        puts "Project folder \"#{project_folder}\" with project files #{options[:project_files]} was created".green
      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}\""
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
branch-name-3.3.0 lib/branch/name/projectable.rb
branch-name-3.2.2 lib/branch/name/projectable.rb
branch-name-3.2.1 lib/branch/name/projectable.rb
branch-name-3.0.0 lib/branch/name/projectable.rb
branch-name-2.2.0 lib/branch/name/projectable.rb