metaforce 0.5.3 → 1.0.0a
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/Gemfile +1 -11
- data/LICENSE +22 -0
- data/README.md +91 -96
- data/Rakefile +6 -14
- data/examples/example.rb +51 -0
- data/lib/metaforce/abstract_client.rb +76 -0
- data/lib/metaforce/client.rb +27 -0
- data/lib/metaforce/config.rb +41 -19
- data/lib/metaforce/job/crud.rb +13 -0
- data/lib/metaforce/job/deploy.rb +87 -0
- data/lib/metaforce/job/retrieve.rb +92 -0
- data/lib/metaforce/job.rb +183 -0
- data/lib/metaforce/login.rb +39 -0
- data/lib/metaforce/manifest.rb +18 -93
- data/lib/metaforce/metadata/client/crud.rb +86 -0
- data/lib/metaforce/metadata/client/file.rb +113 -0
- data/lib/metaforce/metadata/client.rb +7 -225
- data/lib/metaforce/services/client.rb +45 -86
- data/lib/metaforce/version.rb +1 -1
- data/lib/metaforce.rb +27 -7
- data/metaforce.gemspec +19 -16
- data/spec/fixtures/package.xml +1 -1
- data/spec/fixtures/payload.zip +0 -0
- data/spec/fixtures/requests/{describe_layout → foo}/invalid_session.xml +0 -0
- data/spec/fixtures/requests/send_email/success.xml +1 -0
- data/spec/lib/client_spec.rb +34 -0
- data/spec/lib/config_spec.rb +8 -50
- data/spec/lib/job/deploy_spec.rb +53 -0
- data/spec/lib/job/retrieve_spec.rb +28 -0
- data/spec/lib/job_spec.rb +95 -0
- data/spec/lib/login_spec.rb +18 -0
- data/spec/lib/manifest_spec.rb +22 -168
- data/spec/lib/metadata/client_spec.rb +84 -179
- data/spec/lib/metaforce_spec.rb +20 -0
- data/spec/lib/services/client_spec.rb +22 -35
- data/spec/spec_helper.rb +24 -3
- data/spec/support/client.rb +38 -0
- data/wsdl/26.0/metadata.xml +4750 -0
- data/wsdl/26.0/partner.xml +3340 -0
- metadata +114 -77
- data/Guardfile +0 -9
- data/bin/metaforce +0 -6
- data/lib/metaforce/core_extensions/string.rb +0 -31
- data/lib/metaforce/core_extensions.rb +0 -1
- data/lib/metaforce/custom_actions.rb +0 -29
- data/lib/metaforce/error.rb +0 -3
- data/lib/metaforce/login_details.rb +0 -28
- data/lib/metaforce/metadata/crud.rb +0 -103
- data/lib/metaforce/metadata/file.rb +0 -74
- data/lib/metaforce/metadata/transaction.rb +0 -100
- data/lib/metaforce/metadata.rb +0 -4
- data/lib/metaforce/rake/deploy.rb +0 -35
- data/lib/metaforce/rake/retrieve.rb +0 -39
- data/lib/metaforce/rake/tests.rb +0 -62
- data/lib/metaforce/rake.rb +0 -43
- data/lib/metaforce/services.rb +0 -1
- data/lib/metaforce/tasks/README.md +0 -62
- data/lib/metaforce/tasks/metaforce.rake +0 -5
- data/lib/metaforce/thor/metaforce.rb +0 -117
- data/lib/metaforce/types.rb +0 -249
- data/spec/.gitignore +0 -1
- data/spec/fixtures/sample/Rakefile +0 -2
- data/spec/fixtures/sample/metaforce.yml +0 -13
- data/spec/fixtures/sample/src/classes/TestClass.cls +0 -2
- data/spec/fixtures/sample/src/classes/TestClass.cls-meta.xml +0 -5
- data/spec/fixtures/sample/src/package.xml +0 -8
- data/spec/lib/core_extensions/string_spec.rb +0 -23
- data/spec/lib/metadata/crud_spec.rb +0 -66
- data/spec/lib/metadata/file_spec.rb +0 -17
- data/spec/lib/metadata/transaction_spec.rb +0 -68
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metaforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0a
|
5
|
+
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Eric J. Holmes
|
@@ -10,44 +10,59 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-12-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
requirement:
|
16
|
+
name: savon
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
22
|
+
version: 1.2.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 1.2.0
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
|
-
name:
|
28
|
-
requirement:
|
32
|
+
name: rubyzip
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ~>
|
32
37
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.9.
|
38
|
+
version: 0.9.9
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rubyzip
|
39
|
-
requirement: &70358490535420 !ruby/object:Gem::Requirement
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
42
|
none: false
|
41
43
|
requirements:
|
42
44
|
- - ~>
|
43
45
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.9.
|
46
|
+
version: 0.9.9
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: activesupport
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
45
55
|
type: :runtime
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
50
|
-
requirement:
|
64
|
+
name: hashie
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :runtime
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: rake
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: rspec
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,10 +102,15 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :development
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
83
|
-
requirement:
|
112
|
+
name: webmock
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
none: false
|
85
115
|
requirements:
|
86
116
|
- - ! '>='
|
@@ -88,61 +118,62 @@ dependencies:
|
|
88
118
|
version: '0'
|
89
119
|
type: :development
|
90
120
|
prerelease: false
|
91
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: savon_spec
|
94
|
-
requirement:
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
none: false
|
96
131
|
requirements:
|
97
132
|
- - ~>
|
98
133
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
134
|
+
version: 1.3.0
|
100
135
|
type: :development
|
101
136
|
prerelease: false
|
102
|
-
version_requirements:
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ~>
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 1.3.0
|
103
143
|
description: A Ruby gem for interacting with the Salesforce Metadata API
|
104
144
|
email:
|
105
145
|
- eric@ejholmes.net
|
106
146
|
- Kevinp@madronasg.com
|
107
|
-
executables:
|
108
|
-
- metaforce
|
147
|
+
executables: []
|
109
148
|
extensions: []
|
110
149
|
extra_rdoc_files: []
|
111
150
|
files:
|
112
151
|
- .gitignore
|
152
|
+
- .rspec
|
113
153
|
- .travis.yml
|
114
154
|
- Gemfile
|
115
|
-
-
|
155
|
+
- LICENSE
|
116
156
|
- README.md
|
117
157
|
- Rakefile
|
118
|
-
-
|
158
|
+
- examples/example.rb
|
119
159
|
- lib/metaforce.rb
|
160
|
+
- lib/metaforce/abstract_client.rb
|
161
|
+
- lib/metaforce/client.rb
|
120
162
|
- lib/metaforce/config.rb
|
121
|
-
- lib/metaforce/
|
122
|
-
- lib/metaforce/
|
123
|
-
- lib/metaforce/
|
124
|
-
- lib/metaforce/
|
125
|
-
- lib/metaforce/
|
163
|
+
- lib/metaforce/job.rb
|
164
|
+
- lib/metaforce/job/crud.rb
|
165
|
+
- lib/metaforce/job/deploy.rb
|
166
|
+
- lib/metaforce/job/retrieve.rb
|
167
|
+
- lib/metaforce/login.rb
|
126
168
|
- lib/metaforce/manifest.rb
|
127
|
-
- lib/metaforce/metadata.rb
|
128
169
|
- lib/metaforce/metadata/client.rb
|
129
|
-
- lib/metaforce/metadata/crud.rb
|
130
|
-
- lib/metaforce/metadata/file.rb
|
131
|
-
- lib/metaforce/metadata/transaction.rb
|
132
|
-
- lib/metaforce/rake.rb
|
133
|
-
- lib/metaforce/rake/deploy.rb
|
134
|
-
- lib/metaforce/rake/retrieve.rb
|
135
|
-
- lib/metaforce/rake/tests.rb
|
136
|
-
- lib/metaforce/services.rb
|
170
|
+
- lib/metaforce/metadata/client/crud.rb
|
171
|
+
- lib/metaforce/metadata/client/file.rb
|
137
172
|
- lib/metaforce/services/client.rb
|
138
|
-
- lib/metaforce/tasks/README.md
|
139
|
-
- lib/metaforce/tasks/metaforce.rake
|
140
|
-
- lib/metaforce/thor/metaforce.rb
|
141
|
-
- lib/metaforce/types.rb
|
142
173
|
- lib/metaforce/version.rb
|
143
174
|
- metaforce.gemspec
|
144
|
-
- spec/.gitignore
|
145
175
|
- spec/fixtures/package.xml
|
176
|
+
- spec/fixtures/payload.zip
|
146
177
|
- spec/fixtures/requests/check_deploy_status/done.xml
|
147
178
|
- spec/fixtures/requests/check_deploy_status/error.xml
|
148
179
|
- spec/fixtures/requests/check_retrieve_status/success.xml
|
@@ -151,34 +182,38 @@ files:
|
|
151
182
|
- spec/fixtures/requests/create/in_progress.xml
|
152
183
|
- spec/fixtures/requests/delete/in_progress.xml
|
153
184
|
- spec/fixtures/requests/deploy/in_progress.xml
|
154
|
-
- spec/fixtures/requests/describe_layout/invalid_session.xml
|
155
185
|
- spec/fixtures/requests/describe_layout/success.xml
|
156
186
|
- spec/fixtures/requests/describe_metadata/success.xml
|
187
|
+
- spec/fixtures/requests/foo/invalid_session.xml
|
157
188
|
- spec/fixtures/requests/list_metadata/no_result.xml
|
158
189
|
- spec/fixtures/requests/list_metadata/objects.xml
|
159
190
|
- spec/fixtures/requests/login/failure.xml
|
160
191
|
- spec/fixtures/requests/login/success.xml
|
161
192
|
- spec/fixtures/requests/retrieve/in_progress.xml
|
193
|
+
- spec/fixtures/requests/send_email/success.xml
|
162
194
|
- spec/fixtures/requests/update/in_progress.xml
|
163
|
-
- spec/
|
164
|
-
- spec/fixtures/sample/metaforce.yml
|
165
|
-
- spec/fixtures/sample/src/classes/TestClass.cls
|
166
|
-
- spec/fixtures/sample/src/classes/TestClass.cls-meta.xml
|
167
|
-
- spec/fixtures/sample/src/package.xml
|
195
|
+
- spec/lib/client_spec.rb
|
168
196
|
- spec/lib/config_spec.rb
|
169
|
-
- spec/lib/
|
197
|
+
- spec/lib/job/deploy_spec.rb
|
198
|
+
- spec/lib/job/retrieve_spec.rb
|
199
|
+
- spec/lib/job_spec.rb
|
200
|
+
- spec/lib/login_spec.rb
|
170
201
|
- spec/lib/manifest_spec.rb
|
171
202
|
- spec/lib/metadata/client_spec.rb
|
172
|
-
- spec/lib/
|
173
|
-
- spec/lib/metadata/file_spec.rb
|
174
|
-
- spec/lib/metadata/transaction_spec.rb
|
203
|
+
- spec/lib/metaforce_spec.rb
|
175
204
|
- spec/lib/services/client_spec.rb
|
176
205
|
- spec/spec_helper.rb
|
206
|
+
- spec/support/client.rb
|
177
207
|
- wsdl/23.0/metadata.xml
|
178
208
|
- wsdl/23.0/partner.xml
|
209
|
+
- wsdl/26.0/metadata.xml
|
210
|
+
- wsdl/26.0/partner.xml
|
179
211
|
homepage: https://github.com/ejholmes/metaforce
|
180
212
|
licenses: []
|
181
|
-
post_install_message:
|
213
|
+
post_install_message: ! 'Warning! Metaforce 1.0.x is a complete rewrite and is not
|
214
|
+
backwards compatible with 0.5.x
|
215
|
+
|
216
|
+
'
|
182
217
|
rdoc_options: []
|
183
218
|
require_paths:
|
184
219
|
- lib
|
@@ -188,20 +223,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
188
223
|
- - ! '>='
|
189
224
|
- !ruby/object:Gem::Version
|
190
225
|
version: '0'
|
226
|
+
segments:
|
227
|
+
- 0
|
228
|
+
hash: -4477921491118908816
|
191
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
230
|
none: false
|
193
231
|
requirements:
|
194
|
-
- - ! '
|
232
|
+
- - ! '>'
|
195
233
|
- !ruby/object:Gem::Version
|
196
|
-
version:
|
234
|
+
version: 1.3.1
|
197
235
|
requirements: []
|
198
236
|
rubyforge_project: metaforce
|
199
|
-
rubygems_version: 1.8.
|
237
|
+
rubygems_version: 1.8.23
|
200
238
|
signing_key:
|
201
239
|
specification_version: 3
|
202
240
|
summary: A Ruby gem for interacting with the Salesforce Metadata API
|
203
241
|
test_files:
|
204
242
|
- spec/fixtures/package.xml
|
243
|
+
- spec/fixtures/payload.zip
|
205
244
|
- spec/fixtures/requests/check_deploy_status/done.xml
|
206
245
|
- spec/fixtures/requests/check_deploy_status/error.xml
|
207
246
|
- spec/fixtures/requests/check_retrieve_status/success.xml
|
@@ -210,27 +249,25 @@ test_files:
|
|
210
249
|
- spec/fixtures/requests/create/in_progress.xml
|
211
250
|
- spec/fixtures/requests/delete/in_progress.xml
|
212
251
|
- spec/fixtures/requests/deploy/in_progress.xml
|
213
|
-
- spec/fixtures/requests/describe_layout/invalid_session.xml
|
214
252
|
- spec/fixtures/requests/describe_layout/success.xml
|
215
253
|
- spec/fixtures/requests/describe_metadata/success.xml
|
254
|
+
- spec/fixtures/requests/foo/invalid_session.xml
|
216
255
|
- spec/fixtures/requests/list_metadata/no_result.xml
|
217
256
|
- spec/fixtures/requests/list_metadata/objects.xml
|
218
257
|
- spec/fixtures/requests/login/failure.xml
|
219
258
|
- spec/fixtures/requests/login/success.xml
|
220
259
|
- spec/fixtures/requests/retrieve/in_progress.xml
|
260
|
+
- spec/fixtures/requests/send_email/success.xml
|
221
261
|
- spec/fixtures/requests/update/in_progress.xml
|
222
|
-
- spec/
|
223
|
-
- spec/fixtures/sample/metaforce.yml
|
224
|
-
- spec/fixtures/sample/src/classes/TestClass.cls
|
225
|
-
- spec/fixtures/sample/src/classes/TestClass.cls-meta.xml
|
226
|
-
- spec/fixtures/sample/src/package.xml
|
262
|
+
- spec/lib/client_spec.rb
|
227
263
|
- spec/lib/config_spec.rb
|
228
|
-
- spec/lib/
|
264
|
+
- spec/lib/job/deploy_spec.rb
|
265
|
+
- spec/lib/job/retrieve_spec.rb
|
266
|
+
- spec/lib/job_spec.rb
|
267
|
+
- spec/lib/login_spec.rb
|
229
268
|
- spec/lib/manifest_spec.rb
|
230
269
|
- spec/lib/metadata/client_spec.rb
|
231
|
-
- spec/lib/
|
232
|
-
- spec/lib/metadata/file_spec.rb
|
233
|
-
- spec/lib/metadata/transaction_spec.rb
|
270
|
+
- spec/lib/metaforce_spec.rb
|
234
271
|
- spec/lib/services/client_spec.rb
|
235
272
|
- spec/spec_helper.rb
|
236
|
-
|
273
|
+
- spec/support/client.rb
|
data/Guardfile
DELETED
data/bin/metaforce
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module Metaforce
|
2
|
-
module CoreExtensions
|
3
|
-
module String
|
4
|
-
|
5
|
-
def camelcase
|
6
|
-
str = dup
|
7
|
-
str.gsub!(/^[a-z]|_[a-z]/) { |a| a.upcase }
|
8
|
-
str.gsub!('_', '')
|
9
|
-
str
|
10
|
-
end unless method_defined?(:camelcase)
|
11
|
-
|
12
|
-
def lower_camelcase
|
13
|
-
str = dup
|
14
|
-
str.gsub!(/_[a-z]/) { |a| a.upcase }
|
15
|
-
str.gsub!('_', '')
|
16
|
-
str
|
17
|
-
end unless method_defined?(:lower_camelcase)
|
18
|
-
|
19
|
-
def underscore
|
20
|
-
self.gsub(/::/, '/').
|
21
|
-
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
22
|
-
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
23
|
-
tr("-", "_").
|
24
|
-
downcase
|
25
|
-
end unless method_defined?(:underscore)
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
String.send :include, Metaforce::CoreExtensions::String
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'metaforce/core_extensions/string'
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class Thor
|
2
|
-
module Actions
|
3
|
-
module CustomActions
|
4
|
-
require 'highline'
|
5
|
-
|
6
|
-
def masked_ask(question)
|
7
|
-
password = HighLine.new.ask(question) { |q| q.echo = '*' }
|
8
|
-
end
|
9
|
-
|
10
|
-
def spinner(&block)
|
11
|
-
return unless block_given?
|
12
|
-
chars = %w{ | / - \\ }
|
13
|
-
|
14
|
-
t = Thread.new { yield if block_given? }
|
15
|
-
while t.alive?
|
16
|
-
print chars[0]
|
17
|
-
sleep 0.1
|
18
|
-
print "\b"
|
19
|
-
|
20
|
-
chars.push chars.shift
|
21
|
-
end
|
22
|
-
|
23
|
-
t.join
|
24
|
-
t.value
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/metaforce/error.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
class LoginDetails
|
2
|
-
require 'yaml'
|
3
|
-
|
4
|
-
attr_accessor :username, :password, :security_token, :sandbox, :log
|
5
|
-
STORAGE_LOCATION = "#{Dir.pwd}/.git/force.com.config"
|
6
|
-
|
7
|
-
def initialize(user, pass, security_token, sandbox, log = nil)
|
8
|
-
@username = user
|
9
|
-
@password = pass
|
10
|
-
@security_token = security_token
|
11
|
-
@sandbox = sandbox
|
12
|
-
@log = log
|
13
|
-
end
|
14
|
-
|
15
|
-
def save!
|
16
|
-
File.open(STORAGE_LOCATION, "w+") do |file|
|
17
|
-
file.print Marshal::dump(self)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.load
|
22
|
-
$/="---_---" #record separator
|
23
|
-
File.open(STORAGE_LOCATION, "r") do |object|
|
24
|
-
return Marshal::load(object)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,103 +0,0 @@
|
|
1
|
-
require 'base64'
|
2
|
-
|
3
|
-
module Metaforce
|
4
|
-
module Metadata
|
5
|
-
module CRUD
|
6
|
-
|
7
|
-
# Create metadata
|
8
|
-
#
|
9
|
-
# == Examples
|
10
|
-
#
|
11
|
-
# client.create(:apex_page, :full_name => 'TestPage')
|
12
|
-
def create(type, metadata={})
|
13
|
-
metadata = prepare_metadata(type, metadata)
|
14
|
-
type = type.to_s.camelcase
|
15
|
-
response = @client.request(:create) do |soap|
|
16
|
-
soap.header = @header
|
17
|
-
soap.body = {
|
18
|
-
:metadata => metadata,
|
19
|
-
:attributes! => { "ins0:metadata" => { "xsi:type" => "wsdl:#{type}" } }
|
20
|
-
}
|
21
|
-
end
|
22
|
-
Transaction.new self, response.body[:create_response][:result][:id]
|
23
|
-
end
|
24
|
-
|
25
|
-
# Update metadata
|
26
|
-
#
|
27
|
-
# == Examples
|
28
|
-
#
|
29
|
-
# client.update(:apex_page, 'OldPage', :full_name => 'NewPage')
|
30
|
-
def update(type, current_name, metadata={})
|
31
|
-
metadata = prepare_metadata(type, metadata)
|
32
|
-
type = type.to_s.camelcase
|
33
|
-
response = @client.request(:update) do |soap|
|
34
|
-
soap.header = @header
|
35
|
-
soap.body = {
|
36
|
-
:metadata => {
|
37
|
-
:current_name => current_name,
|
38
|
-
:metadata => metadata,
|
39
|
-
:attributes! => { :metadata => { "xsi:type" => "wsdl:#{type}" } }
|
40
|
-
}
|
41
|
-
}
|
42
|
-
end
|
43
|
-
Transaction.new self, response.body[:update_response][:result][:id]
|
44
|
-
end
|
45
|
-
|
46
|
-
# Delete metadata
|
47
|
-
#
|
48
|
-
# == Examples
|
49
|
-
#
|
50
|
-
# client.delete(:apex_page, :full_name => 'TestPage')
|
51
|
-
def delete(type, full_name)
|
52
|
-
full_name = [full_name] unless full_name.is_a?(Array)
|
53
|
-
metadata = []
|
54
|
-
full_name.each do |f|
|
55
|
-
metadata << { :full_name => f }
|
56
|
-
end
|
57
|
-
type = type.to_s.camelcase
|
58
|
-
response = @client.request(:delete) do |soap|
|
59
|
-
soap.header = @header
|
60
|
-
soap.body = {
|
61
|
-
:metadata => metadata,
|
62
|
-
:attributes! => { "ins0:metadata" => { "xsi:type" => "wsdl:#{type}" } }
|
63
|
-
}
|
64
|
-
end
|
65
|
-
Transaction.new self, response.body[:delete_response][:result][:id]
|
66
|
-
end
|
67
|
-
|
68
|
-
private
|
69
|
-
|
70
|
-
def prepare_metadata(type, metadata)
|
71
|
-
metadata = [metadata] unless metadata.is_a?(Array)
|
72
|
-
metadata.each_with_index do |m, i|
|
73
|
-
template = Metaforce::Metadata::MetadataFile.template(type)
|
74
|
-
m = template.merge(m) if template
|
75
|
-
metadata[i] = m
|
76
|
-
end
|
77
|
-
metadata = encode_content(metadata)
|
78
|
-
end
|
79
|
-
|
80
|
-
def encode_content(metadata)
|
81
|
-
metadata.each do |m|
|
82
|
-
m[:content] = Base64.encode64(m[:content]) if m.has_key?(:content)
|
83
|
-
end
|
84
|
-
metadata
|
85
|
-
end
|
86
|
-
|
87
|
-
def method_missing(name, *args, &block)
|
88
|
-
if name =~ /^create_(.*)$/
|
89
|
-
create($1.to_sym, *args)
|
90
|
-
elsif name =~ /^update_(.*)$/
|
91
|
-
update($1.to_sym, *args)
|
92
|
-
elsif name =~ /^delete_(.*)$/
|
93
|
-
delete($1.to_sym, *args)
|
94
|
-
else
|
95
|
-
super
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
Metaforce::Metadata::Client.send :include, Metaforce::Metadata::CRUD
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'nokogiri'
|
2
|
-
|
3
|
-
module Metaforce
|
4
|
-
module Metadata
|
5
|
-
class MetadataFile < Hash
|
6
|
-
|
7
|
-
# Initialize the underlying hash
|
8
|
-
def initialize(hash, type)
|
9
|
-
super(hash)
|
10
|
-
@type = type
|
11
|
-
replace(hash)
|
12
|
-
end
|
13
|
-
|
14
|
-
def type
|
15
|
-
@type
|
16
|
-
end
|
17
|
-
|
18
|
-
# Builds a new MetadataFile object based on the template
|
19
|
-
#
|
20
|
-
# == Examples
|
21
|
-
#
|
22
|
-
# Metaforce::Metadata::MetadataFile.template(:apex_class)
|
23
|
-
# #=> {:api_version=>"23.0", :status=>"Active"}
|
24
|
-
def self.template(type)
|
25
|
-
Metaforce::Metadata::MetadataFile.new(TEMPLATES[type], type)
|
26
|
-
end
|
27
|
-
|
28
|
-
# Returns the xml representation of the underlying hash structure
|
29
|
-
#
|
30
|
-
# == Examples
|
31
|
-
#
|
32
|
-
# f = Metaforce::Metadata::MetadataFile.template(:apex_class)
|
33
|
-
# f.to_xml
|
34
|
-
# #=> "<?xml version=\"1.0\"?>\n<ApexClass xmlns=\"http://soap.sforce.com/2006/04/metadata\">\n <apiVersion>23.0</apiVersion>\n <status>Active</status>\n</ApexClass>\n"
|
35
|
-
def to_xml
|
36
|
-
xml_builder = Nokogiri::XML::Builder.new do |xml|
|
37
|
-
xml.send(type.to_s.camelcase, "xmlns" => "http://soap.sforce.com/2006/04/metadata") do
|
38
|
-
self.each do |key, value|
|
39
|
-
xml.send(key.to_s.lower_camelcase, value)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
xml_builder.to_xml
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
# Metadata file templates
|
49
|
-
TEMPLATES = {
|
50
|
-
:apex_class => {
|
51
|
-
:api_version => Metaforce.configuration.api_version,
|
52
|
-
:status => "Active"
|
53
|
-
},
|
54
|
-
:apex_component => {
|
55
|
-
:api_version => Metaforce.configuration.api_version,
|
56
|
-
:description => '',
|
57
|
-
:label => '',
|
58
|
-
:content => "<apex:component>\n</apex:component>"
|
59
|
-
},
|
60
|
-
:apex_page => {
|
61
|
-
:api_version => Metaforce.configuration.api_version,
|
62
|
-
:description => '',
|
63
|
-
:label => '',
|
64
|
-
:content => "<apex:page>\n</apex:page>"
|
65
|
-
},
|
66
|
-
:apex_trigger => {
|
67
|
-
:api_version => Metaforce.configuration.api_version,
|
68
|
-
:status => "Active"
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|