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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +109 -0
- data/Rakefile +29 -0
- data/app/assets/config/dev_manifest.js +0 -0
- data/bin/dev +6 -0
- data/config/routes.rb +2 -0
- data/lib/dev.rb +12 -0
- data/lib/dev/engine.rb +4 -0
- data/lib/dev/executable.rb +205 -0
- data/lib/dev/executables/commands/feature.rb +111 -0
- data/lib/dev/executables/commands/hotfix.rb +121 -0
- data/lib/dev/executables/commands/pull.rb +51 -0
- data/lib/dev/executables/commands/push.rb +59 -0
- data/lib/dev/executables/commands/release.rb +133 -0
- data/lib/dev/executables/commands/status.rb +39 -0
- data/lib/dev/executables/commands/test.rb +49 -0
- data/lib/dev/executables/commands/version.rb +21 -0
- data/lib/dev/project.rb +131 -0
- data/lib/dev/rainbow.rb +29 -0
- data/lib/dev/version.rb +3 -0
- data/lib/generators/dev/config_generator.rb +18 -0
- data/lib/generators/templates/dev.yml.erb +44 -0
- data/lib/tasks/dev_tasks.rake +4 -0
- metadata +140 -0
@@ -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
|
data/lib/dev/project.rb
ADDED
@@ -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
|
data/lib/dev/rainbow.rb
ADDED
@@ -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
|
data/lib/dev/version.rb
ADDED
@@ -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 -%>
|
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: []
|