change-log 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f90b7b9c038c413cacbe771d803c914012ae747
4
- data.tar.gz: 6fced5cb988b66866d81b4050111b52773f5290b
3
+ metadata.gz: 5d28c518959559f38238447798ea9d4411b3d1ee
4
+ data.tar.gz: f058ea66fdbcbc6fe273146715e31d17c7272150
5
5
  SHA512:
6
- metadata.gz: 31f31544b528c7cbac642bc4d94d77fa77ac8227d1b618cd7c4bb588b4ab2533730c190044c447f719c166be300a9e84f9d24c44495b36d94ce62af22edfcde9
7
- data.tar.gz: 09d510fb2349e186ac8c11b2b8a70709746cfad29887d0b17ed25bda46cec64ac4ce16fdbc55a3d6c5460490f8d7cb70c77fa8b3c6f727164d55665746aae677
6
+ metadata.gz: ac27c2deba965ae351b17f41ef92aa680d6dd9d1a05162ba8966d7fd1437b7f0f51a8af02acb403fd80130630800f120b74f9adb70ab7aaf5abe091d05665dfe
7
+ data.tar.gz: 81ce28ae28a52c2cd8b1445aa4f4fecde3b63a58dbaba4a68586cebc876f5eecb0fe78d1788b6f021793c49cf1d5e061e489c9aa48ee0f5132d53e9b43ddaa04
data/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # ChangeLog
2
+
3
+ ChangeLog is a Rails engine designed to facilitate parsing change log from git commit message and display in the browser.
4
+
5
+ ## Requirements
6
+
7
+ ChangeLog is compatible with Rails > 3.1
8
+
9
+ ChangeLog works with `activerecord` and `mongoid`
10
+
11
+ ##Usage
12
+ ChangeLog does not consider all the commit messages but with a special prefix. (`~~~` is default but you can override with other in the `change_log.rb` config file )
13
+
14
+ You can tag your messages. Like you may have 3/4 tags in each build.
15
+
16
+ If you commit with a message like this:
17
+ ```bash
18
+ ~~~VERSION_NUMBER(optional) # it will starts from 0.0.1 and path option will be increased if VERSION_NUMBER is not given
19
+ ~~feature # here feature is a tag
20
+ - feature one
21
+ - feature two
22
+ - feature three implemented
23
+
24
+ ~~bug
25
+ - bug 1 resolved
26
+ - bug 2 resolved
27
+ - bug 3 resolved
28
+
29
+ ~~api
30
+ + api foo implemented
31
+ + api bar modified
32
+ ```
33
+
34
+ and run
35
+
36
+ ```ruby
37
+ rake change_log:update_log
38
+ ```
39
+ You will have output like:
40
+
41
+ ##0.0.1 {TIME}
42
+ <p>feature:</p>
43
+ - feature one
44
+ - feature two
45
+ - feature three implemented
46
+
47
+ <p>bug:</p>
48
+ - bug 1 resolved
49
+ - bug 2 resolved
50
+ - bug 3 resolved
51
+
52
+ <p>api:</p>
53
+ + api foo implemented
54
+ + api bar modified
55
+
56
+ The commit message is markdown enabled
57
+ ## Installation & Setup
58
+
59
+ To install add the following to your Gemfile:
60
+
61
+ ```ruby
62
+ gem 'change-log'
63
+ ```
64
+
65
+ To setup just run:
66
+
67
+ ```bash
68
+ $ rake change_log:setup
69
+ ```
70
+
71
+ and follow the guide !
72
+
73
+ ## Authentication
74
+
75
+ If you want to authenticate users who can access ChangeLog, you need to provide <tt>ChangeLog::ApplicationController.authenticator</tt> proc. For example :
76
+
77
+ ```ruby
78
+ # config/initializers/change_log.rb
79
+ ChangeLog::ApplicationController.authenticator = proc {
80
+ authenticate_or_request_with_http_basic do |user_name, password|
81
+ user_name == 'change-log' && password == 'passme'
82
+ end
83
+ }
84
+ ```
85
+
86
+ Authenticator proc will be run from a before filter in controller context.
@@ -11,5 +11,29 @@
11
11
  // GO AFTER THE REQUIRES BELOW.
12
12
  //
13
13
  //= require jquery.min
14
- //= require jquery_ujs
15
- //= require_tree .
14
+ //= require_self
15
+
16
+ (function ($) {
17
+ $(document).on('click', 'ul.tag-list input[type=checkbox]', function () {
18
+ $('.version-wrapper').show();
19
+
20
+ $('ul.tag-list input[type=checkbox]:not(:checked)').each(function () {
21
+ var tagDiv = $('.tag-start.' + $(this).val());
22
+ tagDiv.hide();
23
+
24
+ });
25
+
26
+ $('ul.tag-list input[type=checkbox]:checked').each(function () {
27
+ var tagDiv = $('.tag-start.' + $(this).val());
28
+ tagDiv.show();
29
+ if (tagDiv.parent('.version-wrapper').find('div.tag-start:visible').length > 0)
30
+ tagDiv.parent('.version-wrapper').show()
31
+ });
32
+
33
+ $('.version-wrapper').each(function () {
34
+ if ($(this).find('div.tag-start:visible').length <= 0)
35
+ $(this).hide()
36
+ });
37
+
38
+ })
39
+ })(jQuery);
@@ -297,3 +297,13 @@
297
297
  .markdown-body pre code:before, .markdown-body pre code:after, .markdown-body pre tt:before, .markdown-body pre tt:after {
298
298
  content: normal;
299
299
  }
300
+
301
+ .markdown-body ul.tag-list {
302
+ margin: 0;
303
+ padding: 0;
304
+ list-style-type: none;
305
+ }
306
+ .markdown-body ul.tag-list li{
307
+ display: inline;
308
+ padding: 7px 15px;
309
+ }
@@ -1,5 +1,12 @@
1
- require 'rdiscount'
2
1
  module ChangeLog
3
- class ApplicationController < ActionController::Base
2
+ class ApplicationController < ::ApplicationController
3
+
4
+ cattr_accessor :authenticator
5
+
6
+ before_filter :authenticate_change_log
7
+
8
+ def authenticate_change_log
9
+ instance_exec(nil, &self.authenticator) if self.authenticator && self.authenticator.respond_to?(:instance_exec)
10
+ end
4
11
  end
5
12
  end
@@ -1,5 +1,5 @@
1
1
  module ChangeLog
2
- class BaseController < ::ApplicationController
2
+ class BaseController < ChangeLog::ApplicationController
3
3
  layout ChangeLog.config.layout
4
4
 
5
5
  def index
@@ -8,9 +8,9 @@ module ChangeLog
8
8
 
9
9
  def _model
10
10
  if ChangeLog.config.orm == 'activerecord'
11
- ChangeLog::ActiverecordModel
11
+ @change_log_model = ChangeLog::ActiverecordModel
12
12
  else
13
- ChangeLog::MongoidModel
13
+ @change_log_model = ChangeLog::MongoidModel
14
14
  end
15
15
  end
16
16
  end
@@ -2,7 +2,7 @@ require 'kramdown'
2
2
  module ChangeLog
3
3
  module ApplicationHelper
4
4
  def md(string)
5
- Kramdown::Document.new(string).to_html.html_safe
5
+ Kramdown::Document.new(string, parse_block_html: true).to_html.html_safe
6
6
  end
7
7
  end
8
8
  end
@@ -1,5 +1,26 @@
1
- <% @items.each do |item| %>
2
- <h2> <%= item.version %> {<%= item.time %>}</h2>
3
- <%= md item.message %>
4
- <br/>
5
- <% end %>
1
+ <% cache @change_log_model.last_release do %>
2
+ <% if ChangeLog.config.tag_filter_enabled %>
3
+ <fieldset>
4
+ <legend>Tags:</legend>
5
+ <ul class="tag-list">
6
+ <% @items.collect(&:tags).join(',').split(',').uniq.each do |tag| %>
7
+ <li>
8
+ <%= check_box_tag '_', tag, true %> <%= tag %>
9
+ </li>
10
+ <% end %>
11
+ </ul>
12
+ </fieldset>
13
+ <% end %>
14
+
15
+ <% @items.each do |item| %>
16
+ <div class="version-wrapper">
17
+ <h2> <%= item.version %> {<%= l item.time.to_date %>}</h2>
18
+ <%= md item.message %>
19
+ </div>
20
+ <% end %>
21
+ <% if @items.count == 0 %>
22
+ Please run <code>rake change_log:update_log</code> to get change logs here. <br/>
23
+ For more information please visit: <a href="https://github.com/amuntasim/change-log">ChangeLog Wiki</a>
24
+
25
+ <% end %>
26
+ <% end %>
data/lib/change-log.rb ADDED
@@ -0,0 +1 @@
1
+ require "change_log"
@@ -2,7 +2,6 @@ require 'active_support/core_ext/class/attribute_accessors'
2
2
 
3
3
  module ChangeLog
4
4
  module Config
5
-
6
5
  class << self
7
6
  # Table prefix to avoid collision
8
7
  attr_accessor :table_prefix
@@ -17,11 +16,14 @@ module ChangeLog
17
16
 
18
17
  attr_accessor :tag_prefix
19
18
 
19
+ attr_accessor :tag_filter_enabled
20
+
20
21
  def reset
21
22
  @layout = 'change_log/application'
22
23
  @table_prefix = nil
23
24
  @commit_prefix = '~~~'
24
25
  @tag_prefix = '~~'
26
+ @tag_filter_enabled = true
25
27
  end
26
28
  end
27
29
 
@@ -1,3 +1,3 @@
1
1
  module ChangeLog
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -32,7 +32,7 @@ module ChangeLog
32
32
  @table_prefix = ask_for("Do you want to add #{_table} prefix?", nil, table_prefix)
33
33
  template "initializer.erb", "config/initializers/change_log.rb"
34
34
  else
35
- display "You already have a config file. You're updating, heh? I'm generating a new 'change_log.rb.example' that you can review."
35
+ display "You already have a config file. generating a new 'change_log.rb.example' that you can review."
36
36
  template "initializer.erb", "config/initializers/change_log.rb.example"
37
37
  end
38
38
 
@@ -23,12 +23,13 @@ ChangeLog.config do |config|
23
23
  #config.commit_prefix = '~~~'
24
24
 
25
25
  #config.tag_prefix = '~~'
26
+
27
+ #config.tag_filter_enabled = true
28
+
26
29
  end if defined? ChangeLog
27
30
 
28
- <% if @table_prefix.present? %>
29
31
  <% if @orm == 'mongoid' -%>
30
32
  ChangeLog::MongoidModel.store_in collection: :'<%= [@table_prefix, 'change_logs'].compact.join('_') %>'
31
33
  <% else %>
32
34
  ChangeLog::ActiverecordModel.table_name = '<%= [@table_prefix, 'change_logs'].compact.join('_') %>'
33
35
  <% end -%>
34
- <% end %>
@@ -1,16 +1,14 @@
1
- class CreateTolkTables < ActiveRecord::Migration
1
+ class CreateChangeLogTables < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :<%= [table_prefix, 'change_logs'].compact.join('_') %> do |t|
4
4
  t.string :version, limit: 20
5
5
  t.datetime :time
6
6
  t.string :message, limit: 1000
7
7
  t.string :author, limit: 50
8
+ t.string :tags, limit: 100
8
9
  t.datetime :created_at
9
10
  t.datetime :updated_at
10
11
  end
11
-
12
- add_index :<%= [table_prefix, 'change_logs'].compact.join('_') %>, :category
13
-
14
12
  end
15
13
 
16
14
  def self.down
@@ -5,27 +5,26 @@ namespace :change_log do
5
5
  desc "Copying settings, models etc."
6
6
  task :setup => :environment do
7
7
  system 'rails g change_log:install'
8
+ Rake::Task['db:migrate'].invoke
8
9
  end
9
10
 
10
11
  desc "parse release notes and put into db"
11
12
  task :update_log , [:repo_path] => :environment do |t, args|
13
+ require 'git'
12
14
  repo_path = args.repo_path || Rails.root
13
- repo = Rugged::Repository.new("#{repo_path}/.git/")
14
- walker = Rugged::Walker.new(repo)
15
- walker.push(repo.head.target_id)
16
- walker.sorting(Rugged::SORT_DATE) # optional
15
+ repo = Git.open(repo_path)
17
16
  last_release = base_model.last_release
18
17
  if last_release
19
- records = walker.select { |c| c.time > last_release.time && c.message =~ /#{ChangeLog.config.commit_prefix}/ }
18
+ records = repo.log.since(last_release.time).select { |c| c.message =~ /#{ChangeLog.config.commit_prefix}/ }
20
19
  else
21
- records = walker.select { |c| c.message =~ /#{ChangeLog.config.commit_prefix}/ }
20
+ records = repo.log.select { |c| c.message =~ /#{ChangeLog.config.commit_prefix}/ }
22
21
  end
23
22
  records.each do |record|
24
- parse_ans_store_commit_message(record, last_release)
23
+ parse_and_store_commit_message(record, last_release)
25
24
  end
26
25
  end
27
26
 
28
- def parse_ans_store_commit_message(record, last_release)
27
+ def parse_and_store_commit_message(record, last_release)
29
28
  # messages = <<-eos
30
29
  # ###
31
30
  # ##api
@@ -46,18 +45,23 @@ namespace :change_log do
46
45
  formatted_message = []
47
46
  lines.each do |line|
48
47
  if tag = parse_tag(line)
48
+ formatted_message << "</div>" if o_tag.any?
49
+ formatted_message << "<div class='tag-start #{tag}'>"
50
+
49
51
  o_tag << tag
50
- formatted_message << "<p>#{tag}</p>"
52
+ formatted_message << "<p>#{tag}:</p>"
51
53
  else
52
54
  formatted_message << line
53
55
  end
54
56
  end
55
- base_model.create(version: version, author: record.author, message: formatted_message.join(''), time: record.time, tags: o_tag.join(','))
57
+ formatted_message << "\n </div>"
58
+
59
+ base_model.create(version: version, author: record.author, message: formatted_message.join(''), time: record.date, tags: o_tag.join(','))
56
60
  #base_model.create(version: version, author: 'record.author', message: formatted_message.join(''), time: 'record.time', tags: o_tag.join(','))
57
61
  end
58
62
 
59
63
  def parse_tag(line)
60
- line.gsub(ChangeLog.config.tag_prefix, '').strip if line =~ /#{ChangeLog.config.tag_prefix}/
64
+ line.gsub(/#{ChangeLog.config.tag_prefix}|\:/, '').strip if line =~ /#{ChangeLog.config.tag_prefix}/
61
65
  end
62
66
 
63
67
  def version_number(line)
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: change-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muntasim Ahmed
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-04 00:00:00.000000000 Z
11
+ date: 2014-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rugged
14
+ name: git
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.16'
19
+ version: 1.2.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.16'
26
+ version: 1.2.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: orm_adapter
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +95,7 @@ extensions: []
95
95
  extra_rdoc_files: []
96
96
  files:
97
97
  - MIT-LICENSE
98
- - README.rdoc
98
+ - README.md
99
99
  - Rakefile
100
100
  - app/assets/javascripts/change_log/application.js
101
101
  - app/assets/stylesheets/change_log/application.css
@@ -107,6 +107,7 @@ files:
107
107
  - app/views/change_log/base/index.html.erb
108
108
  - app/views/layouts/change_log/application.html.erb
109
109
  - config/routes.rb
110
+ - lib/change-log.rb
110
111
  - lib/change_log.rb
111
112
  - lib/change_log/config.rb
112
113
  - lib/change_log/engine.rb
data/README.rdoc DELETED
@@ -1,3 +0,0 @@
1
- = ChangeLog
2
-
3
- This project rocks and uses MIT-LICENSE.