dpl-transifex 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ddbdd957d0975db2edfd3f32c2ca21576550f161
4
+ data.tar.gz: 46f0810ecfdc6d19cd339391d1ac313126ffad04
5
+ SHA512:
6
+ metadata.gz: 98938ca76b525011e59780346f7d45c8eb95848bf3e01e7704daf9e640446a558ebd1724f18a040686d4f08b86420cdead002ea04b60c8db4f88737e98cc7d0c
7
+ data.tar.gz: 1ee8d3127e1ace5b4c218ad1dce8dc5347a91691fbf6667821970ae012bb8a8ffa3c66adc51f36d5df2ba44c8e0ea2ccaaae67ccb0d3e13d39e397911ca76d2f
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'transifex'
@@ -0,0 +1,45 @@
1
+ module DPL
2
+ class Provider
3
+ class Transifex < Provider
4
+ experimental 'Transifex'
5
+
6
+ DEFAULT_CLIENT_VERSION = '>=0.11'
7
+ DEFAULT_HOSTNAME = 'https://www.transifex.com'
8
+
9
+ def install_deploy_dependencies
10
+ cli_version = options[:cli_version] || DEFAULT_CLIENT_VERSION
11
+ self.class.pip 'transifex', 'transifex', cli_version
12
+ end
13
+
14
+ def needs_key?
15
+ false
16
+ end
17
+
18
+ def check_auth
19
+ install_deploy_dependencies
20
+ write_transifexrc
21
+ context.shell 'tx status'
22
+ end
23
+
24
+ def push_app
25
+ source_push
26
+ end
27
+
28
+ def write_transifexrc
29
+ File.open(File.expand_path('~/.transifexrc'), 'w') do |f|
30
+ f.puts [
31
+ "[#{options[:hostname] || DEFAULT_HOSTNAME}]",
32
+ "hostname = #{options[:hostname] || DEFAULT_HOSTNAME}",
33
+ "username = #{options[:username]}",
34
+ "password = #{options[:password]}",
35
+ "token = #{options[:token]}",
36
+ ].join("\n")
37
+ end
38
+ end
39
+
40
+ def source_push
41
+ context.shell 'tx push --source --no-interactive', retry: true
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,110 @@
1
+ require 'spec_helper'
2
+ require 'dpl/provider/transifex'
3
+
4
+ describe DPL::Provider::Transifex do
5
+ let(:options) do
6
+ {
7
+ hostname: 'https://www.nottransifex.example.com',
8
+ username: 'travis',
9
+ password: 'secret',
10
+ token: 'abcd1234'
11
+ }
12
+ end
13
+
14
+ subject :provider do
15
+ described_class.new(DummyContext.new, options)
16
+ end
17
+
18
+ describe '#install_deploy_dependencies' do
19
+ context 'without version specified' do
20
+ example "installs #{described_class::DEFAULT_CLIENT_VERSION}" do
21
+ expect(provider.class).to(
22
+ receive(:pip).with('transifex', 'transifex', described_class::DEFAULT_CLIENT_VERSION)
23
+ )
24
+ provider.install_deploy_dependencies
25
+ end
26
+ end
27
+
28
+ context 'with version specified' do
29
+ before do
30
+ options[:cli_version] = '==0.12'
31
+ end
32
+
33
+ example 'installs custom version' do
34
+ expect(provider.class).to(
35
+ receive(:pip).with('transifex', 'transifex', '==0.12')
36
+ )
37
+ provider.install_deploy_dependencies
38
+ end
39
+ end
40
+ end
41
+
42
+ describe '#needs_key?' do
43
+ example do
44
+ expect(provider.needs_key?).to eq(false)
45
+ end
46
+ end
47
+
48
+ describe '#check_auth' do
49
+ before do
50
+ allow(provider).to receive(:install_deploy_dependencies)
51
+ allow(provider).to receive(:write_transifexrc)
52
+ end
53
+
54
+ example 'installs dependencies' do
55
+ expect(provider).to receive(:install_deploy_dependencies)
56
+ provider.check_auth
57
+ end
58
+
59
+ example 'writes ~/.transifexrc' do
60
+ expect(provider).to receive(:write_transifexrc)
61
+ provider.check_auth
62
+ end
63
+
64
+ example 'performs a tx status' do
65
+ expect(provider.context).to receive(:shell).with('tx status')
66
+ provider.check_auth
67
+ end
68
+ end
69
+
70
+ describe '#push_app' do
71
+ example 'delegates to the #source_push method' do
72
+ expect(provider).to receive(:source_push)
73
+ provider.push_app
74
+ end
75
+ end
76
+
77
+ describe '#source_push' do
78
+ example 'performs a tx push' do
79
+ expect(provider.context).to(
80
+ receive(:shell).with('tx push --source --no-interactive', retry: true)
81
+ )
82
+ provider.source_push
83
+ end
84
+ end
85
+
86
+ describe '#write_transifexrc' do
87
+ let(:fake_config) { StringIO.new }
88
+
89
+ before do
90
+ allow(File).to receive(:open).and_yield(fake_config)
91
+ end
92
+
93
+ example 'writes config with hostname header' do
94
+ expect(fake_config).to receive(:puts).with(/^\[#{options[:hostname]}\]/)
95
+ provider.write_transifexrc
96
+ end
97
+
98
+ %w(
99
+ hostname
100
+ username
101
+ password
102
+ token
103
+ ).map(&:to_sym).each do |key|
104
+ example "writes config with #{key} key" do
105
+ expect(fake_config).to receive(:puts).with(/^#{key} = #{options[key]}$/)
106
+ provider.write_transifexrc
107
+ end
108
+ end
109
+ end
110
+ end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dpl-transifex
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Konstantin Haase
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dpl
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.9.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-its
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json_pure
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: tins
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: highline
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: deploy tool abstraction for clients
126
+ email: konstantin.mailinglists@googlemail.com
127
+ executables: []
128
+ extensions: []
129
+ extra_rdoc_files: []
130
+ files:
131
+ - dpl-transifex.gemspec
132
+ - lib/dpl/provider/transifex.rb
133
+ - spec/provider/transifex_spec.rb
134
+ homepage: https://github.com/travis-ci/dpl
135
+ licenses:
136
+ - MIT
137
+ metadata: {}
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '2.2'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 2.6.13
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: deploy tool
158
+ test_files:
159
+ - spec/provider/transifex_spec.rb