hoopla_salesforce 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,37 +2,96 @@ require 'hoopla_salesforce/rake/base_task'
2
2
 
3
3
  module HooplaSalesforce
4
4
  module Rake
5
+
6
+ # Deploys your project to salesforce.
7
+ #
8
+ # Peforms some nice processing as well including:
9
+ # - Replaces any occurance of __NAMESPACE__ in your code with the appropriate namespace
10
+ # declaration if you set a namespace on the task
11
+ # - Zips up any folders found in src/resources as src/staticresources/#{folder}.resource.
12
+ # This allows you to only keep the raw assets in your project
5
13
  class DeployTask < BaseTask
6
14
  # Your project root. Defaults to 'src'
7
15
  attr_accessor :src
8
16
 
9
17
  # The location of the zip file generated for deployment. Defaults to 'deploy.zip'
10
- attr_accessor :deployfile
18
+ attr_accessor :deploy_file
19
+
20
+ # The namespace you're deploying the package to. This will convert all
21
+ # occurrences of __NAMESPACE__ in your source code to your_namespace__.
22
+ # It's helpful if you're deploying to both your production org (that has
23
+ # the namespaced package) and a dev org (that does not have one).
24
+ #
25
+ # default - nil
26
+ attr_accessor :namespace
27
+
28
+ # The directory in which to store processed source files.
29
+ # Defaults to #{src}-processed
30
+ attr_accessor :processed_src
11
31
 
12
32
  def initialize(name=:deploy)
13
33
  @deploy_file = "deploy.zip"
14
34
  @src = 'src'
35
+ @namespace = nil
15
36
  super
37
+ @namespace += "__" if @namespace
38
+ @processed_src ||= "#{src}-processed"
16
39
  end
17
40
 
18
41
  def define
19
42
  desc "Deploy to salesforce"
20
43
  task name do
44
+ process_source
45
+ make_resources
21
46
  make_zipfile
22
47
  require 'hoopla_salesforce/deployer'
23
- HooplaSalesforce::Deployer.new(username, password, token, enterprise_wsdl, metadata_wsdl).deploy(deployfile)
48
+ HooplaSalesforce::Deployer.new(username, password, token, enterprise_wsdl, metadata_wsdl).deploy(deploy_file)
49
+ end
50
+ end
51
+
52
+ def make_resources
53
+ require 'zip/zip'
54
+
55
+ staticresources = "#{processed_src}/staticresources"
56
+ mkdir staticresources
57
+
58
+ Dir["#{processed_src}/resources/*"].each do |f|
59
+ next unless File.directory?(f)
60
+ resourcename = File.basename(f) + ".resource"
61
+ resourcefile = "#{staticresources}/#{resourcename}"
62
+ Zip::ZipFile.open(resourcefile, Zip::ZipFile::CREATE) do |zip|
63
+ Dir["#{f}/**/*"].each do |file|
64
+ zip.add(file.sub("#{f}/", ''), file)
65
+ end
66
+ end
67
+
68
+ cp "#{f}.resource-meta.xml", "#{resourcefile}-meta.xml"
24
69
  end
25
70
  end
26
71
 
27
72
  def make_zipfile
28
73
  require 'zip/zip'
29
- rm_f deployfile
30
- Zip::ZipFile.open(deployfile, Zip::ZipFile::CREATE) do |zip|
31
- Dir["#{src}/**/*"].each do |file|
32
- zip.add(file, file)
74
+ rm_f deploy_file
75
+ Zip::ZipFile.open(deploy_file, Zip::ZipFile::CREATE) do |zip|
76
+ Dir["#{processed_src}/**/*"].each do |file|
77
+ zip.add(file.sub(/^#{processed_src}/, src), file)
33
78
  end
34
79
  end
35
80
  end
81
+
82
+ def process_source
83
+ rm_rf processed_src
84
+ cp_r src, processed_src
85
+ Dir["#{processed_src}/**/*"].each do |f|
86
+ next if File.directory?(f)
87
+ system %Q|ruby -i -n -e 'print $_.gsub("__NAMESPACE__", "#{namespace}")' "#{f}"|
88
+ end
89
+
90
+ if namespace
91
+ clean_namespace = namespace.sub(/__$/, '')
92
+ system %Q|ruby -i -n -e 'print $_.gsub("#{namespace}", "#{clean_namespace}")' "#{processed_src}/package.xml"|
93
+ end
94
+ end
36
95
  end
37
96
  end
38
97
  end
@@ -1,3 +1,3 @@
1
1
  module HooplaSalesforce
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Trotter Cashion
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-04 00:00:00 -04:00
18
+ date: 2010-08-05 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -32,6 +32,20 @@ dependencies:
32
32
  version: 0.7.6
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rubyzip
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ - 9
45
+ - 4
46
+ version: 0.9.4
47
+ type: :runtime
48
+ version_requirements: *id002
35
49
  description: No really, these helpers are awesome
36
50
  email: dev@hoopla.net
37
51
  executables: []
@@ -41,13 +55,13 @@ extensions: []
41
55
  extra_rdoc_files: []
42
56
 
43
57
  files:
44
- - lib/hoopla_salesforce.rb
45
58
  - lib/hoopla_salesforce/rake.rb
46
- - lib/hoopla_salesforce/deployer.rb
59
+ - lib/hoopla_salesforce/rake/base_task.rb
47
60
  - lib/hoopla_salesforce/rake/deploy_task.rb
48
61
  - lib/hoopla_salesforce/rake/retrieve_task.rb
49
- - lib/hoopla_salesforce/rake/base_task.rb
50
62
  - lib/hoopla_salesforce/version.rb
63
+ - lib/hoopla_salesforce/deployer.rb
64
+ - lib/hoopla_salesforce.rb
51
65
  has_rdoc: true
52
66
  homepage: http://hoopla.net
53
67
  licenses: []