yanapiri 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.grenrc +1 -1
- data/lib/locales/es-AR.yml +1 -0
- data/lib/yanapiri/bot.rb +4 -2
- data/lib/yanapiri/cli.rb +12 -4
- data/lib/yanapiri/entrega.rb +64 -17
- data/lib/yanapiri/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dddfec46b22192f03ce76dfc7e5edd1123b19fe5fe01a36085f9cfe9ba84d2e9
|
4
|
+
data.tar.gz: 9b0862c9821ef7607b08856db8a80d80ceb061d03dce1a29c3dfcdfc62749260
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7a4ed25e2ad9ff0dcddbed6082ca4b77761259c3888aad37b5a258784d605643847eeb5df04983f4458157c75e931ef8cf11cc47c9385c603e5117786d3c1cc
|
7
|
+
data.tar.gz: f23e8c0839c0f25281323a3ac6ed17c6fa18efd31c17799d1704c272ff72ca3f656d859f3c4368c05035c5c5ffe343d71a6b7eea4b61d5ea50c130710510fd7c
|
data/.grenrc
CHANGED
data/lib/locales/es-AR.yml
CHANGED
data/lib/yanapiri/bot.rb
CHANGED
@@ -28,8 +28,8 @@ module Yanapiri
|
|
28
28
|
if not entrega.hay_cambios?
|
29
29
|
crear_issue_advertencia! entrega
|
30
30
|
else
|
31
|
-
entrega.
|
32
|
-
entrega.
|
31
|
+
entrega.crear_branch_base!
|
32
|
+
entrega.crear_branch_entrega!
|
33
33
|
transformaciones.select {|t| t.aplica? entrega}.each {|t| t.transformar! entrega, self}
|
34
34
|
publicar_cambios! entrega
|
35
35
|
crear_pull_request! entrega
|
@@ -61,6 +61,8 @@ module Yanapiri
|
|
61
61
|
def commit!(repo, mensaje)
|
62
62
|
repo.add
|
63
63
|
repo.commit mensaje, author: git_author
|
64
|
+
rescue Git::GitExecuteError
|
65
|
+
# no se pudo commitear porque no había cambios
|
64
66
|
end
|
65
67
|
|
66
68
|
def aplanar_commits!(repo)
|
data/lib/yanapiri/cli.rb
CHANGED
@@ -26,8 +26,9 @@ module Yanapiri
|
|
26
26
|
say '¡Kamisaraki! Yo soy Yanapiri, tu ayudante, y necesito algunos datos antes de empezar:', :bold
|
27
27
|
|
28
28
|
config = OpenStruct.new
|
29
|
-
config.github_token = ask 'Token de GitHub (lo necesito para armar los pull requests):'
|
30
|
-
config.orga = ask 'Organización por defecto:'
|
29
|
+
config.github_token = ask 'Token de GitHub (lo necesito para armar los pull requests):', default: options.github_token
|
30
|
+
config.orga = ask 'Organización por defecto:', default: options.orga
|
31
|
+
leer_opciones_comunes! config
|
31
32
|
|
32
33
|
begin
|
33
34
|
bot = crear_bot config
|
@@ -42,7 +43,8 @@ module Yanapiri
|
|
42
43
|
def init
|
43
44
|
config = OpenStruct.new
|
44
45
|
config.orga = ask 'Nombre de la organización:', default: File.basename(Dir.pwd)
|
45
|
-
|
46
|
+
leer_opciones_comunes! config
|
47
|
+
success "De ahora en más, trabajaré con la organización #{config.orga} siempre que estés dentro de esta carpeta. Al corregir, utilizaré el modo #{config.modo_estricto ? 'estricto' : 'relajado'} y #{config.renombrar_proyecto_wollok ? '' : 'no '}renombraré los proyectos Wollok."
|
46
48
|
dump_local_config! config
|
47
49
|
end
|
48
50
|
|
@@ -82,6 +84,7 @@ module Yanapiri
|
|
82
84
|
option :commit_base, {required: true, aliases: :b}
|
83
85
|
option :fecha_limite, {default: Time.now.to_s, aliases: :l}
|
84
86
|
option :renombrar_proyecto_wollok, {type: :boolean, default: true}
|
87
|
+
option :modo_estricto, {type: :boolean, default: false}
|
85
88
|
def corregir(nombre)
|
86
89
|
foreach_entrega(nombre) do |entrega|
|
87
90
|
@bot.preparar_correccion! entrega, options.renombrar_proyecto_wollok ? [TransformacionWollok] : []
|
@@ -132,7 +135,7 @@ module Yanapiri
|
|
132
135
|
|
133
136
|
def foreach_entrega(nombre)
|
134
137
|
foreach_repo(nombre) do |repo, base_path|
|
135
|
-
yield Entrega.new "#{base_path}/#{repo}", options.commit_base, Time.parse(options.fecha_limite)
|
138
|
+
yield Entrega.new "#{base_path}/#{repo}", options.commit_base, Time.parse(options.fecha_limite), options.modo_estricto
|
136
139
|
end
|
137
140
|
end
|
138
141
|
|
@@ -170,6 +173,11 @@ module Yanapiri
|
|
170
173
|
if File.exist? source then YAML.load_file source else {} end
|
171
174
|
end
|
172
175
|
|
176
|
+
def leer_opciones_comunes!(config)
|
177
|
+
config.modo_estricto = yes? '¿Usar modo estricto? [y/N]'
|
178
|
+
config.renombrar_proyecto_wollok = !(no? '¿Renombrar proyectos Wollok al corregir? [Y/n]')
|
179
|
+
end
|
180
|
+
|
173
181
|
def options
|
174
182
|
original_options = super
|
175
183
|
defaults_global = load_config global_config_file
|
data/lib/yanapiri/entrega.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
module Yanapiri
|
2
2
|
class Entrega
|
3
3
|
attr_reader :id, :fecha_limite, :repo, :commit_base
|
4
|
+
delegate :mensaje_pull_request, :commit_entrega, to: :@modo
|
4
5
|
|
5
|
-
def initialize(repo_path, commit_base = nil, fecha_limite = nil)
|
6
|
+
def initialize(repo_path, commit_base = nil, fecha_limite = nil, modo_estricto = false)
|
6
7
|
@id = File.basename repo_path
|
7
8
|
@fecha_limite = fecha_limite || Time.now + 1.second
|
8
9
|
@commit_base = commit_base || '--max-parents=0 HEAD'
|
10
|
+
@modo = (modo_estricto ? ModoEstricto : ModoRelajado).new self
|
9
11
|
@repo = Git.open repo_path
|
10
12
|
end
|
11
13
|
|
12
14
|
def fuera_de_termino?
|
13
|
-
|
14
|
-
@repo.log.since(@fecha_limite.iso8601).any?
|
15
|
+
commits_fuera_de_termino.any?
|
15
16
|
end
|
16
17
|
|
17
18
|
def autor
|
@@ -23,31 +24,77 @@ module Yanapiri
|
|
23
24
|
@repo.log.first.author_date
|
24
25
|
end
|
25
26
|
|
26
|
-
def
|
27
|
-
|
28
|
-
"**Ojo:** tu último commit fue el #{formato_humano fecha}, pero la fecha límite era el #{formato_humano fecha_limite}.\n\n¡Tenés que respetar la fecha de entrega establecida! :point_up:"
|
29
|
-
else
|
30
|
-
''
|
31
|
-
end
|
27
|
+
def contiene_archivo?(nombre)
|
28
|
+
@repo.chdir { File.exist? nombre }
|
32
29
|
end
|
33
30
|
|
31
|
+
def commits_fuera_de_termino
|
32
|
+
@repo.checkout 'master'
|
33
|
+
@repo.log.since(@fecha_limite.iso8601)
|
34
|
+
end
|
35
|
+
|
36
|
+
def hay_cambios?
|
37
|
+
@repo.log.between(@commit_base, 'master').any?
|
38
|
+
end
|
39
|
+
|
40
|
+
def crear_branch_entrega!
|
41
|
+
crear_branch! 'entrega', commit_entrega
|
42
|
+
end
|
43
|
+
|
44
|
+
def crear_branch_base!
|
45
|
+
crear_branch! 'base', commit_base
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
34
50
|
def crear_branch!(nombre, head)
|
35
51
|
@repo.checkout head
|
36
52
|
@repo.branch(nombre).checkout
|
37
53
|
end
|
38
54
|
|
39
|
-
|
40
|
-
|
41
|
-
end
|
55
|
+
class ModoCorreccion
|
56
|
+
delegate_missing_to :@entrega
|
42
57
|
|
43
|
-
|
44
|
-
|
58
|
+
def initialize(entrega)
|
59
|
+
@entrega = entrega
|
60
|
+
end
|
61
|
+
|
62
|
+
def mensaje_pull_request
|
63
|
+
if fuera_de_termino? then mensaje_fuera_de_termino else '' end
|
64
|
+
end
|
65
|
+
|
66
|
+
def mensaje_fuera_de_termino
|
67
|
+
"**Ojo:** tu último commit fue el #{formato_humano fecha}, pero la fecha límite era el #{formato_humano fecha_limite}.\n\n¡Tenés que respetar la fecha de entrega establecida! :point_up:"
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def formato_humano(fecha)
|
73
|
+
I18n.l(fecha, format: :human)
|
74
|
+
end
|
45
75
|
end
|
46
76
|
|
47
|
-
|
77
|
+
class ModoEstricto < ModoCorreccion
|
78
|
+
def mensaje_fuera_de_termino
|
79
|
+
super + "\n\nNo se tuvieron en cuenta los siguientes commits:\n\n#{commits_desestimados}"
|
80
|
+
end
|
81
|
+
|
82
|
+
def commit_entrega
|
83
|
+
repo.checkout 'master'
|
84
|
+
repo.log.until(fecha_limite.iso8601).first.sha
|
85
|
+
end
|
48
86
|
|
49
|
-
|
50
|
-
|
87
|
+
private
|
88
|
+
|
89
|
+
def commits_desestimados
|
90
|
+
commits_fuera_de_termino.map {|c| "* #{c.message} (#{c.sha})"}.join("\n")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class ModoRelajado < ModoCorreccion
|
95
|
+
def commit_entrega
|
96
|
+
'master'
|
97
|
+
end
|
51
98
|
end
|
52
99
|
end
|
53
100
|
end
|
data/lib/yanapiri/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yanapiri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Federico Aloi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|