changefu 0.1.0.rc1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0e130e4e913c1a0c929e67fd7e2d4a85a25ff090bfd05a7a48f227eb64d4d879
4
+ data.tar.gz: c5dc08b554faf036c7e2df33fe52ac9c678aa556ff193b677ebea9bf81ab8cff
5
+ SHA512:
6
+ metadata.gz: 273c50756265b7a443659eddb805ebdc508f802eb7b691dd8b91b88060140f8f674a33793edf92d6b1ab6c9bca7015977b1191f5ec352595f64d89568797d8b7
7
+ data.tar.gz: 9548ee2737546d5acb0ac8243e449c8dedc4a2a0c8f3639982273f2d40c2ed75738803c118a2819f9ad171ac7e79d96edb7ab20c18fdddf2e59262ab83d206e2
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # load dependencies from gemspec
4
+ gemspec
5
+
6
+ #
7
+ ## DEVELOPMENT DEPENDENCIES
8
+ #
9
+
10
+ gem 'awesome_print'
11
+ gem 'pry'
12
+ gem 'rake'
13
+ gem 'rspec'
14
+ gem 'rubocop-nosolosoftware'
15
+ gem 'simplecov', require: false
@@ -0,0 +1,119 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ changefu (0.1.0.rc1)
5
+ activesupport (> 5.0, < 7)
6
+ thor (~> 1.0, >= 1.0.1)
7
+ tty-table (~> 0.11, >= 0.11.0)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activesupport (6.0.2.1)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 0.7, < 2)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
17
+ zeitwerk (~> 2.2)
18
+ ast (2.4.0)
19
+ awesome_print (1.8.0)
20
+ coderay (1.1.2)
21
+ concurrent-ruby (1.1.5)
22
+ diff-lcs (1.3)
23
+ docile (1.3.2)
24
+ equatable (0.6.1)
25
+ i18n (1.8.2)
26
+ concurrent-ruby (~> 1.0)
27
+ jaro_winkler (1.5.4)
28
+ json (2.3.0)
29
+ method_source (0.9.2)
30
+ minitest (5.14.0)
31
+ necromancer (0.5.1)
32
+ parallel (1.19.1)
33
+ parser (2.6.5.0)
34
+ ast (~> 2.4.0)
35
+ pastel (0.7.3)
36
+ equatable (~> 0.6)
37
+ tty-color (~> 0.5)
38
+ pry (0.12.2)
39
+ coderay (~> 1.1.0)
40
+ method_source (~> 0.9.0)
41
+ rack (2.0.7)
42
+ rainbow (3.0.0)
43
+ rake (12.3.3)
44
+ rspec (3.9.0)
45
+ rspec-core (~> 3.9.0)
46
+ rspec-expectations (~> 3.9.0)
47
+ rspec-mocks (~> 3.9.0)
48
+ rspec-core (3.9.0)
49
+ rspec-support (~> 3.9.0)
50
+ rspec-expectations (3.9.0)
51
+ diff-lcs (>= 1.2.0, < 2.0)
52
+ rspec-support (~> 3.9.0)
53
+ rspec-mocks (3.9.0)
54
+ diff-lcs (>= 1.2.0, < 2.0)
55
+ rspec-support (~> 3.9.0)
56
+ rspec-support (3.9.0)
57
+ rubocop (0.77.0)
58
+ jaro_winkler (~> 1.5.1)
59
+ parallel (~> 1.10)
60
+ parser (>= 2.6)
61
+ rainbow (>= 2.2.2, < 4.0)
62
+ ruby-progressbar (~> 1.7)
63
+ unicode-display_width (>= 1.4.0, < 1.7)
64
+ rubocop-nosolosoftware (0.1.0)
65
+ rubocop (~> 0.77.0)
66
+ rubocop-performance (~> 1.5.1)
67
+ rubocop-rails (~> 2.4.0)
68
+ rubocop-rake (~> 0.5.0)
69
+ rubocop-rspec (~> 1.37.0)
70
+ rubocop-performance (1.5.1)
71
+ rubocop (>= 0.71.0)
72
+ rubocop-rails (2.4.0)
73
+ rack (>= 1.1)
74
+ rubocop (>= 0.72.0)
75
+ rubocop-rake (0.5.0)
76
+ rubocop
77
+ rubocop-rspec (1.37.0)
78
+ rubocop (>= 0.68.1)
79
+ ruby-progressbar (1.10.1)
80
+ simplecov (0.17.1)
81
+ docile (~> 1.1)
82
+ json (>= 1.8, < 3)
83
+ simplecov-html (~> 0.10.0)
84
+ simplecov-html (0.10.2)
85
+ strings (0.1.8)
86
+ strings-ansi (~> 0.1)
87
+ unicode-display_width (~> 1.5)
88
+ unicode_utils (~> 1.4)
89
+ strings-ansi (0.2.0)
90
+ thor (1.0.1)
91
+ thread_safe (0.3.6)
92
+ tty-color (0.5.1)
93
+ tty-screen (0.7.1)
94
+ tty-table (0.11.0)
95
+ equatable (~> 0.6)
96
+ necromancer (~> 0.5)
97
+ pastel (~> 0.7.2)
98
+ strings (~> 0.1.5)
99
+ tty-screen (~> 0.7)
100
+ tzinfo (1.2.6)
101
+ thread_safe (~> 0.1)
102
+ unicode-display_width (1.6.0)
103
+ unicode_utils (1.4.0)
104
+ zeitwerk (2.2.2)
105
+
106
+ PLATFORMS
107
+ ruby
108
+
109
+ DEPENDENCIES
110
+ awesome_print
111
+ changefu!
112
+ pry
113
+ rake
114
+ rspec
115
+ rubocop-nosolosoftware
116
+ simplecov
117
+
118
+ BUNDLED WITH
119
+ 2.1.4
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 Javier Aranda
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,43 @@
1
+ # Changefu
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/changefu`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'changefu'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install changefu
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/changefu. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
+
37
+ ## License
38
+
39
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
40
+
41
+ ## Code of Conduct
42
+
43
+ Everyone interacting in the Changefu project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/changefu/blob/master/CODE_OF_CONDUCT.md).
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pathname'
4
+
5
+ source_path = (Pathname.new(__FILE__).dirname + '../lib').expand_path.to_s
6
+ $LOAD_PATH.unshift(source_path) unless $LOAD_PATH.include?(source_path)
7
+
8
+ require 'changefu'
9
+
10
+ Changefu::CLI.start(ARGV)
@@ -0,0 +1,21 @@
1
+ require 'pathname'
2
+ require 'active_support/core_ext/object'
3
+ require 'active_support/core_ext/string'
4
+ require 'active_support/json'
5
+
6
+ module Changefu
7
+ def self.path_helper(path)
8
+ Pathname.pwd.join(path)
9
+ end
10
+
11
+ def self.path_helper!(path)
12
+ path = path_helper(path)
13
+
14
+ return path if path.exist?
15
+
16
+ abort "#{path} cannot be found!"
17
+ end
18
+ end
19
+
20
+ require 'changefu/cli'
21
+ require 'changefu/version'
@@ -0,0 +1,25 @@
1
+ module Changefu
2
+ module Actions
3
+ def cf_root(path=nil)
4
+ @cf_root ||= begin
5
+ if path.nil?
6
+ cf_root(Pathname.pwd)
7
+ elsif path.join('changelog').exist?
8
+ path
9
+ else
10
+ path.root? ? nil : cf_root(path.parent)
11
+ end
12
+ end
13
+ end
14
+
15
+ def require_changefu!
16
+ if !cf_root
17
+ abort <<~TEXT
18
+ This project does not use ChangeFu. Please run `changefu setup` first on the project root!
19
+ TEXT
20
+ elsif cf_root && cf_root != Pathname.pwd
21
+ abort 'You must run this command from the root folder of the project!'
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,47 @@
1
+ require 'yaml'
2
+
3
+ module Changefu
4
+ class Change
5
+ attr_accessor :timestamp, :type, :title, :username, :issue, :path
6
+
7
+ def self.from_file(path)
8
+ data = YAML.safe_load(File.read(path), symbolize_names: true)
9
+ timestamp = path.basename('.yml').to_s.split('_').first
10
+
11
+ new(
12
+ type: data.fetch(:type),
13
+ title: data.fetch(:title),
14
+ username: data.fetch(:username),
15
+ issue: data.fetch(:issue),
16
+ timestamp: timestamp,
17
+ path: path
18
+ )
19
+ end
20
+
21
+ def initialize(attributes={})
22
+ attributes.each_pair do |key, value|
23
+ send("#{key}=", value)
24
+ end
25
+ end
26
+
27
+ def issue_to_markdown
28
+ url = Changefu::Configuration.issue_url
29
+
30
+ return unless url
31
+
32
+ "[##{issue}](#{url.sub('{issue}', issue.to_s)})"
33
+ end
34
+
35
+ def username_to_markdown
36
+ url = Changefu::Configuration.username_url
37
+
38
+ return unless url
39
+
40
+ "([#{username}](#{url.sub('{username}', username)}))"
41
+ end
42
+
43
+ def to_hash
44
+ {title: title, username: username, issue: issue}
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,125 @@
1
+ require 'erb'
2
+ require 'fileutils'
3
+ require 'ostruct'
4
+ require 'pathname'
5
+ require 'yaml'
6
+ require 'changefu/configuration'
7
+ require 'changefu/changes_group'
8
+ require 'changefu/release'
9
+
10
+ module Changefu
11
+ class Changelog
12
+ # Generate the changelog
13
+ def self.generate!(format, filename)
14
+ new.send("generate_#{format}", filename)
15
+ end
16
+
17
+ def self.release!(version, date=nil, tag=nil)
18
+ date ||= Time.now.strftime('%Y-%m-%d')
19
+ tag ||= "v#{version}"
20
+
21
+ new.release(version, date, tag)
22
+ end
23
+
24
+ def self.releases
25
+ new.releases
26
+ end
27
+
28
+ # List of releases
29
+ def releases
30
+ @releases ||= (
31
+ YAML.safe_load(
32
+ File.read(Changefu.path_helper!('changelog/releases.yml')),
33
+ symbolize_names: true, permitted_classes: [Date]
34
+ ) || []
35
+ ).map { |release|
36
+ Changefu::Release.new(release[:version], release[:date], release[:tag])
37
+ }.sort_by(&:date).reverse
38
+ end
39
+
40
+ # List of unreleased changes
41
+ def unreleased_changes
42
+ unreleased_path.glob('*.yml').map { |f| Changefu::Change.from_file(f) }.sort_by(&:timestamp)
43
+ end
44
+
45
+ # List of unreleased changes group by type
46
+ def unreleased_changes_by_type
47
+ unreleased_changes.group_by(&:type).map { |g|
48
+ ChangesGroup.new(g.first, g.last)
49
+ }.sort_by(&:type)
50
+ end
51
+
52
+ # Release a new version
53
+ def release(version, date, tag)
54
+ abort "Version #{version} already exists!" if releases.any? { |r| r.version == version }
55
+
56
+ # create new release
57
+ new_release = Changefu::Release.new(version, date, tag)
58
+
59
+ # create new release directory
60
+ new_release.create_dir
61
+
62
+ # compose new releases array
63
+ new_releases_list = (releases + [new_release]).map(&:to_yaml_hash)
64
+
65
+ # update releases.yml file
66
+ save_file(new_releases_list.to_yaml, 'changelog/releases.yml')
67
+
68
+ # move changes files from unreleased
69
+ Changefu.path_helper('changelog/unreleased').glob('*.yml').each do |file|
70
+ move_file(file, new_release.path)
71
+ end
72
+
73
+ # reset releases list to force reload next time
74
+ @releases = nil
75
+ end
76
+
77
+ def generate_markdown(filename)
78
+ template = ERB.new(File.read(templates_path.join('changelog.markdown.erb')), trim_mode: '>')
79
+ output = template.result(context.instance_eval { binding })
80
+ save_file(output, filename)
81
+ end
82
+
83
+ def generate_json(filename)
84
+ template = ERB.new(File.read(templates_path.join('changelog.json.erb')), trim_mode: '>')
85
+ output = template.result(context.instance_eval { binding })
86
+ save_file(output, filename)
87
+ end
88
+
89
+ private
90
+
91
+ def move_file(origin, destination)
92
+ if Changefu::Configuration.use_git_mv
93
+ system("git mv #{origin} #{destination} 2> /dev/null")
94
+
95
+ return if $?.success?
96
+ end
97
+
98
+ FileUtils.mv(origin, destination)
99
+ end
100
+
101
+ def save_file(content, path)
102
+ File.open(Changefu.path_helper(path), 'w') do |file|
103
+ file.write(content)
104
+ end
105
+ end
106
+
107
+ def templates_path
108
+ Pathname.new(__dir__).join('../../templates')
109
+ end
110
+
111
+ def unreleased_path
112
+ Changefu.path_helper('changelog/unreleased')
113
+ end
114
+
115
+ def context
116
+ OpenStruct.new(
117
+ header: Changefu::Configuration.header,
118
+ footer: Changefu::Configuration.footer,
119
+ unreleased: unreleased_changes_by_type,
120
+ include_unreleased: Changefu::Configuration.include_unreleased,
121
+ releases: releases
122
+ )
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,18 @@
1
+ module Changefu
2
+ class ChangesGroup
3
+ attr_reader :type, :changes
4
+
5
+ def initialize(type, changes=[])
6
+ @type = type
7
+ @changes = changes
8
+ end
9
+
10
+ def humanized_name
11
+ if Changefu::Configuration.respond_to?(:types)
12
+ Changefu::Configuration.types[type.to_sym] || type.capitalize
13
+ else
14
+ type.capitalize
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,133 @@
1
+ require 'thor'
2
+ require 'tty-table'
3
+ require 'changefu/actions'
4
+ require 'changefu/changelog'
5
+ require 'changefu/configuration'
6
+
7
+ module Changefu
8
+ class CLI < Thor
9
+ include Thor::Actions
10
+ include Actions
11
+
12
+ package_name 'Changefu'
13
+ default_task :help
14
+
15
+ def self.source_root
16
+ File.expand_path('../../templates', __dir__)
17
+ end
18
+
19
+ def self.exit_on_failure?
20
+ true
21
+ end
22
+
23
+ desc 'add TITLE', 'Adds a new entry to changelog using this title'
24
+ option :type, type: :string, default: 'added'
25
+ option :username, type: :string
26
+ option :issue, type: :string
27
+ def add(title)
28
+ require_changefu!
29
+
30
+ timestamp = Time.now.strftime('%Y%m%d%H%M%S')
31
+ template 'change.tt',
32
+ "changelog/unreleased/#{timestamp}_#{title.parameterize(separator: '_')}.yml",
33
+ options.merge(title: title, username: username, issue: issue)
34
+ end
35
+
36
+ desc 'generate', 'Generates changelog files'
37
+ option :markdown, type: :boolean
38
+ option :json, type: :boolean
39
+ option 'markdown-filename', type: :string
40
+ option 'json-filename', type: :string
41
+ def generate
42
+ require_changefu!
43
+ generate_changelog!
44
+ end
45
+
46
+ desc 'release VERSION', 'Releases a new version and generates changelog files'
47
+ option :date, type: :string
48
+ option :tag, type: :string
49
+ option :generate, type: :boolean, default: true
50
+ option :markdown, type: :boolean
51
+ option :json, type: :boolean
52
+ option 'markdown-filename', type: :string
53
+ option 'json-filename', type: :string
54
+ def release(version)
55
+ require_changefu!
56
+
57
+ # release new version
58
+ Changefu::Changelog.release!(version, options[:date], options[:tag])
59
+
60
+ # generate changelog
61
+ generate_changelog! if options[:generate]
62
+ end
63
+
64
+ desc 'releases', 'List of releases'
65
+ def releases
66
+ require_changefu!
67
+
68
+ list = Changefu::Changelog.releases.map(&:to_table_row)
69
+
70
+ if list.count.positive?
71
+ $stdout.puts TTY::Table.new(
72
+ %w[Release Date Tag], list
73
+ ).render(:ascii, padding: [0, 1, 0, 1])
74
+ else
75
+ warn 'No releases found in `changelog/releases.yml` file'
76
+ end
77
+ end
78
+
79
+ desc 'setup', 'Installs Changefu in this folder'
80
+ def setup
81
+ # create the changelog directory
82
+ empty_directory 'changelog'
83
+ empty_directory 'changelog/releases'
84
+ empty_directory 'changelog/unreleased'
85
+ create_file 'changelog/releases/.keep'
86
+ create_file 'changelog/unreleased/.keep'
87
+ create_file 'changelog/releases.yml', '---'
88
+
89
+ # add the configuration file
90
+ copy_file 'changefu.yml', '.changefu.yml'
91
+ end
92
+
93
+ map %w[--version -v] => :app_version
94
+ desc '--version, -v', 'Prints the version'
95
+ def app_version
96
+ $stdout.puts Changefu.version
97
+ end
98
+
99
+ private
100
+
101
+ def generate_changelog!
102
+ if option_markdown
103
+ Changefu::Changelog.generate!(:markdown, option_markdown_filename)
104
+ say_status :created, option_markdown_filename
105
+ end
106
+
107
+ return unless option_json
108
+
109
+ Changefu::Changelog.generate!(:json, option_json_filename)
110
+ say_status :created, option_json_filename
111
+ end
112
+
113
+ def option_markdown
114
+ default = Changefu::Configuration.formats.try(:[], :markdown) || false
115
+ options.key?('markdown') ? options['markdown'] : default
116
+ end
117
+
118
+ def option_json
119
+ default = Changefu::Configuration.formats.try(:[], :json) || false
120
+ options.key?('json') ? options['json'] : default
121
+ end
122
+
123
+ def option_markdown_filename
124
+ default = Changefu::Configuration.filenames.try(:[], :markdown) || 'CHANGELOG.md'
125
+ options.key?('markdown-filename') ? options['markdown-filename'] : default
126
+ end
127
+
128
+ def option_json_filename
129
+ default = Changefu::Configuration.filenames.try(:[], :json) || '.changelog.json'
130
+ options.key?('json-filename') ? options['json-filename'] : default
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,27 @@
1
+ require 'yaml'
2
+
3
+ module Changefu
4
+ class Configuration
5
+ class << self
6
+ def method_missing(method)
7
+ if config.key?(method)
8
+ config[method]
9
+ else
10
+ abort "You must set `#{method}` directive in `.changefu.yml` file!"
11
+ end
12
+ end
13
+
14
+ def respond_to_missing?(method, include_private=false)
15
+ config.key?(method) || super
16
+ end
17
+
18
+ private
19
+
20
+ def config
21
+ @config ||= YAML.safe_load(
22
+ File.read(Changefu.path_helper!('.changefu.yml')), symbolize_names: true
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,54 @@
1
+ require 'fileutils'
2
+ require 'changefu/change'
3
+ require 'changefu/changes_group'
4
+
5
+ module Changefu
6
+ class Release
7
+ attr_accessor :version, :date, :tag
8
+
9
+ def initialize(version, date, tag)
10
+ @version = version
11
+ @date = date.is_a?(Date) ? date.strftime('%Y-%m-%d') : date
12
+ @tag = tag
13
+ end
14
+
15
+ # List of changes for this release
16
+ def changes
17
+ @changes ||= path.glob('*.yml').map { |f| Changefu::Change.from_file(f) }.sort_by(&:timestamp)
18
+ end
19
+
20
+ # List of changes grouped by type
21
+ def changes_by_type
22
+ @changes_by_type ||= changes.group_by(&:type).map { |g|
23
+ ChangesGroup.new(g.first, g.last)
24
+ }.sort_by(&:type)
25
+ end
26
+
27
+ # Path to the release folder with the changes
28
+ def path
29
+ Changefu.path_helper("changelog/releases/#{version}")
30
+ end
31
+
32
+ def to_table_row
33
+ [version, date, tag]
34
+ end
35
+
36
+ def create_dir
37
+ FileUtils.mkdir(path) unless path.exist?
38
+ end
39
+
40
+ def to_yaml_hash
41
+ {'version' => version, 'date' => date, 'tag' => tag}
42
+ end
43
+
44
+ def to_hash
45
+ changes_hash = {}
46
+
47
+ changes_by_type.each do |group|
48
+ changes_hash[group.type] = group.changes.map(&:to_hash)
49
+ end
50
+
51
+ {version: version, date: date, tag: tag, changes: changes_hash}
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+
3
+ module Changefu
4
+ module VERSION
5
+ MAJOR = 0
6
+ MINOR = 1
7
+ TINY = 0
8
+ PRE = 'rc1'
9
+
10
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
11
+ end
12
+
13
+ def self.version
14
+ VERSION::STRING
15
+ end
16
+
17
+ def self.gem_version
18
+ Gem::Version.new VERSION::STRING
19
+ end
20
+
21
+ def self.required_ruby_version
22
+ Gem::Requirement.new('>= 2.5.0')
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: changefu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.rc1
5
+ platform: ruby
6
+ authors:
7
+ - Javier Aranda
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-02-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: thor
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.0.1
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: tty-table
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.11.0
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.11'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.11.0
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '0.11'
73
+ description: Command-line utility that help you to keep a good changelog
74
+ email: javier.aranda.varo@gmail.com
75
+ executables:
76
+ - changefu
77
+ extensions: []
78
+ extra_rdoc_files:
79
+ - LICENSE
80
+ - README.md
81
+ files:
82
+ - Gemfile
83
+ - Gemfile.lock
84
+ - LICENSE
85
+ - README.md
86
+ - Rakefile
87
+ - exe/changefu
88
+ - lib/changefu.rb
89
+ - lib/changefu/actions.rb
90
+ - lib/changefu/change.rb
91
+ - lib/changefu/changelog.rb
92
+ - lib/changefu/changes_group.rb
93
+ - lib/changefu/cli.rb
94
+ - lib/changefu/configuration.rb
95
+ - lib/changefu/release.rb
96
+ - lib/changefu/version.rb
97
+ homepage: https://github.com/javierav/changefu
98
+ licenses:
99
+ - MIT
100
+ metadata:
101
+ source_code_uri: https://github.com/javierav/changefu/tree/v0.1.0.rc1
102
+ changelog_uri: https://github.com/javierav/changefu/blob/v0.1.0.rc1/CHANGELOG.md
103
+ homepage_uri: https://github.com/javierav/changefu
104
+ post_install_message:
105
+ rdoc_options:
106
+ - "--charset=UTF-8"
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 2.5.0
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">"
117
+ - !ruby/object:Gem::Version
118
+ version: 1.3.1
119
+ requirements: []
120
+ rubygems_version: 3.0.3
121
+ signing_key:
122
+ specification_version: 4
123
+ summary: A tool for keep a changelog
124
+ test_files: []