rails-dev-tools 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,21 @@
1
+ module Dev
2
+ module Executables
3
+ module Commands
4
+ module Version
5
+
6
+ ##
7
+ # Stampa la versione corrente di Dev.
8
+ #
9
+ # @return [nil]
10
+ def version
11
+ puts
12
+ print "Dev".green
13
+ print " versione: "
14
+ puts "#{Dev::VERSION}.".limegreen
15
+ puts
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,131 @@
1
+ require 'yaml'
2
+
3
+ module Dev
4
+ class Project
5
+
6
+ # @return [String] il nome del progetto.
7
+ attr_accessor :name
8
+ # @return [String] il tipo del progetto (multi folder o single folder).
9
+ attr_accessor :type
10
+ # @return [String] la cartella del progetto.
11
+ attr_accessor :folder
12
+ # @return [String] l'app corrente.
13
+ attr_accessor :current_app
14
+ # @return [Array<String>] le main apps del progetto.
15
+ attr_accessor :main_apps
16
+ # @return [Array<String>] gli engines del progetto.
17
+ attr_accessor :engines
18
+
19
+ def initialize(config_file)
20
+ config = YAML.load_file(config_file).deep_symbolize_keys!
21
+ self.name = config[:dev][:project_name]
22
+ self.type = config[:dev][:project_type]
23
+ self.folder = config[:dev][:project_folder]
24
+ if self.type == :multi
25
+ self.main_apps = config[:dev][:main_apps] || []
26
+ self.engines = config[:dev][:engines] || []
27
+ else
28
+ self.main_apps = [ self.name ]
29
+ self.engines = []
30
+ end
31
+ end
32
+
33
+ ##
34
+ # Ritorna tutte le app del progetto.
35
+ #
36
+ # @return [Array<String>] le app del progetto.
37
+ def apps
38
+ self.main_apps + self.engines
39
+ end
40
+
41
+ ##
42
+ # Cerca di determinare l'app corrente.
43
+ #
44
+ # @return [String] l'app corrente.
45
+ def current_app
46
+ @current_app || File.basename(Dir.pwd)
47
+ end
48
+
49
+ ##
50
+ # Determina se l'app è valida. Prende l'app corrente se non
51
+ # viene specificata nessuna app.
52
+ #
53
+ # @param [String] app_name il nome dell'app.
54
+ #
55
+ # @return [Boolean] se l'app è fra quelle esistenti.
56
+ def valid_app?(app_name = self.current_app)
57
+ if app_name.in? self.apps
58
+ true
59
+ else
60
+ raise ExecutionError.new "The app '#{app_name}' is neither a main app nor an engine "\
61
+ "within the project '#{self.name}'."
62
+ end
63
+ end
64
+
65
+ ##
66
+ # Sposta la directory corrente nella cartella
67
+ # dell'app specificata. Prende l'app corrente se non
68
+ # viene specificata nessuna app.
69
+ #
70
+ # @param [String] app_name il nome dell'app.
71
+ #
72
+ # @return [nil]
73
+ def chdir_app(app_name = self.current_app)
74
+ if self.type == :multi
75
+ if app_name.in? self.main_apps
76
+ Dir.chdir "#{project.folder}/main_apps/#{app_name}"
77
+ elsif app_name.in? self.engines
78
+ Dir.chdir "#{project.folder}/engines/#{app_name}"
79
+ end
80
+ elsif self.type == :single
81
+ Dir.chdir project.folder
82
+ end
83
+ end
84
+
85
+ ##
86
+ # Determina il file di versione dell'app. Prende l'app corrente se non
87
+ # viene specificata nessuna app.
88
+ #
89
+ # @param [String] app_name il nome dell'app.
90
+ #
91
+ # @return [String] il file di versione dell'app.
92
+ def app_version_file(app_name = self.current_app)
93
+ "lib/#{app_name}/version.rb"
94
+ end
95
+
96
+ ##
97
+ # Ritorna la versione dell'app. Prende l'app corrente se non
98
+ # viene specificata nessuna app.
99
+ #
100
+ # @param [String] app_name il nome dell'app.
101
+ #
102
+ # @return [String] la versione dell'app.
103
+ def app_version(app_name = self.current_app)
104
+ chdir_app(app_name)
105
+ if File.exists? "lib/#{app_name}/version.rb"
106
+ File.read("lib/#{app_name}/version.rb")
107
+ .match(/VERSION = '([0-9\.]+)'\n/)
108
+ .try(:captures).try(:first)
109
+ else
110
+ `git tag`.split("\n").first
111
+ end
112
+ end
113
+
114
+ ##
115
+ # Alza la versione dell'app corrente a quella specificata.
116
+ #
117
+ # @param [String] version la versione a cui arrivare.
118
+ #
119
+ # @return [nil]
120
+ def bump_app_version_to(version)
121
+ if File.exists? self.app_version_file
122
+ version_file = self.app_version_file
123
+ version_content = File.read("#{version_file}")
124
+ File.open(version_file, 'w+') do |f|
125
+ f.puts version_content.gsub(/VERSION = '[0-9\.]+'\n/, "VERSION = '#{version}'\n")
126
+ end
127
+ end
128
+ end
129
+
130
+ end
131
+ end
@@ -0,0 +1,29 @@
1
+ ##
2
+ # Crea un metodo per ogni colore da poter chiamare su un'istanza di una stringa.
3
+
4
+ class String
5
+
6
+ self.define_singleton_method(:colors) do
7
+ %i( aliceblue antiquewhite aqua aquamarine azure beige bisque blanchedalmond blue blueviolet brown burlywood
8
+ cadetblue chartreuse chocolate coral cornflower cornsilk crimson cyan darkblue darkcyan darkgoldenrod
9
+ darkgray darkgreen darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon
10
+ darkseagreen darkslateblue darkslategray darkturquoise darkviolet deeppink deepskyblue dimgray
11
+ dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray
12
+ green greenyellow honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen
13
+ lemonchiffon lightblue lightcoral lightcyan lightgoldenrod lightgray lightgreen lightpink lightsalmon
14
+ lightseagreen lightskyblue lightslategray lightsteelblue lightyellow lime limegreen linen magenta maroon
15
+ mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen
16
+ mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navyblue oldlace
17
+ olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip
18
+ peachpuff peru pink plum powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown
19
+ seagreen seashell sienna silver skyblue slateblue slategray snow springgreen steelblue tan teal
20
+ thistle tomato turquoise violet webgray webgreen webmaroon webpurple wheat whitesmoke yellow yellowgreen )
21
+ end
22
+
23
+ self.colors.each do |color|
24
+ self.define_method color do
25
+ Rainbow(self).send(:color, color)
26
+ end
27
+ end
28
+
29
+ end
@@ -0,0 +1,3 @@
1
+ module Dev
2
+ VERSION = '1.1.2'
3
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails/generators'
2
+
3
+ module Generators
4
+ module Dev
5
+
6
+ class ConfigGenerator < Rails::Generators::Base
7
+ source_root File.expand_path("../../templates", __FILE__)
8
+
9
+ desc "Creates a dev configuration file."
10
+
11
+ def copy_config
12
+ template "dev.yml.erb", "dev.yml"
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,44 @@
1
+ <%# Finds out the type of the app, its name, and the name of its project -%>
2
+ <%
3
+ if Dir.pwd.include?('/main_apps')
4
+ app_name = File.basename Dir.pwd
5
+ project_type = :multi
6
+ project_folder = Dir.pwd.partition('/main_apps').first
7
+ elsif Dir.pwd.include?('/engines')
8
+ app_name = File.basename Dir.pwd
9
+ project_type = :multi
10
+ project_folder = Dir.pwd.partition('/engines').first
11
+ else
12
+ app_name = File.basename Dir.pwd
13
+ project_type = :single
14
+ project_name = app_name
15
+ project_folder = Dir.pwd
16
+ end
17
+ -%>
18
+ <%# Generates config file based on the type of the app -%>
19
+ <%
20
+ case project_type
21
+ when :multi
22
+ project_name = File.basename project_folder
23
+ main_apps = Dir.glob("#{project_folder}/main_apps/*").map do |main_app_folder|
24
+ File.basename main_app_folder
25
+ end
26
+ -%>
27
+ dev:
28
+ project_type: <%= project_type %>
29
+ project_name: <%= project_name %>
30
+ project_folder: <%= project_folder %>
31
+ main_apps:
32
+ <% main_apps.each do |main_app| -%>
33
+ - <%= main_app %>
34
+ <% end -%>
35
+ engines:
36
+ <% engines.each do |engine| -%>
37
+ - <%= engine %>
38
+ <% end -%>
39
+ <% when :single -%>
40
+ dev:
41
+ project_type: <%= project_type %>
42
+ project_name: <%= project_name %>
43
+ project_folder: <%= project_folder %>
44
+ <% end -%>
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :dev do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails-dev-tools
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Francesco Ballardin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-12-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 5.2.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.2.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rainbow
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
83
+ description: A set of tools to help development on complex Ruby on Rails projects
84
+ with many main apps and engines.
85
+ email:
86
+ - francesco.ballardin@gmail.com
87
+ executables:
88
+ - dev
89
+ extensions: []
90
+ extra_rdoc_files: []
91
+ files:
92
+ - MIT-LICENSE
93
+ - README.md
94
+ - Rakefile
95
+ - app/assets/config/dev_manifest.js
96
+ - bin/dev
97
+ - config/routes.rb
98
+ - lib/dev.rb
99
+ - lib/dev/engine.rb
100
+ - lib/dev/executable.rb
101
+ - lib/dev/executables/commands/feature.rb
102
+ - lib/dev/executables/commands/hotfix.rb
103
+ - lib/dev/executables/commands/pull.rb
104
+ - lib/dev/executables/commands/push.rb
105
+ - lib/dev/executables/commands/release.rb
106
+ - lib/dev/executables/commands/status.rb
107
+ - lib/dev/executables/commands/test.rb
108
+ - lib/dev/executables/commands/version.rb
109
+ - lib/dev/project.rb
110
+ - lib/dev/rainbow.rb
111
+ - lib/dev/version.rb
112
+ - lib/generators/dev/config_generator.rb
113
+ - lib/generators/templates/dev.yml.erb
114
+ - lib/tasks/dev_tasks.rake
115
+ homepage: https://github.com/Pluvie/rails-dev-tools
116
+ licenses:
117
+ - MIT
118
+ metadata: {}
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubyforge_project:
135
+ rubygems_version: 2.7.6
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: A set of tools to help development on complex Ruby on Rails projects with
139
+ many main apps and engines.
140
+ test_files: []