Class: Dev::Project
- Inherits:
-
Object
- Object
- Dev::Project
- Defined in:
- lib/dev/project.rb
Instance Attribute Summary collapse
-
#current_app ⇒ String
Cerca di determinare l’app corrente.
-
#engines ⇒ Array<String>
Gli engines del progetto.
-
#folder ⇒ String
La cartella del progetto.
-
#main_apps ⇒ Array<String>
Le main apps del progetto.
-
#name ⇒ String
Il nome del progetto.
-
#type ⇒ String
Il tipo del progetto (multi folder o single folder).
Instance Method Summary collapse
-
#app_version(app_name = self.current_app) ⇒ String
Ritorna la versione dell’app.
-
#app_version_file(app_name = self.current_app) ⇒ String
Determina il file di versione dell’app.
-
#apps ⇒ Array<String>
Ritorna tutte le app del progetto.
-
#bump_app_version_to(version) ⇒ nil
Alza la versione dell’app corrente a quella specificata.
-
#chdir_app(app_name = self.current_app) ⇒ nil
Sposta la directory corrente nella cartella dell’app specificata.
-
#initialize(config_file) ⇒ Project
constructor
A new instance of Project.
-
#valid_app?(app_name = self.current_app) ⇒ Boolean
Determina se l’app è valida.
Constructor Details
#initialize(config_file) ⇒ Project
Returns a new instance of Project.
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/dev/project.rb', line 19 def initialize(config_file) config = YAML.load_file(config_file).deep_symbolize_keys! self.name = config[:dev][:project_name] self.type = config[:dev][:project_type] self.folder = config[:dev][:project_folder] if self.type == :multi self.main_apps = config[:dev][:main_apps] || [] self.engines = config[:dev][:engines] || [] else self.main_apps = [ self.name ] self.engines = [] end end |
Instance Attribute Details
#current_app ⇒ String
Cerca di determinare l’app corrente.
13 14 15 |
# File 'lib/dev/project.rb', line 13 def current_app @current_app end |
#engines ⇒ Array<String>
Returns gli engines del progetto.
17 18 19 |
# File 'lib/dev/project.rb', line 17 def engines @engines end |
#folder ⇒ String
Returns la cartella del progetto.
11 12 13 |
# File 'lib/dev/project.rb', line 11 def folder @folder end |
#main_apps ⇒ Array<String>
Returns le main apps del progetto.
15 16 17 |
# File 'lib/dev/project.rb', line 15 def main_apps @main_apps end |
#name ⇒ String
Returns il nome del progetto.
7 8 9 |
# File 'lib/dev/project.rb', line 7 def name @name end |
#type ⇒ String
Returns il tipo del progetto (multi folder o single folder).
9 10 11 |
# File 'lib/dev/project.rb', line 9 def type @type end |
Instance Method Details
#app_version(app_name = self.current_app) ⇒ String
Ritorna la versione dell’app. Prende l’app corrente se non viene specificata nessuna app.
103 104 105 106 107 108 109 110 111 112 |
# File 'lib/dev/project.rb', line 103 def app_version(app_name = self.current_app) chdir_app(app_name) if File.exists? "lib/#{app_name}/version.rb" File.read("lib/#{app_name}/version.rb") .match(/VERSION = '([0-9\.]+)'\n/) .try(:captures).try(:first) else `git tag`.split("\n").first end end |
#app_version_file(app_name = self.current_app) ⇒ String
Determina il file di versione dell’app. Prende l’app corrente se non viene specificata nessuna app.
92 93 94 |
# File 'lib/dev/project.rb', line 92 def app_version_file(app_name = self.current_app) "lib/#{app_name}/version.rb" end |
#apps ⇒ Array<String>
Ritorna tutte le app del progetto.
37 38 39 |
# File 'lib/dev/project.rb', line 37 def apps self.main_apps + self.engines end |
#bump_app_version_to(version) ⇒ nil
Alza la versione dell’app corrente a quella specificata.
120 121 122 123 124 125 126 127 128 |
# File 'lib/dev/project.rb', line 120 def bump_app_version_to(version) if File.exists? self.app_version_file version_file = self.app_version_file version_content = File.read("#{version_file}") File.open(version_file, 'w+') do |f| f.puts version_content.gsub(/VERSION = '[0-9\.]+'\n/, "VERSION = '#{version}'\n") end end end |
#chdir_app(app_name = self.current_app) ⇒ nil
Sposta la directory corrente nella cartella dell’app specificata. Prende l’app corrente se non viene specificata nessuna app.
73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/dev/project.rb', line 73 def chdir_app(app_name = self.current_app) if self.type == :multi if app_name.in? self.main_apps Dir.chdir "#{project.folder}/main_apps/#{app_name}" elsif app_name.in? self.engines Dir.chdir "#{project.folder}/engines/#{app_name}" end elsif self.type == :single Dir.chdir project.folder end end |
#valid_app?(app_name = self.current_app) ⇒ Boolean
Determina se l’app è valida. Prende l’app corrente se non viene specificata nessuna app.
56 57 58 59 60 61 62 63 |
# File 'lib/dev/project.rb', line 56 def valid_app?(app_name = self.current_app) if app_name.in? self.apps true else raise ExecutionError.new "The app '#{app_name}' is neither a main app nor an engine "\ "within the project '#{self.name}'." end end |