yanapiri 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 250ac7618be318da8f0fcb91f4e59a5498837a10
4
- data.tar.gz: d7dbe0528eaddf91a39581d9bcd015b570286c44
3
+ metadata.gz: eeaeba7a366a0b292357f53c1927b922921d53ac
4
+ data.tar.gz: 03161dbd5f7c27f1fda3cbbf9dbf69c9ad4723cd
5
5
  SHA512:
6
- metadata.gz: 11f3bfb7276987ee0d90304ed2b022c587c9fd6b0c666ce520de4480e13fd9036a778cc02d2f9d7749903c0bc84b12257182757083fb2621595c32016cef5c90
7
- data.tar.gz: d46ac724a68a62169385640dcc65b1833d56ec043a0c3d1e6ede99567f405547abc310064a1eb806d603a3b93e1ad214ce0d28f4388dc0bda5aaafc0e370927e
6
+ metadata.gz: 214237b162c0b874a90e0d3858d3639d10e0337c9a3d2e638941ec631e5ca794de437bf25bcdbb64200e041a6ebdf044636f1ea5a1bfc3516246fabffddfd8d5
7
+ data.tar.gz: 25d1812c9576b1f5eff20ecb92ba5869e513390738006177864827773e13a7550450c94bbec4f178cf01546976cc118e9ec179afe88d010fa7559e0661791992
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yanapiri (0.1.0)
4
+ yanapiri (0.2.0)
5
5
  activesupport (~> 4.2)
6
6
  git (~> 1.5)
7
7
  octokit (~> 4.0)
data/lib/yanapiri/bot.rb CHANGED
@@ -13,7 +13,7 @@ class Bot
13
13
  Dir.chdir(nombre) do
14
14
  result.items.each do |repo|
15
15
  puts "Clonando #{repo.name}..."
16
- Git.clone repo.ssh_url, repo.name
16
+ clonar! repo.full_name
17
17
  end
18
18
  end
19
19
  end
@@ -26,6 +26,12 @@ class Bot
26
26
  crear_pull_request! entrega
27
27
  end
28
28
 
29
+ def preparar_entrega!(nombre, repo_base)
30
+ repo = clonar! repo_base
31
+ aplanar_commits! repo
32
+ publicar_repo! nombre, repo
33
+ end
34
+
29
35
  def nombre
30
36
  'Yanapiri Bot'
31
37
  end
@@ -44,6 +50,22 @@ class Bot
44
50
 
45
51
  private
46
52
 
53
+ def aplanar_commits!(repo)
54
+ repo.chdir do
55
+ `git checkout --orphan new-master master`
56
+ commit! repo, 'Enunciado preparado por Yanapiri'
57
+ `git branch -M new-master master`
58
+ end
59
+ end
60
+
61
+ def clonar!(repo_slug)
62
+ Git.clone "git@github.com:#{repo_slug}.git", repo_slug.split('/').last
63
+ end
64
+
65
+ def commit!(repo, mensaje)
66
+ repo.commit_all mensaje, author: git_author
67
+ end
68
+
47
69
  def crear_pull_request!(entrega)
48
70
  @gh_client.create_pull_request("#{@organization}/#{entrega.id}", "base", "entrega", "Corrección", entrega.mensaje_pull_request) rescue nil
49
71
  end
@@ -54,7 +76,18 @@ class Bot
54
76
  File.open(proyecto_wollok, "w") {|file| file.puts xml.sub(/<name>.*<\/name>/, "<name>#{entrega.id}</name>") }
55
77
  end
56
78
 
57
- entrega.repo.commit_all 'Renombrado proyecto Wollok', author: git_author
79
+ commit! entrega.repo, 'Renombrado proyecto Wollok'
80
+ end
81
+
82
+ def publicar_repo!(nombre, repo)
83
+ repo_nuevo = crear_repo!(nombre)
84
+ repo.remote('origin').remove
85
+ repo.add_remote 'origin', repo_nuevo.ssh_url
86
+ repo.push
87
+ end
88
+
89
+ def crear_repo!(nombre)
90
+ @gh_client.create_repository nombre, organization: @organization
58
91
  end
59
92
 
60
93
  def publicar_cambios!(entrega)
@@ -1,3 +1,3 @@
1
1
  module Yanapiri
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/yanapiri.rb CHANGED
@@ -25,6 +25,12 @@ module Yanapiri
25
25
  true
26
26
  end
27
27
 
28
+ map %w(--version -v) => :version
29
+ desc "--version, -v", "Muestra la versión actual de Yanapiri"
30
+ def version
31
+ say "yanapiri version #{VERSION}"
32
+ end
33
+
28
34
  desc 'setup', 'Configura a Yanapiri para el primer uso'
29
35
  def setup
30
36
  say '¡Kamisaraki! Yo soy Yanapiri, tu ayudante, y necesito algunos datos antes de empezar:', :bold
@@ -76,6 +82,12 @@ module Yanapiri
76
82
  `rm -rf #{path_repo_base}`
77
83
  end
78
84
 
85
+ option :repo_base, {required: true, aliases: :b}
86
+ desc 'preparar [ENTREGA]', 'Crea el repositorio que va a servir de base para la entrega, con un solo commit en la rama master'
87
+ def preparar(nombre)
88
+ @bot.preparar_entrega! nombre, options.repo_base
89
+ end
90
+
79
91
  desc 'corregir [ENTREGA]', 'Prepara la entrega para la corrección, creando los archivos y el pull request'
80
92
  option :commit_base, {required: true, aliases: :b}
81
93
  option :fecha_limite, {default: Time.now.to_s, aliases: :l}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yanapiri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Federico Aloi