web_translate_it 1.7.2.1 → 1.7.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/wti CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'trollop'
4
4
  require 'web_translate_it'
5
5
 
6
- SUB_COMMANDS = %w(pull push add addlocale server stats status st autoconf init)
6
+ SUB_COMMANDS = %w(pull push add addlocale server status st init)
7
7
  global_options = Trollop::options do
8
8
  banner <<-EOS
9
9
  wti is a command line tool to sync your local translation files
@@ -44,10 +44,8 @@ command_options = case command
44
44
  opt :port, "Run server on a specific port", :default => 4000, :short => "-p"
45
45
  opt :host, "Run server on a specific host", :default => "0.0.0.0", :short => "-h"
46
46
  end
47
- when "stats"
48
47
  when "status"
49
48
  when "st"
50
- when "autoconf"
51
49
  when "init"
52
50
  else
53
51
  Trollop::die "unknown subcommand #{command.inspect}"
@@ -1,10 +1,18 @@
1
- en:
1
+ fr:
2
2
  activerecord:
3
3
  errors:
4
+ models:
5
+ invitation:
6
+ attributes:
7
+ email:
8
+ user_already_invited: "This user has already been invited"
9
+ user_already_member: "This user is already a member"
10
+ project_file:
11
+ attributes:
12
+ file:
13
+ file_format_not_supported: "Sorry, we currenly support only Gettext .pot/.po, .yml/.yaml and .strings"
4
14
  templates:
5
15
  header:
6
- one: "1 error prohibited this {{model}} from being saved"
7
- other: "{{count}} errors prohibited this {{model}} from being saved"
8
16
  body: "there were problems with the following fields:"
9
17
  messages:
10
18
  accepted: "must be accepted"
@@ -25,14 +33,11 @@ en:
25
33
  taken: "is already taken"
26
34
  too_long: "is too long (maximum is {{count}} characters)"
27
35
  too_short: "is too short (minimum is {{count}} characters)"
28
- wrong_length: "is the wrong length (should be {{count}} characters)"
29
- models:
30
- invitation:
31
- attributes:
32
- email:
33
- user_already_invited: "This user has already been invited"
34
- user_already_member: "This user is already a member"
35
- project_file:
36
- attributes:
37
- file:
38
- file_format_not_supported: "Sorry, we currenly support only Gettext .pot/.po, .yml/.yaml and .strings"
36
+ wrong_length: "is the wrong length (should be {{count}} characters)"
37
+ one: "1 error prohibited this {{model}} from being saved"
38
+ other: "{{count}} errors prohibited this {{model}} from being saved"
39
+ another_one: dskjdks
40
+ another_string: "this is another string"
41
+ hello: "Hello world!!"
42
+ new_string: hehe
43
+ test: " & &amp; "
data/history.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## Version 1.7.3.0 / 2011-04-12
2
+
3
+ * New: Compare local file checksum with file checksum from WTI API to determine if file needs downloading.
4
+ We were previously using the date of last modification which can be a little bit unreliable.
5
+ * Remove `wti autoconf` and `wti stats`.
6
+ These commands were deprecated in favour of `wti init` and `wti status` (and its alias `wti st`).
7
+
1
8
  ## Version 1.7.2.1 / 2011-03-31
2
9
 
3
10
  * Bug fix: `wti init` fails when configuration file doesn’t exist.
@@ -16,7 +16,7 @@ module WebTranslateIt
16
16
  `#{configuration.before_pull}` if configuration.before_pull
17
17
  fetch_locales_to_pull.each do |locale|
18
18
  configuration.files.find_all{ |file| file.locale == locale }.each do |file|
19
- print "Pulling #{file.file_path}... "
19
+ print "Pulling #{file.file_path}: "
20
20
  puts file.fetch(command_options.force)
21
21
  end
22
22
  end
@@ -63,17 +63,7 @@ module WebTranslateIt
63
63
  end
64
64
  puts "Done!"
65
65
  end
66
-
67
- def autoconf
68
- puts ""
69
- puts "============================================"
70
- puts " Warning: `wti autoconf` will be deprecated."
71
- puts " Please use `wti init` instead."
72
- puts "============================================"
73
- puts ""
74
- init
75
- end
76
-
66
+
77
67
  def init
78
68
  puts "This command configures your project."
79
69
  api_key = Util.ask("Enter your project API Key:")
@@ -103,17 +93,7 @@ module WebTranslateIt
103
93
  puts "Check `wti --help` for more information."
104
94
  end
105
95
  end
106
-
107
- def stats
108
- puts ""
109
- puts "============================================="
110
- puts " Warning: `wti stats` will be deprecated."
111
- puts " Please use `wti status` or `wti st` instead."
112
- puts "============================================="
113
- puts ""
114
- status
115
- end
116
-
96
+
117
97
  def status
118
98
  stats = YAML.load(Project.fetch_stats(configuration.api_key))
119
99
  stale = false
@@ -49,7 +49,7 @@ module WebTranslateIt
49
49
  if project_file['name'].nil? or project_file['name'].strip == ''
50
50
  puts "File #{project_file['id']} not set up"
51
51
  else
52
- self.files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], self.api_key, project_file['updated_at'])
52
+ self.files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], self.api_key, project_file['updated_at'], project_file['hash_file'])
53
53
  end
54
54
  end
55
55
  end
@@ -12,14 +12,15 @@ module WebTranslateIt
12
12
  require 'time'
13
13
  require 'fileutils'
14
14
 
15
- attr_accessor :id, :file_path, :locale, :api_key, :updated_at
15
+ attr_accessor :id, :file_path, :locale, :api_key, :updated_at, :remote_checksum
16
16
 
17
- def initialize(id, file_path, locale, api_key, updated_at = nil)
17
+ def initialize(id, file_path, locale, api_key, updated_at = nil, remote_checksum = "")
18
18
  self.id = id
19
19
  self.file_path = file_path
20
20
  self.locale = locale
21
21
  self.api_key = api_key
22
22
  self.updated_at = updated_at
23
+ self.remote_checksum = remote_checksum
23
24
  end
24
25
 
25
26
  # Fetch a language file.
@@ -35,11 +36,11 @@ module WebTranslateIt
35
36
  # file.fetch(true) # force to re-download the file, will return the content of the file with a 200 OK
36
37
  #
37
38
  def fetch(force = false)
38
- if !File.exist?(self.file_path) or force or self.updated_at >= last_modification.utc
39
+ print "#{self.local_checksum.checksumify}...#{self.remote_checksum.checksumify} "
40
+ if !File.exist?(self.file_path) or force or self.remote_checksum != self.local_checksum
39
41
  begin
40
42
  WebTranslateIt::Util.http_connection do |http|
41
43
  request = Net::HTTP::Get.new(api_url)
42
- request.add_field('If-Modified-Since', last_modification.rfc2822) if File.exist?(self.file_path) and !force
43
44
  response = http.request(request)
44
45
  FileUtils.mkpath(self.file_path.split('/')[0..-2].join('/')) unless File.exist?(self.file_path) or self.file_path.split('/')[0..-2].join('/') == ""
45
46
  begin
@@ -142,5 +143,14 @@ module WebTranslateIt
142
143
  def api_url_for_create
143
144
  "/api/projects/#{self.api_key}/files"
144
145
  end
146
+
147
+ def local_checksum
148
+ require 'digest/sha1'
149
+ begin
150
+ Digest::SHA1.hexdigest(File.open(file_path) { |f| f.read })
151
+ rescue
152
+ ""
153
+ end
154
+ end
145
155
  end
146
156
  end
@@ -154,4 +154,11 @@ class String
154
154
  def failure
155
155
  self.background(:red).foreground(:white)
156
156
  end
157
+
158
+ ##
159
+ # trucated, gray foreground for checksums
160
+
161
+ def checksumify
162
+ self[0..6].foreground(:yellow)
163
+ end
157
164
  end
@@ -28,13 +28,6 @@ describe WebTranslateIt::TranslationFile do
28
28
  translation_file.fetch(true).should include "200 OK"
29
29
  end
30
30
 
31
- it "should prepare a HTTP request and get a 304 OK if the language file is fresh" do
32
- file = mock(File)
33
- file.stub(:puts => true, :close => true)
34
- File.stub(:exist? => true, :mtime => Time.now, :new => file)
35
- translation_file.fetch.should include "304 Not Modified"
36
- end
37
-
38
31
  it "should prepare a HTTP request and get a 200 OK if the language file is fresh using the force download parameter" do
39
32
  file = mock(File)
40
33
  file.stub(:puts => true, :close => true)
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 7
4
- :tiny: 2
5
- :patch: 1
4
+ :tiny: 3
5
+ :patch: 0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web_translate_it
3
3
  version: !ruby/object:Gem::Version
4
- hash: 109
4
+ hash: 107
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 2
10
- - 1
11
- version: 1.7.2.1
9
+ - 3
10
+ - 0
11
+ version: 1.7.3.0
12
12
  platform: ruby
13
13
  authors:
14
14
  - "\xC3\x89douard Bri\xC3\xA8re"
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-03-31 00:00:00 +02:00
19
+ date: 2011-04-12 00:00:00 +02:00
20
20
  default_executable: wti
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency