blammo 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
File without changes
@@ -1,2 +1,5 @@
1
+ require 'fancypath'
2
+
3
+ require 'blammo/changelog'
1
4
  require 'blammo/cli'
2
5
  require 'blammo/git'
@@ -0,0 +1,31 @@
1
+ require 'yaml'
2
+
3
+ module Blammo
4
+ class Changelog
5
+ attr_accessor :releases
6
+
7
+ def initialize(path)
8
+ @path = path.to_fancypath
9
+ @releases = @path.exists? ? YAML.load_file(@path) : []
10
+ end
11
+
12
+ def update
13
+ commits = Git.commits(@path.dir, last_sha)
14
+
15
+ unless commits.empty?
16
+ release = Time.now.strftime("%Y%m%d%H%M%S")
17
+ releases.unshift(release => commits)
18
+ end
19
+
20
+ @releases.to_yaml(open(@path, "w"))
21
+ end
22
+
23
+ def last_sha
24
+ return if @releases.empty?
25
+ release = @releases.first
26
+ commits = release.first.last
27
+ commit = commits.detect {|commit| commit.is_a?(Hash)}
28
+ commit ? commit.first.first : nil
29
+ end
30
+ end
31
+ end
@@ -1,60 +1,21 @@
1
- require 'erb'
2
- require 'fancypath'
3
1
  require 'thor'
4
2
  require 'tilt'
5
- require 'yaml'
6
3
 
7
4
  module Blammo
8
5
  class CLI < Thor
9
- CHANGELOG_FILE_NAME = "changelog.yml"
10
-
11
6
  desc "generate [PATH]", "Generates a changelog.yml file"
12
- def generate(repo_path = ".")
13
- changelog_path = repo_path.to_fancypath.dir / CHANGELOG_FILE_NAME
14
- releases = changelog_path.exists? ? YAML.load_file(changelog_path) : []
15
-
16
- last_sha = self.class.find_last_sha(releases)
17
- commits = Git.commits(repo_path, last_sha)
18
-
19
- unless commits.empty?
20
- release = Time.now.strftime("%Y%m%d%H%M%S")
21
-
22
- releases.unshift(release => commits)
23
- releases.to_yaml(open(changelog_path, "w"))
24
- end
25
-
26
- puts releases.to_yaml
27
- end
28
-
29
- desc "render PATH", "Renders the given changelog.yml file"
30
- def render(path)
31
- releases = YAML.load_file(path)
32
-
33
- releases.each do |release_hash|
34
- release, groups = release_hash.first
35
- puts release
36
-
37
- groups.each do |group_hash|
38
- group, commits = group_hash
39
- puts " " + group
40
-
41
- commits.each do |commit_hash|
42
- sha, message = commit_hash.first
43
- puts " " + message
44
- end
45
- end
46
- end
47
-
48
- template = Tilt.new(File.expand_path("../../templates/changelog.markdown.erb", __FILE__))
49
- puts template.render(nil, :date => Date.today)
7
+ def generate(path = "changelog.yml")
8
+ changelog = Changelog.new(path)
9
+ changelog.update
10
+ puts changelog.releases.to_yaml
50
11
  end
51
12
 
52
- def self.find_last_sha(releases)
53
- return if releases.empty?
54
- release = releases.first
55
- commits = release.first.last
56
- commit = commits.detect {|commit| commit.is_a?(Hash)}
57
- commit ? commit.first.first : nil
13
+ desc "render [PATH]", "Renders the given changelog.yml file"
14
+ def render(path = "changelog.yml")
15
+ changelog = Changelog.new(path)
16
+ template_path = __FILE__.to_fancypath.dir / "../../templates/changelog.markdown.erb".to_fancypath
17
+ template = Tilt.new(template_path)
18
+ puts template.render(nil, :changelog => changelog)
58
19
  end
59
20
  end
60
21
  end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ CHANGELOG_PATH = __FILE__.to_fancypath.dir / "../fixtures/changelog.yml"
4
+
5
+ describe Blammo::Changelog do
6
+ describe ".last_sha" do
7
+ context "with no releases" do
8
+ before do
9
+ @changelog = Blammo::Changelog.new("foobar.yml")
10
+ end
11
+
12
+ it "should return nil" do
13
+ @changelog.last_sha.should be_nil
14
+ end
15
+ end
16
+
17
+ context "with a release" do
18
+ before do
19
+ @changelog = Blammo::Changelog.new(CHANGELOG_PATH)
20
+ end
21
+
22
+ it "should return the SHA of the last commit" do
23
+ @changelog.last_sha.should == "867b20e695e2b3770e150b0e844cdb6addd48ba4"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -12,28 +12,4 @@ describe Blammo::CLI do
12
12
  pending
13
13
  end
14
14
  end
15
-
16
- describe ".find_last_sha" do
17
- context "with no releases" do
18
- it "should return nil" do
19
- Blammo::CLI.find_last_sha([]).should be_nil
20
- end
21
- end
22
-
23
- context "with a release" do
24
- before do
25
- @sha = "3b183d9d1ec270fc63ef54695db1cd2df5d597cf"
26
- @releases = [
27
- {"20100424175354" => [
28
- "foo bar",
29
- {@sha => "lorem ipsum"}
30
- ]}
31
- ]
32
- end
33
-
34
- it "should return the SHA of the last commit" do
35
- Blammo::CLI.find_last_sha(@releases).should == @sha
36
- end
37
- end
38
- end
39
15
  end
@@ -1,3 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
- <%= date %>
3
+ <% changelog.releases.each do |release_hash| %>
4
+ <% release, commits = release_hash.first %>
5
+ ## <%= release %>
6
+ <% commits.each do |commit_hash| %>
7
+ <% sha, message = commit_hash.first %>
8
+ * <%= message %>
9
+ <% end %>
10
+ <% end %>
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Josh Bassett
@@ -14,8 +14,8 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-25 00:00:00 +10:00
18
- default_executable: blammo
17
+ date: 2010-04-30 00:00:00 +10:00
18
+ default_executable: blam
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  requirement: &id001 !ruby/object:Gem::Requirement
@@ -128,7 +128,7 @@ dependencies:
128
128
  description: " Changelog generator.\n"
129
129
  email: josh.bassett@gmail.com
130
130
  executables:
131
- - blammo
131
+ - blam
132
132
  extensions: []
133
133
 
134
134
  extra_rdoc_files:
@@ -140,11 +140,13 @@ files:
140
140
  - README.md
141
141
  - Rakefile
142
142
  - VERSION
143
- - bin/blammo
143
+ - bin/blam
144
144
  - lib/blammo.rb
145
145
  - lib/blammo/alone.rb
146
+ - lib/blammo/changelog.rb
146
147
  - lib/blammo/cli.rb
147
148
  - lib/blammo/git.rb
149
+ - spec/blammo/changelog_spec.rb
148
150
  - spec/blammo/cli_spec.rb
149
151
  - spec/blammo/git_spec.rb
150
152
  - spec/spec.opts
@@ -181,6 +183,7 @@ signing_key:
181
183
  specification_version: 3
182
184
  summary: CHANGELOG from Blammo.
183
185
  test_files:
186
+ - spec/blammo/changelog_spec.rb
184
187
  - spec/blammo/cli_spec.rb
185
188
  - spec/blammo/git_spec.rb
186
189
  - spec/spec_helper.rb