Usando Thor, ¿puedo pasar a la CLI solo un argumento (no una tarea) y enviarlo a un método / tarea predeterminado?

Estoy usando Thor para crear una CLI para una gema Ruby que estoy haciendo. El ejecutable idealmente tomaría un comando como myapp path/to/file, en el sentido de que prefiero que el usuario no tenga que definir una tarea, solo un argumento.

Revisé la API pero tarea_predeterminada solo funciona cuando no hay tarea / argumento presente.

¿Cómo puedo hacer que Thor envíe este argumento de archivo variable a un método / tarea predeterminado y no lo interprete como una tarea que no existe?

preguntado el 08 de enero de 11 a las 18:01

¿Hay alguna razón por la que no aceptó la respuesta? ¿Hay algo malo con eso? -

No pude hacerlo funcionar usando técnicas de la respuesta proporcionada. -

1 Respuestas

ruta de myapp / a / archivo

respuesta en dos partes:

1) myapp ... para usar un ejecutable que no sea 'thor', necesitará utilizar la biblioteca 'thor / runner'.

2) path/to/file se puede lograr en el método de inicialización, así:

class Something < Thor
  def initialize(*args)
    super
    case @path
      when /something$/; self.class.new([@path],options).do_run
    end
  end

  desc 'do_run', "do something"
  argument :path, :banner=>"path/to/file", :optional=>true
  def do_run
    # something
  end
end

Respondido el 19 de enero de 11 a las 04:01

oh, también, una forma más fácil de hacer 'myapp' es agregar una línea de shebang en la parte superior #!/usr/bin/env ruby y una MyApp.start en la parte inferior, que es un método conveniente para este propósito. Puede ser un poco oscuro con argumentos, aunque ... jdar

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.