helium 0.1.1 → 0.1.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.
@@ -1,3 +1,10 @@
1
+ === 0.1.2 / 2010-03-09
2
+
3
+ * Fix bug in custom loader function for `pageTracker`
4
+ * Improve how we map branch/tag names to commits to cope correctly with multiple refs
5
+ pointing at the same commit and always picking the latest commit for a branch
6
+
7
+
1
8
  === 0.1.1 / 2009-11-09
2
9
 
3
10
  * Don't place style.css etc in the local app directory, serve them from the gem
@@ -12,7 +12,7 @@ require 'oyster'
12
12
 
13
13
  module Helium
14
14
 
15
- VERSION = '0.1.1'
15
+ VERSION = '0.1.2'
16
16
 
17
17
  ROOT = File.expand_path(File.dirname(__FILE__))
18
18
  TEMPLATES = File.join(ROOT, '..', 'templates')
@@ -26,8 +26,10 @@ module Helium
26
26
  PACKAGES_MIN = 'helium.js'
27
27
  WEB_ROOT = 'js'
28
28
 
29
+ COMMIT = /^[0-9a-f]{40}$/
29
30
  GIT = '.git'
30
31
  HEAD = 'HEAD'
32
+ HEAD_LIST = 'heads.yml'
31
33
 
32
34
  JS_CLASS = 'js.class'
33
35
  LOADER_FILE = 'loader.js'
@@ -71,32 +71,26 @@ module Helium
71
71
  end
72
72
 
73
73
  # Exports static copies of a project from every branch and tag in its Git repository.
74
- # Existing static copies on disk are destroyed and replaced.
74
+ # Existing static copies on disk are removed. Mappings from branch/tag names to commit
75
+ # IDs are stored in heads.yml in the project directory.
75
76
  def export(project)
76
77
  repo_dir = repo_dir(project)
77
78
  repo = Grit::Repo.new(repo_dir)
78
- branches = repo.remotes + repo.tags
79
79
 
80
- mkdir_p(static_dir(project))
80
+ export_directory = static_dir(project)
81
+ mkdir_p(export_directory)
81
82
 
82
- branches.each do |branch|
83
- name, commit = branch.name.split(SEP).last, branch.commit.id
84
- next if HEAD == name
85
-
83
+ heads = head_mappings(project)
84
+ File.open(static_dir(project, HEAD_LIST), 'w') { |f| f.write(YAML.dump(heads)) }
85
+
86
+ heads.values.uniq.each do |commit|
86
87
  target = static_dir(project, commit)
88
+ next if File.directory?(target)
87
89
 
88
- log :export, "Exporting branch '#{ name }' of '#{ project }' into #{ target }"
89
- rm_rf(target) if File.directory?(target)
90
+ log :export, "Exporting commit '#{ commit }' of '#{ project }' into #{ target }"
90
91
  cp_r(repo_dir, target)
91
92
 
92
- cd(target) {
93
- if repo.branches.map { |b| b.name }.include?(name)
94
- `git checkout #{ name }`
95
- `git merge #{ branch.name }`
96
- else
97
- `git checkout -b #{ name } #{ branch.name }`
98
- end
99
- }
93
+ cd(target) { `git checkout #{commit}` }
100
94
  end
101
95
  end
102
96
 
@@ -111,14 +105,16 @@ module Helium
111
105
  @tree = Trie.new
112
106
  @custom = options[:custom]
113
107
  @location = options[:location]
114
- manifest = []
108
+ manifest = []
115
109
 
116
110
  # Loop over checked-out projects. Skip directories with no Jake file.
117
111
  Find.find(static_dir) do |path|
118
112
  next unless File.directory?(path) and File.file?(join(path, JAKE_FILE))
119
113
 
120
114
  project, commit = *path.split(SEP)[-2..-1]
121
- branch = Grit::Repo.new(path).head.name
115
+ heads = YAML.load(File.read(join(path, '..', HEAD_LIST)))
116
+ branches = heads.select { |(head, id)| id == commit }.map { |pair| pair.first }
117
+
122
118
  Jake.clear_hooks!
123
119
 
124
120
  # Event listener to capture file information from Jake
@@ -126,18 +122,21 @@ module Helium
126
122
  if build_type == :min
127
123
  @js_loader = file if File.basename(file) == LOADER_FILE and
128
124
  project == JS_CLASS and
129
- branch == @jsclass_version
125
+ branches.include?(@jsclass_version)
130
126
 
131
127
  file = file.sub(path, '')
132
128
  manifest << join(project, commit, file)
133
- @tree[[project, branch]] = commit
134
- @tree[[project, branch, file]] = package.meta
129
+
130
+ branches.each do |branch|
131
+ @tree[[project, branch]] = commit
132
+ @tree[[project, branch, file]] = package.meta
133
+ end
135
134
  end
136
135
  end
137
136
  jake_hook(:file_created, &hook)
138
137
  jake_hook(:file_not_changed, &hook)
139
138
 
140
- log :jake_build, "Building branch '#{ branch }' of '#{ project }' from #{ join(path, JAKE_FILE) }"
139
+ log :jake_build, "Building branch '#{ branches * "', '" }' of '#{ project }' from #{ join(path, JAKE_FILE) }"
141
140
 
142
141
  begin; Jake.build!(path)
143
142
  rescue; end
@@ -194,6 +193,16 @@ module Helium
194
193
  end
195
194
  end
196
195
 
196
+ # Returns a hash of branch/tag names to commit IDs for a project
197
+ def head_mappings(project)
198
+ repo = Grit::Repo.new(repo_dir(project))
199
+ (repo.remotes + repo.tags).inject({}) do |list, head|
200
+ commit = head.commit.id
201
+ list[head.name.split('/').last] = commit if commit =~ COMMIT
202
+ list
203
+ end
204
+ end
205
+
197
206
  # Notifies observers by sending a log message.
198
207
  def log(*args)
199
208
  changed(true)
@@ -13,6 +13,7 @@ loader(function(cb) {
13
13
  try {
14
14
  window.pageTracker = _gat._getTracker(Helium.GOOGLE_ANALYTICS_ID);
15
15
  } catch (err) {}
16
+ cb();
16
17
  }) .provides('pageTracker')
17
18
  .requires('_gat');
18
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Coglan
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-09 00:00:00 +00:00
12
+ date: 2010-03-09 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -72,6 +72,26 @@ dependencies:
72
72
  - !ruby/object:Gem::Version
73
73
  version: "1.0"
74
74
  version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubyforge
77
+ type: :development
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 2.0.3
84
+ version:
85
+ - !ruby/object:Gem::Dependency
86
+ name: gemcutter
87
+ type: :development
88
+ version_requirement:
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 0.3.0
94
+ version:
75
95
  - !ruby/object:Gem::Dependency
76
96
  name: hoe
77
97
  type: :development
@@ -80,7 +100,7 @@ dependencies:
80
100
  requirements:
81
101
  - - ">="
82
102
  - !ruby/object:Gem::Version
83
- version: 2.3.3
103
+ version: 2.5.0
84
104
  version:
85
105
  description: ""
86
106
  email: