yanapiri 0.4.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f710baa7d82010ba66deae44afdf2cb56579376c0de9ceb4e14bbb98ffb58af8
4
- data.tar.gz: 18f192c5fd4bc903a7745add91b43963e2501a4152595767e03ca577f6ee534d
3
+ metadata.gz: e7117c01c45a52bbab55772c4aadc3c2dc94eb1a23e72a836592ae2afd2d486e
4
+ data.tar.gz: 23cf9d929a7892058ee2db5ec1109adeaa20aa5c87a219d2d6c65cd71b95262f
5
5
  SHA512:
6
- metadata.gz: 279bac56a407910856cf3436daeab996e18824bcfc27411233d42fda66afd87ddea3bb3c1d1bdb8ddec716d9e4f24d00efeb6a586a1f62b4bfce93126df88173
7
- data.tar.gz: 0ac6a9ae43291b9f2cee01b9f3e017c12030e8ebc334bf42909af7c964000abb42846300648d3a0d58b6f9c37e6b13ad35733416aa2d8b7fcf492c9789863a70
6
+ metadata.gz: 2fc9e139a62e676955ea79c62c92efb6ba85275f46cd9d0b959ebdc448b9d48b79885754ab12e098f11fc5d99c23e6e21fd019beb0244d2a7d433ff09fa9fcb6
7
+ data.tar.gz: 35cf05a828a454c3b0f0a4fa3d14d08b435f7a0209f4294e7a8c638c1824bab42f68b6ecc3ecfe6b562e69041cbe72bbb081932e3de7dd5e63750d82a8b8ccbe
data/README.md CHANGED
@@ -36,6 +36,14 @@ yanapiri clonar entrega-1
36
36
  yanapiri corregir entrega-1 --commit-base 326336a8ba771611 --fecha-limite "2019-05-01 23:59:59"
37
37
  ```
38
38
 
39
+ Otra opción posible, para cuando el commit base no es el mismo para todas las entregas, es especificarlo mediante un índice (con base 1). Por ejemplo, esto tomará como base al tercer commit que tenga el repositorio:
40
+
41
+ ```
42
+ yanapiri corregir entrega-1 --commit-base index:3 --fecha-limite "2019-05-01 23:59:59"
43
+ ```
44
+
45
+
46
+
39
47
  ### Trabajando con más de una organización
40
48
 
41
49
  Yanapiri soporta tres formas de configurar la organización:
data/lib/yanapiri/bot.rb CHANGED
@@ -28,11 +28,16 @@ module Yanapiri
28
28
  if not entrega.hay_cambios?
29
29
  crear_issue_advertencia! entrega
30
30
  else
31
- entrega.crear_branch_base!
32
- entrega.crear_branch_entrega!
33
- transformaciones.select {|t| t.aplica? entrega}.each {|t| t.transformar! entrega, self}
34
- publicar_cambios! entrega
35
- crear_pull_request! entrega
31
+ if entrega.ya_preparada?
32
+ entrega.actualizar!
33
+ publicar_cambios! entrega
34
+ else
35
+ entrega.crear_branch_base!
36
+ entrega.crear_branch_entrega!
37
+ transformaciones.select {|t| t.aplica? entrega}.each {|t| t.transformar! entrega, self}
38
+ publicar_cambios! entrega
39
+ crear_pull_request! entrega
40
+ end
36
41
  end
37
42
  end
38
43
 
@@ -6,9 +6,9 @@ module Yanapiri
6
6
  def initialize(repo_path, commit_base = nil, fecha_limite = nil, modo_estricto = false)
7
7
  @id = File.basename repo_path
8
8
  @fecha_limite = fecha_limite || Time.now + 1.second
9
- @commit_base = commit_base || '--max-parents=0 HEAD'
10
9
  @modo = (modo_estricto ? ModoEstricto : ModoRelajado).new self
11
10
  @repo = Git.open repo_path
11
+ @commit_base = parse_commit_base commit_base
12
12
  end
13
13
 
14
14
  def fuera_de_termino?
@@ -45,6 +45,15 @@ module Yanapiri
45
45
  crear_branch! 'base', commit_base
46
46
  end
47
47
 
48
+ def actualizar!
49
+ repo.checkout 'entrega'
50
+ repo.merge commit_entrega, nil
51
+ end
52
+
53
+ def ya_preparada?
54
+ repo.is_local_branch? 'entrega'
55
+ end
56
+
48
57
  def to_s
49
58
  string = "entrega de @#{autor}, "
50
59
  string << if hay_cambios? then "modificada por última vez #{formato_humano fecha}" else "sin cambios" end
@@ -63,6 +72,19 @@ module Yanapiri
63
72
  @repo.branch(nombre).checkout
64
73
  end
65
74
 
75
+ def parse_commit_base(commit_base)
76
+ if not commit_base
77
+ '--max-parents=0 HEAD'
78
+ elsif commit_base.start_with? 'index'
79
+ requested = commit_base.split(':').last.to_i
80
+ index = [@repo.log.size - requested, 0].max
81
+ @repo.log[index].sha
82
+ else
83
+ commit_base
84
+ end
85
+ end
86
+
87
+
66
88
  class ModoCorreccion
67
89
  delegate_missing_to :@entrega
68
90
 
@@ -1,3 +1,3 @@
1
1
  module Yanapiri
2
- VERSION = "0.4.4"
2
+ VERSION = "0.5.0"
3
3
  end
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.4
4
+ version: 0.5.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-22 00:00:00.000000000 Z
11
+ date: 2019-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
213
  - !ruby/object:Gem::Version
214
214
  version: '0'
215
215
  requirements: []
216
- rubygems_version: 3.0.3
216
+ rubygems_version: 3.0.4
217
217
  signing_key:
218
218
  specification_version: 4
219
219
  summary: Ayudante para administrar entregas via GitHub Classroom.