ztrening 0.0.3 → 0.0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/bin/zt +36 -32
- data/lib/ztrening.rb +67 -11
- data/test/test_ztrening.rb +3 -0
- metadata +5 -4
data/History.txt
CHANGED
data/bin/zt
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
|
3
|
+
|
4
|
+
# TODO: prebaciti ovo lib, nova klasa - eval 'CLI.exec ARGV'
|
4
5
|
|
5
6
|
require 'rubygems'
|
6
7
|
require File.expand_path(File.dirname(__FILE__) + "/../lib/ztrening")
|
@@ -11,6 +12,7 @@ USAGE = <<EOS
|
|
11
12
|
usage: zt.rb [refresh, list, find, open]
|
12
13
|
find [string]
|
13
14
|
open [filename] => file mora imati '// zt [ime zadatka]' na 1. liniji
|
15
|
+
todo [add, del[ete]/rem[ove]]
|
14
16
|
-h, --help
|
15
17
|
EOS
|
16
18
|
|
@@ -23,11 +25,12 @@ if !ARGV[0] || ARGV[0]=='-h' || ARGV[0]=='--help'
|
|
23
25
|
end
|
24
26
|
|
25
27
|
|
26
|
-
if ARGV[0] == '
|
28
|
+
if ARGV[0] == '-v' || ARGV[0] == '--version'
|
29
|
+
puts "Version: #{ZtreningM::VERSION}"
|
30
|
+
elsif %w(refresh download).include? ARGV[0]
|
27
31
|
z = Ztrening.new :web
|
28
32
|
puts 'New list downloaded'
|
29
33
|
elsif ARGV[0] == 'open' && ARGV[1]
|
30
|
-
# TODO: maknuti gore const file regex
|
31
34
|
z = Ztrening.new
|
32
35
|
|
33
36
|
if File.exists? ARGV[1]
|
@@ -64,45 +67,22 @@ elsif ARGV[0] == 'open' && ARGV[1]
|
|
64
67
|
end
|
65
68
|
|
66
69
|
if z.lista.nil? or z.lista.empty?
|
67
|
-
hh =
|
68
|
-
puts "Nema zadataka s
|
70
|
+
hh = ime.nil? ? "ID-om" : "imenom"
|
71
|
+
puts "Nema zadataka s takvim #{hh}!"
|
69
72
|
end
|
70
73
|
|
71
|
-
hh =
|
74
|
+
hh = ime.nil? ? "ID" : "ime"
|
72
75
|
puts "Oznaka zadatka iz datoteke: #{str} (#{hh})"
|
73
76
|
|
74
77
|
puts "cnt: #{z.lista.count}"
|
75
|
-
|
76
|
-
# puts "Postoji vise zadataka koji sadrze '#{ime}';"
|
77
|
-
# puts "Odaberi jedan:"
|
78
|
-
# limit, ok = 10, 1
|
79
|
-
# if z.lista.count > limit
|
80
|
-
# puts "Broj nadjenih zadataka prelazi limit (#{limit}) !"
|
81
|
-
# exit
|
82
|
-
# end
|
83
|
-
# z.lista.each_with_index { |l,idx| printf "%4s: %s\n", idx+1, l[1] }
|
84
|
-
# while ok > 0
|
85
|
-
# print " > "; STDOUT.flush
|
86
|
-
# id = STDIN.gets.chomp.to_i
|
87
|
-
# if id.nil? or id == '' or !id.is_a?(Integer)
|
88
|
-
# puts " ?? err 1"
|
89
|
-
# end
|
90
|
-
# # id -= 1
|
91
|
-
# if !(1..(z.lista.count)).include?(id)
|
92
|
-
# puts "izvan rangea!"; ok=1
|
93
|
-
# else ok=0 end
|
94
|
-
# end
|
95
|
-
# puts "Otvaram zadatak: #{z.lista[id.to_i-1][1]}"
|
96
|
-
# z.open id-1
|
97
|
-
# else
|
98
|
-
# z.open :name => ime | :id => id
|
78
|
+
|
99
79
|
z.open id
|
100
80
|
end
|
101
81
|
elsif ARGV[0] == 'find'
|
102
|
-
if ARGV[1]
|
82
|
+
if ARGV[1..ARGC-1]
|
103
83
|
z = Ztrening.new
|
104
84
|
#z.find ARGV[1..32].join ' '
|
105
|
-
if ARGV[1]
|
85
|
+
if ARGV[1][/.+/]
|
106
86
|
z.find ARGV[1]
|
107
87
|
z.lista_txt
|
108
88
|
else
|
@@ -115,6 +95,30 @@ elsif ARGV[0] == 'find'
|
|
115
95
|
elsif ARGV[0] == 'list'
|
116
96
|
z = Ztrening.new
|
117
97
|
z.lista_txt
|
98
|
+
# elsif ARGV[0] == 'todo'
|
99
|
+
# if %w[show list ls].include? ARGV[1]
|
100
|
+
# elsif %w[add].include? ARGV[1]
|
101
|
+
# elsif %w[del rem delete remove].include? ARGV[1]
|
102
|
+
# end
|
103
|
+
# TODO: zt set ZADATAK STATUS
|
104
|
+
# elsif ARGV[0] == 'set'
|
105
|
+
# if ARGV[1]
|
106
|
+
# z = Ztrening.new
|
107
|
+
# # set ID/NAME STATUS
|
108
|
+
# z.set ARGV[1], ARGV[2]
|
109
|
+
# else
|
110
|
+
# puts USAGE
|
111
|
+
# exit
|
112
|
+
# end
|
113
|
+
elsif ARGV[0] == 'init'
|
114
|
+
(puts USAGE; exit) if !ARGV[1].nil? # TODO: manual dir as arg1
|
115
|
+
z = Ztrening.new
|
116
|
+
if !z.in_zaddir?
|
117
|
+
z.create_zaddir `pwd`.chop
|
118
|
+
else
|
119
|
+
puts "Vec postoji zaddir conf file u ovom dir-u"
|
120
|
+
exit
|
121
|
+
end
|
118
122
|
else
|
119
123
|
puts USAGE
|
120
124
|
exit
|
data/lib/ztrening.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__)) unless
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
require 'net/http'
|
3
4
|
|
4
5
|
class Array
|
5
6
|
def moj_keys() Hash[*self.collect { |v| [v, true] }.flatten] end
|
6
7
|
end
|
7
8
|
|
8
9
|
module ZtreningM
|
9
|
-
VERSION = '0.0.
|
10
|
+
VERSION = '0.0.4.1'
|
10
11
|
|
11
12
|
class Ztrening
|
12
13
|
def initialize(*opts)
|
13
|
-
@list_fname
|
14
|
-
@cmd_dwl
|
15
|
-
@
|
14
|
+
@list_fname = 'ztlista.txt'
|
15
|
+
# @cmd_dwl = "wget -q http://z-trening.com/training.php\?all_tasks\=1 -O #{@list_fname}"
|
16
|
+
@dwl_link = "z-trening.com|/training.php\?all_tasks\=1"
|
17
|
+
@link_base = 'http://z-trening.com/tasks.php?show_task=_ID_'
|
18
|
+
@ztdir_fname = '.ztconf' # bolje ztdata; file sa conf vars
|
19
|
+
@todo_fname = '_PROJDIR_/todo.txt'
|
16
20
|
|
17
21
|
@lista ||= []
|
18
22
|
@opts = opts.moj_keys
|
@@ -22,7 +26,7 @@ module ZtreningM
|
|
22
26
|
if !@opts[:web].nil?
|
23
27
|
web
|
24
28
|
execout = exec
|
25
|
-
(puts execerrmsg; exit) if execout.nil? || execout.empty?
|
29
|
+
(puts execerrmsg; exit) if (execout.nil? || execout.empty?)
|
26
30
|
@lista = parse(execout)
|
27
31
|
else
|
28
32
|
if !File.exists? @list_fname
|
@@ -33,6 +37,7 @@ module ZtreningM
|
|
33
37
|
(puts execerrmsg; exit) if execout.nil? || execout.empty?
|
34
38
|
@lista = parse(execout)
|
35
39
|
end
|
40
|
+
@lista.sort!
|
36
41
|
end
|
37
42
|
|
38
43
|
def find(str)
|
@@ -49,7 +54,7 @@ module ZtreningM
|
|
49
54
|
ll=[]
|
50
55
|
@lista.each { |e| ll << e if e[1] == str }
|
51
56
|
@lista = ll
|
52
|
-
puts "find_by_name lista cnt: #{@lista.count}"
|
57
|
+
# puts "find_by_name lista cnt: #{@lista.count}"
|
53
58
|
end
|
54
59
|
|
55
60
|
def find_by_id(id)
|
@@ -77,10 +82,6 @@ module ZtreningM
|
|
77
82
|
@lista
|
78
83
|
end
|
79
84
|
|
80
|
-
# def lista=(l)
|
81
|
-
# @lista=l
|
82
|
-
# end
|
83
|
-
|
84
85
|
def lista_txt
|
85
86
|
puts 'Zadatci:'
|
86
87
|
@lista.each { |l| puts "Zadatak: #{l[1]}" }
|
@@ -99,6 +100,53 @@ module ZtreningM
|
|
99
100
|
puts '</ul>' if opts[:li]
|
100
101
|
end
|
101
102
|
|
103
|
+
|
104
|
+
# get_zaddir
|
105
|
+
def findzaddir
|
106
|
+
# nadji DirName s datotekom '.ztprojdir', prema gore
|
107
|
+
# false ako nema
|
108
|
+
|
109
|
+
for n in (0..32)
|
110
|
+
p = ('../'*n)
|
111
|
+
return File.expand_path(p) if File.file?("#{p}#{@ztdir_fname}")
|
112
|
+
return false if File.expand_path p == "/"
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
def create_zaddir(dir) #(args) - koristi hash i symbole
|
118
|
+
# TODO: args: string dirname='', bool templates, ...
|
119
|
+
if File.directory? dir
|
120
|
+
File.open("#{File.dirname dir}/@ztdir_fname", "w"){ |f|
|
121
|
+
f.write(<<EOS)
|
122
|
+
todo_file = todo.txt
|
123
|
+
status_file = status.txt
|
124
|
+
EOS
|
125
|
+
}
|
126
|
+
FileUtils.touch "#{File.dirname dir}/todo.txt"
|
127
|
+
FileUtils.touch "#{File.dirname dir}/status.txt"
|
128
|
+
puts "Napravljen ztdir u dir-u #{dir}"
|
129
|
+
else
|
130
|
+
puts "Dir #{dir} ne postoji, ne mogu napraviti zaddir!"
|
131
|
+
return false
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def in_zaddir?
|
136
|
+
(@ztdir_fname && File.exists?("./#{@ztdir_fname}")) || false
|
137
|
+
end
|
138
|
+
|
139
|
+
def set(arg)
|
140
|
+
if arg.start_with? '500000'
|
141
|
+
id = arg
|
142
|
+
else
|
143
|
+
find_by_name arg
|
144
|
+
id = @lista[0][0]
|
145
|
+
end
|
146
|
+
# TODO: set()
|
147
|
+
end
|
148
|
+
|
149
|
+
|
102
150
|
private
|
103
151
|
|
104
152
|
def link(id)
|
@@ -106,6 +154,7 @@ module ZtreningM
|
|
106
154
|
end
|
107
155
|
|
108
156
|
def exec
|
157
|
+
# FIXME: open(@list_fname).read > stdin od thread-a
|
109
158
|
t = Thread.new { `#{cmd}` }
|
110
159
|
return t.value.split "\r\n"
|
111
160
|
end
|
@@ -118,7 +167,14 @@ module ZtreningM
|
|
118
167
|
|
119
168
|
def web
|
120
169
|
puts 'Downloading list ...'
|
121
|
-
%x[#{@cmd_dwl}]
|
170
|
+
# %x[#{@cmd_dwl}]
|
171
|
+
link = @dwl_link.split '|'
|
172
|
+
Net::HTTP.start(link[0]) { |http|
|
173
|
+
resp = http.get(link[1])
|
174
|
+
File.open(@list_fname, "wb") { |file|
|
175
|
+
file.write(resp.body)
|
176
|
+
}
|
177
|
+
}
|
122
178
|
end
|
123
179
|
|
124
180
|
def cmd
|
data/test/test_ztrening.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ztrening
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 93
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
|
9
|
+
- 4
|
10
|
+
- 1
|
11
|
+
version: 0.0.4.1
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- BKrsta
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-06
|
19
|
+
date: 2010-08-06 00:00:00 +02:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|