MultiConsole (pequeña libreria) - by pRoTos

Iniciado por ANTRAX, Febrero 24, 2010, 04:10:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 24, 2010, 04:10:25 PM Ultima modificación: Julio 31, 2014, 09:46:53 PM por Expermicid

Bueno, muchas veces (aunque deberian ser menos, no debemos depender de las consolas), en un script necesitamos llamar a la consola del sistema. El problema es que alomejor no sabemos en que systema operativo está corriendo el script, claro que podriamos buscarlo con RUBY_PLATFORM, y luego hacer un if, o un case etc...Pero para no tener que hacer eso, pues he empezado a escribir esta pequeña libreria. Se trata de una especie de multiconsola, con comandos propios que valen para los dos principales SO (win y linux). Con un nombre de comando, no necesitas saber si estás en win o lin. De momento lo he hecho para los principales comandos, para la v2 si alguien quiere ampliarla, le puede meter mas comandos, y mas SO:

Por ejemplo si queremos listar los archivos del directorio actual seria ls para uno, dir para otro. Con esta consola seria 'ver'
console.ver
Y haciendo esto se ejecutaria el ls o el dir dependiendo del os y se nos devolveria un objeto IO.popen (ver capitulo de hilos de sh4van3). Este es un pequeño ejemplo.
Está escrito en forma de clase para poder incuirlo en cualquier otro code que tengamos ^^.
No me enrollo más:

Código: ruby
#Clase para emular algunos comandos de consola
#La particularidad es que los comandos son propios de la clase
#Y la misma clase reconoce si está corriendo sobre win o linux
#Por tanto, usando el mismo comando, de esta consola, opera sobre win y lin
#Consola multiplataforma, sintaxis propia, para codes en los que se necesita system.

class Console
def initialize
if RUBY_PLATFORM =~ /linux/
@os="linux"
end
if RUBY_PLATFORM =~ /win/
@os="win"
end
end
def ver
case @os
when 'linux'
@r = IO.popen('ls')
when 'win'
@r = IO.popen('dir')
end
return @r
end

def cd(dir)
@r = IO.popen('cd #{dir}')
end

def dir
case @os
when 'linux'
@r = IO.popen('pwd')
when 'win'
@r = IO.popen('cd')
end
end

def limpiar
case @os
when 'linux'
@r = IO.popen('clear')
when 'win'
@r = IO.popen('cls')
end
end


def borrar(arc)
case @os
when 'linux'
@r = IO.popen('rm #{arc}')
when 'win'
@r = IO.popen('del #{arc}')
end
end

def mover(arc, dest)
case @os
when 'linux'
@r = IO.popen('mv #{arc} #{dest}')
when 'win'
@r = IO.popen('move #{arc} #{dest}')
end
end

def copiar(arc, dest)
case @os
when 'linux'
@r = IO.popen('cp #{arc} #{dest}')
when 'win'
@r = IO.popen('copy #{arc} #{dest}')
end
end

def creard(name)
case @os
when 'linux'
@r = IO.popen('mkdir #{name}')
when 'win'
@r = IO.popen('md #{name}')
end
end

def borrard(name)
case @os
when 'linux'
@r = IO.popen('rm -r #{name}')
when 'win'
@r = IO.popen('rd #{name}')
end
end
end


#Prueba
consola = Console.new
ls=consola.ver