diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a97fa56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +*.swp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0968fc6 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ + +D := / +PREFIX := /usr/local +BIN_PREFIX := $(PREFIX)/bin + +all: truckle + @echo 'Nothing to do :)' + +install: truckle + install -m 0755 truckle $(D)$(BIN_PREFIX)/truckle + for c in `./truckle --list-commands`; do ln -fs truckle $(D)$(BIN_PREFIX)/truckle-$${c} ; done diff --git a/truckle b/truckle index 2bf7952..0ed09f1 100755 --- a/truckle +++ b/truckle @@ -88,24 +88,47 @@ class RunCave attr_reader :dummy, :resumable attr_writer :resume_file def initialize preargs = nil, cmd = nil, args = nil - @resume_file, @dummy, @preargs, @cmd, @args = nil, nil, preargs || [], cmd || [], args || [] + @resume_file, @preargs, @cmd, @args = nil, preargs || [], cmd || [], args || [] + @colored = @dummy = @resumable = nil end + def can_be_dummy + @dummy = true unless false == @dummy + self + end def dummy?() @dummy end def dummy!() @dummy = true; self end - def dummy=( v) @dummy = !!v; self end + def dummy=(v) @dummy = !!v; self end + def can_be_resumable + @resumable = true unless false == @resumable + self + end def resumable?() @resumable end def resumable!() @resumable = true; self end - def resumable=( v) @resumable = !!v; self end + def resumable=(v) @resumable = !!v; self end + + def can_be_colored + @colored = true unless false == @colored + self + end + def colored?() @colored end + def colored!() @colored = true; self end + def colored=(v) @colored = !!v; self end def prepare_resume_file resumable? ? ['--resume-file', @resume_file || raise(ResumeFileExpected)] : [] end + def prepare_colored + colored? ? ['--colour', 'yes'] : [] + end + def prepare raise CommandExpected, "Set #{self}.cmd = yourcommand." if @cmd.nil? or @cmd.empty? - [ :cave, @preargs, @cmd, prepare_resume_file, *@args ].flatten.select{|x|x}.map {|x| x.to_s } + [ + :cave, prepare_colored, @preargs, @cmd, prepare_resume_file, *@args + ].flatten.select{|x|x}.map {|x| x.to_s } end def run @@ -141,7 +164,7 @@ class RunCave end def pager *args, &exe - if $ttymode + if STDOUT.tty? IRB::Pager::pager *args, &exe else exe.call @@ -160,7 +183,18 @@ cave = RunCave.new cmds = Commands.new 'truckle', File.basename(argv0) cmds.on {|*args| cave.this(*args).() } -cmds.on :help, '-h', '--help', &pagered { cmd=cmds.prefix; STDOUT.puts <