wti_tasks 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ require_relative '../wti_tasks/commands'
3
+
4
+ namespace :wti do
5
+ projects = WtiTasks::Commands.find_projects
6
+
7
+ namespace :pull do
8
+ desc "Pull wti translations for all projects (.wti*)"
9
+ task :all => projects.keys
10
+
11
+ projects.each do |project, file|
12
+ desc "Pull wti translations for #{project} project (#{file})"
13
+ task project do
14
+ puts WtiTasks::Commands.pull(file)
15
+ end
16
+ end
17
+ end
18
+
19
+ namespace :push do
20
+ desc "Push wti translations for all projects (.wti*)"
21
+ task :all => projects.keys
22
+
23
+ projects.each do |project, file|
24
+ desc "Push wti translations for #{project} project (#{file})"
25
+ task project do
26
+ puts WtiTasks::Commands.push(file)
27
+ end
28
+ end
29
+ end
30
+
31
+ desc "How to pass arguments to wti rake tasks"
32
+ task :help do
33
+ puts %{
34
+ wti command options can be passed on to rake tasks by
35
+ separating them from rake options with --.
36
+ Example:
37
+
38
+ rake wti:pull:default -- --locale es --force
39
+ }
40
+ end
41
+ end
@@ -0,0 +1,66 @@
1
+ module WtiTasks
2
+ class Commands
3
+ def self.find_projects
4
+ new.find_projects
5
+ end
6
+
7
+ def self.pull(*args)
8
+ new.pull(*args)
9
+ end
10
+
11
+ def self.push(*args)
12
+ new.push(*args)
13
+ end
14
+
15
+ def find_projects
16
+ project_names file_list
17
+ end
18
+
19
+ def pull(filename)
20
+ run_command(:pull, filename)
21
+ end
22
+
23
+ def push(filename)
24
+ run_command(:push, filename)
25
+ end
26
+
27
+ def file_list
28
+ Dir.glob '.wti*'
29
+ end
30
+
31
+ def project_names(files)
32
+ files.inject({}) do |result, f|
33
+ result[project_name(f)] = f
34
+ result
35
+ end
36
+ end
37
+
38
+ def project_name(file)
39
+ file = strip_prefix(file)
40
+ file = rename_default(file)
41
+ file.to_sym
42
+ end
43
+
44
+ def strip_prefix(file)
45
+ file.gsub(/\.wti-/, '')
46
+ end
47
+
48
+ def rename_default(file)
49
+ file == '.wti' ? 'default' : file
50
+ end
51
+
52
+ def run_command(command, filename)
53
+ wti_command = build_command command, filename
54
+ `#{wti_command}`
55
+ end
56
+
57
+ def build_command(command, filename)
58
+ "wti #{command} -c #{filename}" << options
59
+ end
60
+
61
+ def options(argv = ARGV)
62
+ argv[0] = nil
63
+ argv.join(' ')
64
+ end
65
+ end
66
+ end
data/lib/wti_tasks.rb ADDED
@@ -0,0 +1,9 @@
1
+ require_relative 'wti_tasks/commands'
2
+
3
+ if defined? Rails::Railtie
4
+ class WtiTasks::Load < Rails::Railtie
5
+ rake_tasks do
6
+ Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f }
7
+ end
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wti_tasks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Martin Svalin
9
+ - Hilla Duka
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-09-03 00:00:00.000000000 Z
14
+ dependencies: []
15
+ description: Rake tasks for wti project push and pull
16
+ email: dev@mynewsdesk.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/wti_tasks.rb
22
+ - lib/tasks/wti.rake
23
+ - lib/wti_tasks/commands.rb
24
+ homepage: http://rubygems.org/gems/wti_tasks
25
+ licenses: []
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 1.8.10
45
+ signing_key:
46
+ specification_version: 3
47
+ summary: WebTranslateIt rake tasks
48
+ test_files: []