hse 0.1.19 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -105,7 +105,7 @@ module Hse
105
105
  desc 'check [FILE]', 'check the correctness of module in FILE'
106
106
  def check(fname = 'default')
107
107
  doc = parse.build fname
108
- if doc[:title].nil?
108
+ if doc[:ru].nil?
109
109
  say "error: title should be filled", :red
110
110
  elsif doc[:en].nil?
111
111
  say "error: English title should be filled", :red
@@ -133,13 +133,13 @@ module Hse
133
133
  desc 'push [FILE]', 'parse FILE, build json DOC and push DOC'
134
134
  def push(fname = false, env = 'default')
135
135
  doc = build fname
136
- puts "BUILD DOC_ID = #{doc[:_id]}"
137
136
  revision = remote(env).get_doc_revision(doc)
138
137
  doc['_rev'] = revision if revision
139
138
  puts "rev ====== #{revision}"
140
- post_body = JSON.generate doc
141
139
  puts "pushing document id #{doc[:_id]}"
142
- remote(env).put(doc[:_id], post_body)
140
+ #post_body = JSON.generate doc
141
+ #remote(env).put(doc[:_id], post_body)
142
+ remote(env).push_docs doc
143
143
  end
144
144
 
145
145
  desc 'generate [APPDIR]', 'generates .couchapprc'
@@ -153,6 +153,11 @@ module Hse
153
153
  template('couchapprc.erb', '.couchapprc')
154
154
  end
155
155
 
156
+ desc 'version', 'print version'
157
+ def version
158
+ say Hse::VERSION
159
+ end
160
+
156
161
 
157
162
  private
158
163
 
@@ -8,8 +8,61 @@ module Hse
8
8
  #load_couchapprc
9
9
  end
10
10
 
11
- def build fname
11
+ def readable path
12
+ fn = File.expand_path(File.join(app_dir, path))
13
+ puts "app_dir: #{app_dir}"
14
+ puts "readable: #{fn}"
15
+ File.readable?(fn) ? fn : false
16
+ end
17
+
18
+ def build path
19
+ readable_file = readable path
20
+ return false unless readable_file
21
+ doc = {type:"blog", body:""}
22
+ head = true
23
+ type = path.split("/").first.sub(/s$/,"")
24
+ return "path should start with posts or modules or events" unless %(post module event).include?(type)
25
+ doc[:type] = type
26
+ if type == "post"
27
+ time = Time.new
28
+ doc[:timestamp] = time.to_i #.strftime("%d/%m/%Y %H/%M/%S") # JS: "dd/MM/yyyy HH/mm/ss"
29
+ date = time.strftime("%d-%m-%Y")
30
+ doc[:date] = date
31
+ end
32
+ uuid = UUIDTools::UUID.sha1_create UUIDTools::UUID_DNS_NAMESPACE, path
33
+ doc[:_id] = uuid.to_s
34
+ lines = File.readlines readable_file
35
+ lines.each do |line|
36
+ line.strip!
37
+ next if line.empty?
38
+ if head && line.start_with?("---")
39
+ head = false
40
+ next
41
+ end
42
+ if head
43
+ parts = line.split(":")
44
+ key = parts[0].to_sym
45
+ val = parts[1..-1].join(":")
46
+ doc[key] = val.strip
47
+ next
48
+ end
49
+ line.gsub!("] (","](")
50
+ line += "\n\n"
51
+ doc[:body] += line
52
+ end
53
+ return "should be :ru, :en titles" unless doc[:en]
54
+ rawurl = doc[:en].split(":").first.gsub(" ", "-")
55
+ url = (type == "post") ? "#{date}-#{rawurl}" : rawurl
56
+ doc[:url] = url
57
+ doc
58
+ end
59
+
60
+ def build_ fname
12
61
  state = true
62
+ head = true
63
+ body = false
64
+ readable_file = readable path
65
+ return false unless readable_file
13
66
  document = {body:[], more:[]}
14
67
  type = fname.split("/").first.sub(/s$/,"")
15
68
  document[:type] = type
@@ -27,6 +80,11 @@ module Hse
27
80
  lines.each do |line|
28
81
  line.sub!("\n","").strip!
29
82
  next if line.empty?
83
+ if head && line.start_with?("---")
84
+ head = false
85
+ body = true
86
+ next
87
+ end
30
88
  if line.start_with? "."
31
89
  parts = line.split(":")
32
90
  key= parts.first
@@ -57,25 +57,35 @@ module Hse
57
57
  end
58
58
 
59
59
  def get_doc_revision doc
60
- puts "getting current revision"
61
- current = get_id doc
60
+ puts "getting current revision #{doc[:_id]}"
61
+ current = get_id doc[:_id] rescue nil
62
62
  if current
63
- current_json = JSON.parse(current)
64
- puts "current revision: #{current_json['_rev']}"
63
+ puts "current revision: #{current['_rev']}"
65
64
  end
66
- current ? current_json['_rev'] : nil
65
+ current ? current['_rev'] : nil
67
66
  end
68
67
 
69
- def put id, body = ""
70
- path = "#{db_url}/#{id}"
71
- puts "remote: PUT path #{path}"
72
- puts "remote: PUT body: #{body[0..80]} ..."
73
- #response = Typhoeus::Request.put(path, :body => body)
74
- puts "PUT Response: #{response.code} #{response.body[0..200]}"
75
- response
68
+ # def put id, body = ""
69
+ # path = "#{db_url}/#{id}"
70
+ # puts "remote: PUT path #{path}"
71
+ # puts "remote: PUT body: #{body[0..80]} ..."
72
+ # #response = Typhoeus::Request.put(path, :body => body)
73
+ # puts "PUT Response: #{response.code} #{response.body[0..200]}"
74
+ # response
75
+ # end
76
+
77
+ def push_docs docs
78
+ docs = docs.kind_of?(Array) ? docs : [docs]
79
+ docs.each_slice(1000) do |chunk|
80
+ json =RestClient.post "#{db_url}/_bulk_docs", {"docs" => chunk}.to_json, :content_type => :json, :accept => :json
81
+ JSON.parse(json)
82
+ puts "pushed #{chunk.size}"
83
+ end
84
+ true
76
85
  end
77
86
 
78
87
 
79
88
 
89
+
80
90
  end
81
91
  end
@@ -1,3 +1,3 @@
1
1
  module Hse
2
- VERSION = "0.1.19"
2
+ VERSION = "0.1.21"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.19
4
+ version: 0.1.21
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-15 00:00:00.000000000 Z
12
+ date: 2013-08-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard