Module: Slimtimercli::Helper

Included in:
CommandLine
Defined in:
lib/slimtimercli/helper.rb

Instance Method Summary collapse

Instance Method Details

#check_and_create_dirObject



32
33
34
35
36
37
38
# File 'lib/slimtimercli/helper.rb', line 32

def check_and_create_dir
  raise "Home DIR not set!" unless ENV["HOME"]

  unless File.directory?(root)
    FileUtils.mkdir(root)
  end
end

#config_fileObject



20
21
22
# File 'lib/slimtimercli/helper.rb', line 20

def config_file
  File.join(root, "config.yml")
end

#current_fileObject



28
29
30
# File 'lib/slimtimercli/helper.rb', line 28

def current_file
  File.join(root, "current.yml")
end

#dump_to_file(object, file) ⇒ Object



59
60
61
62
63
64
# File 'lib/slimtimercli/helper.rb', line 59

def dump_to_file(object, file)
  check_and_create_dir
  File.open( file, 'w' ) do |out|
    YAML.dump(object, out )
  end
end

#load_configObject



40
41
42
43
44
45
46
47
48
49
# File 'lib/slimtimercli/helper.rb', line 40

def load_config
  check_and_create_dir

  unless File.exists?(config_file)
    File.open( config_file, 'w' ) do |out|
      YAML.dump({}, out )
    end
  end
  load_file(config_file)
end

#load_file(file) ⇒ Object



55
56
57
# File 'lib/slimtimercli/helper.rb', line 55

def load_file(file)
  File.open( file ) { |yf| YAML::load( yf ) }
end

#loginObject



3
4
5
6
7
8
9
10
# File 'lib/slimtimercli/helper.rb', line 3

def 
  config = Helper::load_config
  st = SlimTimer.new(config["email"], config["password"],
    config["api_key"])
  st.

  st
end

#parse(args) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/slimtimercli/helper.rb', line 71

def parse(args)

  if !args || args.empty?
    warn "Need to specify arguments, run slimtimer -h for help"
    exit 2

  end

  options = OpenStruct.new
  options.force = false

  opts = OptionParser.new do |opts|

    opts.banner = "Usage: slimtimer [options]"

    opts.on("-s TASK", "--start TASK",
      "Start a TASK given by the task name") do |t|

      options.run = "start"
      options.task_name = t
    end

    opts.on("-c TASK", "--create TASK",
      "Create a ne task by the given name") do |t|
      options.run = "create"
      options.task_name = t
    end

    opts.on("-e", "--end" ,"Stops time recording for the given task") do
      options.run = "stop"
    end

    opts.on("-t", "--tasks", "Prints all available tasks") do
      options.run = "tasks"
    end

    opts.on("-f", "--force", "Force deletion of tasks") do
      options.force = true
    end

    opts.on("--setup", "Setup your account") do
      options.run = "setup"
    end

    opts.on_tail("-h", "Shows this note") do
      puts opts
      exit
    end

    opts.on("--help", "Show verbose help") do
      @out.puts "SlimTimer is a tool to record your time spend on a\ntask. SlimTimer CLI allows you to controll your\nSlimTimer directly from where you spend most of your\ntime - on the command line. To use SlimTimer proceed\nwith the following steps:\n\nThe first time you need to setup SlimTimer CLI with\n\n  slimtimer setup\n\nNow it will ask for your email and password and API key\nto use with your account. These information will be stored\nin \#{config_file}\n\nTo create a task run\n\n  slimtimer create_task my_shiny_task\n\nTo spend some time on the task you have to make the timer run\n\n  slimtimer start my_shiny_task\n\nWhen you finished working on a task, you can call\n\n  slimtimer end\n\nThis will write the time spend back to SlimTimer.com.\nFinally you can run\n\n  slimtimer tasks\n\nTo show all your tasks available.\n"
      exit
    end
  end

  begin
    opts.parse!(args)
  rescue
    puts $!.message
    exit
  end
  options
end

#rm_currentObject



66
67
68
69
# File 'lib/slimtimercli/helper.rb', line 66

def rm_current
  FileUtils.rm(current_file) if
    File.exists?(current_file)
end

#rootObject



12
13
14
15
16
17
18
# File 'lib/slimtimercli/helper.rb', line 12

def root
  @root ||= if ENV.key?("XDG_CONFIG_HOME") and File.exists?( ENV['XDG_CONFIG_HOME'] )
              File.join(ENV['XDG_CONFIG_HOME'], "slimtimer")
            else
              File.join(ENV["HOME"], ".slimtimer")
            end
end

#save_config(config) ⇒ Object



51
52
53
# File 'lib/slimtimercli/helper.rb', line 51

def save_config(config)
  dump_to_file(config, config_file)
end

#tasks_fileObject



24
25
26
# File 'lib/slimtimercli/helper.rb', line 24

def tasks_file
  File.join(root, "tasks.yml")
end