Class: Kamaze::Project

Inherits:
Object show all
Extended by:
Concern::Env
Includes:
Concern::Helper, Concern::Mode, Concern::Tasks, Concern::Tools
Defined in:
lib/kamaze/project.rb,
lib/kamaze/project.rb,
lib/kamaze/project/dsl.rb,
lib/kamaze/project/tools_provider.rb

Overview

rubocop:disable Style/Documentation

Defined Under Namespace

Modules: Concern, DSL, Tools Classes: Config, Debug, Helper, Observable, Observer, Struct, ToolsProvider, Version

Constant Summary collapse

VERSION =
Version.new.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Project

Returns a new instance of Project.



95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/kamaze/project.rb', line 95

def initialize(&block)
  self.class.boot

  if block
    config = helper.get('project/config')
    yield(config)
    config.configure(self)
  end

  self.name ||= ENV.fetch('PROJECT_NAME')
  self.subject ||= subject!

  self.tools.freeze
end

Instance Attribute Details

#nameSymbol Also known as: gem_name

Project name

Returns:

  • (Symbol)


71
72
73
# File 'lib/kamaze/project.rb', line 71

def name
  @name
end

#subjectClass

Project subject, main class

Returns:

  • (Class)


76
77
78
# File 'lib/kamaze/project.rb', line 76

def subject
  @subject
end

Class Method Details

.bootself

Load "env file" + ruby files from boot directory

Returns:

  • (self)


84
85
86
87
88
89
90
91
92
# File 'lib/kamaze/project.rb', line 84

def boot
  env_load

  Dir.glob("#{__dir__}/project/boot/*.rb").each do |bootable|
    require_relative bootable
  end

  self
end

.env_load(options = {}) ⇒ self (protected) Originally defined in module Concern::Env

TODO:

load different (or additionnal) files depending on env/mode

Load .env file (and store result)

Returns:

  • (self)

.env_loadedHash Originally defined in module Concern::Env

Loaded environment

Returns:

  • (Hash)

Instance Method Details

#helperSys::Proc::Helper (protected) Originally defined in module Concern::Helper

Returns:

  • (Sys::Proc::Helper)

#load!self

Load project

Returns:

  • (self)


118
119
120
# File 'lib/kamaze/project.rb', line 118

def load!
  tasks_load!
end

#modeString Originally defined in module Concern::Mode

Get project mode

Returns:

  • (String)

#path(*args) ⇒ Pathname

Returns:

  • (Pathname)


111
112
113
# File 'lib/kamaze/project.rb', line 111

def path(*args)
  pwd.join(*args)
end

#pwdPathname

Returns:

  • (Pathname)


123
124
125
# File 'lib/kamaze/project.rb', line 123

def pwd
  ::Pathname.new(Dir.pwd)
end

#subject!Class (protected)

Main class (subject of project)

Returns:

  • (Class)


150
151
152
153
154
# File 'lib/kamaze/project.rb', line 150

def subject!
  resolvable = name.to_s.tr('-', '/')

  helper.get(:inflector).resolve(resolvable)
end

#tasksArray<Symbol> Originally defined in module Concern::Tasks

Get tasks

Returns:

  • (Array<Symbol>)

#tasks=(tasks) ⇒ Object Originally defined in module Concern::Tasks

Set tasks

Parameters:

  • tasks (Array)

#tasks_load!self (protected) Originally defined in module Concern::Tasks

Load tasks

Tasks are loaded only when Rake::DSL is defined. DSL::Definition is loaded during tasks loading.

Returns:

  • (self)

See Also:

#toolsHash Originally defined in module Concern::Tools

Get tools

Returns:

  • (Hash)

#tools=(tools) ⇒ Object Originally defined in module Concern::Tools

Parameters:

  • tools (Hash)

#versionObject

Returns:

See Also:



29
30
31
# File 'lib/kamaze/project.rb', line 29

def version
  subject.const_get('VERSION')
end