#!/usr/bin/ruby require "rubygems" begin require "getopt/std" rescue LoadError puts "Ruby Gem 'getopt' not found. Try `sudo gem install getopt`\n\n" end require "fileutils" class Taskr attr_accessor :version, :file_name def initialize @version = "Version: 0.01" @file_name = "#{ENV['home']}.taskr" if !File.exists?(self.file_name) FileUtils.touch(self.file_name) end end def usage usage = < Append task to list -i -t Insert at -d Delete task from list -v Display version info -u Display usage (this help) -h Display this help EOF end def get tasks = Array.new File.open(self.file_name, 'r+') do |file| while(line = file.gets) tasks << "#{line}" end end if tasks.length == 0 puts "Empty List! W000000!" else puts tasks end end def append(task) file = File.open(self.file_name, 'a') count = self.count(self.file_name) file.write("#{count.to_s} #{task}\n") end def insert(num, task) entries = self.count(self.file_name) - 1 if entries.to_i < num.to_i self.append(task) else count = 1 tmp = File.new('/tmp/tasks', 'w') file = File.open(self.file_name, 'r+') while (line = file.gets) if line =~ /^#{num}/ tmp.puts count.to_s + " " + task count += 1 tmp.puts line.gsub(/^\d+/, count.to_s) else tmp.puts line.gsub(/^\d+/, count.to_s) end count += 1 end File.rename('/tmp/tasks', self.file_name) end end def del(task_no) count = 1 tmp = File.new('/tmp/tasks', 'w') file = File.open(self.file_name, 'r+') while (line = file.gets) if line !~ /^#{task_no}/ tmp.puts line.gsub(/^\d+/, count.to_s) count += 1 end end File.rename('/tmp/tasks', self.file_name) end def count(file) count = 1 File.open(file, 'r') do |fh| count += 1 while fh.gets end return count end end t = Taskr.new # need to catch error here opts = Getopt::Std.getopts('a:d:i:t:ghuv') if opts.length == 0 puts t.usage end if opts['g'] t.get end if opts['a'] t.append(opts['a']) end if opts['i'] t.insert(opts['i'], opts['t']) end if opts['d'] t.del(opts['d']) end if opts['v'] puts t.version end if opts['u'] or opts['h'] puts t.usage end