usar una tutorial tareas tarea subtareas recursos que nombres mostrar microsoft las junto gantt diagrama como barras asignar agrupar ruby thor

ruby - tutorial - Ejecute una aplicación CLI Thor sin argumentos o nombre de tarea



que es una tarea en project (3)

Estoy buscando una manera de crear una aplicación thor de línea de comandos que ejecute un método predeterminado sin ningún argumento. Jugué con la opción default_method de Thor, pero aún así requiere que pase un argumento. Encontré un caso similar en el que alguien quería ejecutar una tarea de CLI Thor con argumentos pero sin un nombre de tarea.

Me gustaría ejecutar una tarea sin nombre de tarea y sin argumentos. ¿Es posible tal cosa?


Si bien es un poco intrincado, resolví un problema similar al capturar la opción como el argumento en sí:

argument :name def init if name === ''--init'' file_name = ".blam" template(''templates/blam.tt'', file_name) unless File.exists?(file_name) exit(0) end end

Cuando se ejecuta en un Thor::Group este método se ejecuta antes que otros y me permite engañar al programa para que responda a una opción como argumento.

Este código es de https://github.com/neverstopbuilding/blam .


Tipo de piratería, pero donde de todos modos solo hay una acción definida, simplemente puse el nombre de la acción en la matriz ARGV que se pasa:

class GitTranslate < Thor desc "translate <repo-name>", "Obtain a full url given only a repo name" option :bitbucket, type: :boolean, aliases: ''b'' def translate(repo) if options[:bitbucket] str = "freedomben/#{repo}.git" puts "SSH: [email protected]:#{str}" puts "HTTPS: https://[email protected]/#{str}" else str = "FreedomBen/#{repo}.git" puts "SSH: [email protected]:#{str}" puts "HTTPS: https://github.com/#{str}" end end end

Luego, donde comienzo la clase pasando ARGV:

GitTranslate.start(ARGV.dup.unshift("translate"))


Parece que la forma correcta de Thor para hacer esto es usar default_task :

class Commands < Thor desc "whatever", "The default task to run when no command is given" def whatever ... end default_task :whatever end Commands.start

Si por alguna razón no es lo que necesita, debería poder hacer algo como

class Commands < Thor ... end if ARGV.empty? # Perform the default, it doesn''t have to be a Thor task Commands.new.whatever else # Start Thor as usual Commands.start end