rails-dev-tools 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []