Class: Yanapiri::CLI

Inherits:
Thor
  • Object
show all
Includes:
ActionView::Helpers::DateHelper, Thor::Actions
Defined in:
lib/yanapiri/cli.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = [], local_options = {}, config = {}) ⇒ CLI

Returns a new instance of CLI.



9
10
11
12
# File 'lib/yanapiri/cli.rb', line 9

def initialize(args = [], local_options = {}, config = {})
  super(args, local_options, config)
  @bot = crear_bot options
end

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/yanapiri/cli.rb', line 14

def self.exit_on_failure?
  true
end

Instance Method Details

#actualizar(nombre) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/yanapiri/cli.rb', line 63

def actualizar(nombre)
  path_repo_base = "#{nombre}-base"
  `git clone [email protected]:#{options.repo_base}.git #{path_repo_base}`

  foreach_repo(nombre) do
    `git remote rm base`
    `git remote add base ../../#{path_repo_base}`
    `git pull base master`
    `git push origin master`
  end

  `rm -rf #{path_repo_base}`
end

#clonar(nombre) ⇒ Object



57
58
59
# File 'lib/yanapiri/cli.rb', line 57

def clonar(nombre)
  @bot.clonar_entrega!(nombre)
end

#corregir(nombre) ⇒ Object



88
89
90
91
92
93
# File 'lib/yanapiri/cli.rb', line 88

def corregir(nombre)
  info "Comenzando corrección de #{nombre}. #{opciones_correccion}"
  foreach_entrega(nombre) do |entrega|
    @bot.preparar_correccion! entrega, options.renombrar_proyecto_wollok ? [TransformacionWollok] : []
  end
end

#initObject



43
44
45
46
47
48
49
# File 'lib/yanapiri/cli.rb', line 43

def init
  config = OpenStruct.new
  config.orga = ask 'Nombre de la organización:', default: File.basename(Dir.pwd)
  leer_opciones_comunes! config
  success "De ahora en más, trabajaré con la organización #{config.orga} siempre que estés dentro de esta carpeta. #{opciones_correccion config}"
  dump_local_config! config
end

#preparar(nombre) ⇒ Object



79
80
81
# File 'lib/yanapiri/cli.rb', line 79

def preparar(nombre)
  @bot.preparar_entrega! nombre, options.repo_base
end

#setupObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/yanapiri/cli.rb', line 25

def setup
  say '¡Kamisaraki! Yo soy Yanapiri, tu ayudante, y necesito algunos datos antes de empezar:', :bold

  config = OpenStruct.new
  config.github_token = ask 'Token de GitHub (lo necesito para armar los pull requests):', default: options.github_token
  config.orga = ask 'Organización por defecto:', default: options.orga
  leer_opciones_comunes! config

  begin
    bot = crear_bot config
    success "Los pull requests serán creados por @#{bot.github_user.login}, asegurate de que tenga los permisos necesarios en las organizaciones que uses."
    dump_global_config! config
  rescue Octokit::Unauthorized
    raise 'El access token de GitHub no es correcto, revisalo por favor.'
  end
end

#ultimo_commit(nombre) ⇒ Object



99
100
101
102
103
104
105
# File 'lib/yanapiri/cli.rb', line 99

def ultimo_commit(nombre)
  print_table entregas(nombre)
      .select {|e| not options.solo_excedidos or e.fuera_de_termino?}
      .sort_by(&:fecha)
      .reverse!
      .map(&method(:fila_ultimo_commit))
end

#versionObject



20
21
22
# File 'lib/yanapiri/cli.rb', line 20

def version
  say "yanapiri version #{VERSION}"
end

#whoamiObject



52
53
54
# File 'lib/yanapiri/cli.rb', line 52

def whoami
  say "Estoy trabajando en la organización #{@bot.organization}, commiteando con el usuario #{@bot.git_author}."
end