Class: Kamaze::Project

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

Overview

Represent a project

Sample of use:

Kamaze.project do |c|
  c.subject     = Kamaze::Project
  c.name        = :'kamaze-project'
  c.tasks       = [ :doc, :gem ]
end

Defined Under Namespace

Modules: Bundled, Concern, DSL, Tools Classes: Autoload, Config, Debug, Helper, Inflector, Observable, Observer, Struct, ToolsProvider

Constant Summary collapse

VERSION =
Kamaze::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.



101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/kamaze/project.rb', line 101

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)


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

def name
  @name
end

#subjectClass

Project subject, main class

Returns:

  • (Class)


82
83
84
# File 'lib/kamaze/project.rb', line 82

def subject
  @subject
end

Class Method Details

.bootself

Load "env file" + ruby files from boot directory

Returns:

  • (self)


90
91
92
93
94
95
96
97
98
# File 'lib/kamaze/project.rb', line 90

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

Load .env file (and store result)

Returns:

  • (self)

.env_loadedHash Originally defined in module Concern::Env

Loaded environment

Returns:

  • (Hash)

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

Returns:

  • (Sys::Proc::Helper)

.instance(&block) ⇒ Kamaze::Project

Get an instance of project

Returns:



63
64
65
# File 'lib/kamaze/project.rb', line 63

def instance(&block)
  helper.get(:project).setup(&block)
end

Instance Method Details

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

Returns:

  • (Sys::Proc::Helper)

#load!self

Load project

Returns:

  • (self)


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

def load!
  tasks_load!
end

#load_task!(task) ⇒ String (protected) Originally defined in module Concern::Tasks

Load task by given name

Parameters:

  • task (String)

Returns:

  • (String)

#modeString Originally defined in module Concern::Mode

Get project mode

Returns:

  • (String)

#path(*args) ⇒ Pathname

Returns:

  • (Pathname)


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

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

#pwdPathname

Returns:

  • (Pathname)


129
130
131
# File 'lib/kamaze/project.rb', line 129

def pwd
  Pathname.new(Dir.pwd)
end

#subject!Class (protected)

Main class (subject of project)

Returns:

  • (Class)


156
157
158
159
160
# File 'lib/kamaze/project.rb', line 156

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) ⇒ Array<String> Originally defined in module Concern::Tasks

Set tasks

Parameters:

  • tasks (Array)

Returns:

  • (Array<String>)

#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:

#tasks_nsPathname (protected) Originally defined in module Concern::Tasks

Get namespace for default tasks

Returns:

  • (Pathname)

#toolsToolsProvider|Hash Originally defined in module Concern::Tools

Get tools

Returns:

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

Parameters:

  • tools (Hash)

#versionObject

Returns:

See Also:

  • Version


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

def version
  subject.const_get('VERSION')
end