codelog 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdc0db61aa88a54e953d1bc0abcb652f776fa596db6fc21f17008ee96e65f00d
4
- data.tar.gz: f426e53e20594ff0729d50172882e0233d30e7e89338e84d692a1ef73d2d3014
3
+ metadata.gz: 9fd159ca76edb63f2a839baec37d89232d902edff3bc6ccdd7b4d57d97679090
4
+ data.tar.gz: d8bb75225596663caa438ec42293222de1555305186022e96b2a22bf024411e7
5
5
  SHA512:
6
- metadata.gz: 658c2a502793683766b34f184a244a6c8e75bdef77675e483c2e7b36cf3b8c922cb95ccc715102780a5ed5f26bca97688da3428708167a0c674be0463af262fa
7
- data.tar.gz: 730574b14e06985604734ad65248b9580ac404f4a515428ebb66e7d3131a63ef2099e2133e04400c39dc7f4699513d9c4c007e30bf087fa2be2ccf3d17ded93d
6
+ metadata.gz: d42fca0648b5eb83c9cb6d52c38ba692bc253afaa50e964561e967b87db5c0f47a2dbb90f07c94f4f3de356f57c66366bcf27451d872093547d9f17c5e045714
7
+ data.tar.gz: '079daac82645810755408249ebc81ebe2feaef4ccbdddec7bdabfc0cd14b2569f20ea5b7e8eea2db3abdb59e1d61ee360fc5093ccb5034ed09ad809a93085ddd'
@@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file.
3
3
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
4
4
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
5
5
 
6
+ ## 0.8.0
7
+ ### Added
8
+ - Preview option for changelogs on the `release` and `bump` command
9
+
10
+ ### Fixed
11
+ - Test file (`version_spec`), previously, this test would fail if you run it alone
12
+
13
+ ---
6
14
  ## 0.7.0
7
15
  ### Added
8
16
  - Command `codelog bump [major|minor|patch]` that automatically sets the next version
data/README.md CHANGED
@@ -76,9 +76,9 @@ After the initial setup every time a change is made, the developer should run th
76
76
  $ codelog new <NAME>
77
77
  ```
78
78
 
79
- This will generate a change file, in `YAML` format, on `changelogs/unreleased/` from the `template.yml`, named with a timestamp value followed by the the given `NAME`, converted to snake case, or the default name(`change`).
79
+ This will generate a change file, in `YAML` format, on `changelogs/unreleased/` from the `template.yml`, named with a timestamp value followed by the given `NAME`, converted to snake case, or the default name(`change`).
80
80
 
81
- The new change file should be filled with informations about the implemented change, all unused topics should be erased and the file committed.
81
+ The new change file should be filled with information about the implemented change, all unused topics should be erased and the file committed.
82
82
 
83
83
  Additionally, you can pass some extra options to the `new` command. Type `codelog help new` in your console for more information.
84
84
 
@@ -95,7 +95,7 @@ No conflicts to resolve. All changes documented.
95
95
 
96
96
  It will execute 3 steps:
97
97
 
98
- - Generate a new release file at `changelogs/releases/` by merging all change files at `changelogs/unreleased/`
98
+ - Generates a new release file at `changelogs/releases/` by merging all change files at `changelogs/unreleased/`
99
99
  - Deletes the change files at `changelogs/unreleased/` because they now compose the new release. If it was not deleted, the change would appear repeated in the next release.
100
100
  - Updates the `CHANGELOG.md` file by merging all the releases at `changelogs/releases/`.
101
101
 
@@ -105,6 +105,15 @@ $ codelog bump [major|minor|patch] <RELEASE_DATE>
105
105
  ```
106
106
  Where the first mandatory parameter is the desired release type, i.e: If you don't have any release, `codelog bump patch` will release the 0.0.1 version.
107
107
 
108
+ ### Preview a Release
109
+
110
+ Sometimes, you just want to check the developed changes or preview how the next release will look like. To do so, you can pass the `[-p|--preview]` option on the `release` and `bump` commands. For instance, the following:
111
+
112
+ ``` bash
113
+ $ codelog release 1.0.0 --preview
114
+ ```
115
+ Will display a preview of your changes on your console as if the version **1.0.0** has been released.
116
+
108
117
  ## Configuring
109
118
 
110
119
  Since version 0.3.0, there are a few configurations that are possible. You can choose:
@@ -2,9 +2,12 @@ require 'codelog/cli'
2
2
  require 'codelog/config'
3
3
  require 'codelog/message'
4
4
  require 'codelog/version'
5
+ require 'codelog/output/release_file'
6
+ require 'codelog/output/log'
5
7
  require 'codelog/command/setup'
6
8
  require 'codelog/command/new'
7
9
  require 'codelog/command/release'
10
+ require 'codelog/command/preview'
8
11
  require 'codelog/command/bump'
9
12
  require 'codelog/command/step/changelog'
10
13
  require 'codelog/command/step/delete'
@@ -19,16 +19,24 @@ module Codelog
19
19
  end
20
20
 
21
21
  desc 'release [VERSION] <RELEASE_DATE>', 'Generate new release updating changelog'
22
- def release(version_number, release_date =
23
- Date.today.strftime(Codelog::Config.date_input_format))
24
- Codelog::Command::Release.run version_number, release_date
22
+ method_option :preview, desc: 'Prints the preview of the specified version release',
23
+ aliases: ['-p', '--preview'], type: :boolean
24
+ def release(version_number,
25
+ release_date = Date.today.strftime(Codelog::Config.date_input_format))
26
+ if options[:preview]
27
+ Codelog::Command::Preview.run version_number, release_date
28
+ else
29
+ Codelog::Command::Release.run version_number, release_date
30
+ end
25
31
  end
26
32
 
27
33
  desc 'bump [VERSION_TYPE] <RELEASE_DATE>', 'Bumps the next version,
28
34
  being it major, minor or patch'
35
+ method_option :preview, desc: 'Prints the preview of the next version',
36
+ aliases: ['-p', '--preview'], type: :boolean
29
37
  def bump(version_type, release_date =
30
38
  Date.today.strftime(Codelog::Config.date_input_format))
31
- Codelog::Command::Bump.run version_type, release_date
39
+ Codelog::Command::Bump.run version_type, release_date, options
32
40
  end
33
41
  end
34
42
  end
@@ -6,16 +6,20 @@ module Codelog
6
6
  VALID_VERSION_TYPES = ['major', 'minor', 'patch'].freeze
7
7
  INITIAL_RELEASE_VERSION = '0.0.0'.freeze
8
8
 
9
- def self.run(version_type, release_date)
10
- Codelog::Command::Bump.new.run version_type, release_date
9
+ def self.run(version_type, release_date, options)
10
+ Codelog::Command::Bump.new.run version_type, release_date, options
11
11
  end
12
12
 
13
- def run(version_type, release_date)
13
+ def run(version_type, release_date, options)
14
14
  unless VALID_VERSION_TYPES.include?(version_type.downcase)
15
15
  abort(Codelog::Message::Error.invalid_version_type(version_type))
16
16
  end
17
17
 
18
- Codelog::Command::Release.run(next_version(version_type), release_date)
18
+ if options[:preview]
19
+ Codelog::Command::Preview.run(next_version(version_type), release_date)
20
+ else
21
+ Codelog::Command::Release.run(next_version(version_type), release_date)
22
+ end
19
23
  end
20
24
 
21
25
  private
@@ -0,0 +1,14 @@
1
+ module Codelog
2
+ module Command
3
+ class Preview
4
+ def self.run(version_number, release_date)
5
+ Codelog::Command::Preview.new.run version_number, release_date
6
+ end
7
+
8
+ def run(version_number, release_date)
9
+ outputter = Codelog::Output::Log.new
10
+ Codelog::Command::Step::Version.run version_number, release_date, outputter
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,12 +1,15 @@
1
1
  module Codelog
2
2
  module Command
3
3
  class Release
4
+ RELEASES_PATH = 'changelogs/releases'.freeze
5
+
4
6
  def self.run(version_number, release_date)
5
7
  Codelog::Command::Release.new.run version_number, release_date
6
8
  end
7
9
 
8
10
  def run(version_number, release_date)
9
- Codelog::Command::Step::Version.run version_number, release_date
11
+ outputter = Codelog::Output::ReleaseFile.new("#{RELEASES_PATH}/#{version_number}.md")
12
+ Codelog::Command::Step::Version.run version_number, release_date, outputter
10
13
  Codelog::Command::Step::Delete.run
11
14
  Codelog::Command::Step::Changelog.run
12
15
  puts "\n== Changelog updated to version #{version_number} =="
@@ -7,34 +7,45 @@ module Codelog
7
7
  module Step
8
8
  class Version
9
9
  include FileUtils
10
-
11
- RELEASES_PATH = 'changelogs/releases'.freeze
12
10
  UNRELEASED_LOGS_PATH = 'changelogs/unreleased'.freeze
13
11
  CONFIG_FILE_PATH = 'changelogs/codelog.yml'.freeze
12
+ RELEASES_PATH = 'changelogs/releases'.freeze
14
13
 
15
- def initialize(version, release_date)
14
+ def initialize(version, release_date, outputter)
16
15
  abort(Codelog::Message::Error.missing_config_file) unless config_file_exists?
17
16
  @version = version
18
17
  @release_date = Date.strptime(release_date, Codelog::Config.date_input_format).to_s
18
+ @outputter = outputter
19
19
  rescue ArgumentError
20
20
  abort(Codelog::Message::Error.invalid_date_format)
21
21
  end
22
22
 
23
- def self.run(version, release_date)
24
- Codelog::Command::Step::Version.new(version, release_date).run
23
+ def self.run(version, release_date, outputter)
24
+ Codelog::Command::Step::Version.new(version, release_date, outputter).run
25
25
  end
26
26
 
27
27
  def run
28
28
  abort(Codelog::Message::Error.missing_version_number) if @version.nil?
29
29
  abort(Codelog::Message::Error.already_existing_version(@version)) if version_exists?
30
30
  abort(Codelog::Message::Error.no_detected_changes(@version)) unless unreleased_changes?
31
- chdir Dir.pwd do
32
- create_version_changelog_from changes_hash
33
- end
31
+
32
+ @outputter.print generate_changelog_content_from(changes_hash)
34
33
  end
35
34
 
36
35
  private
37
36
 
37
+ def generate_changelog_content_from(changes_hash)
38
+ file_content = StringIO.new
39
+ file_content.puts "## #{Codelog::Config.version_tag(@version, @release_date)}"
40
+ changes_hash.each do |category, changes|
41
+ file_content.puts "### #{category}"
42
+ add_entry(file_content, changes)
43
+ file_content.puts "\n"
44
+ end
45
+ file_content.puts "---\n"
46
+ file_content.string
47
+ end
48
+
38
49
  def changes_hash
39
50
  change_files_paths = Dir["#{UNRELEASED_LOGS_PATH}/*.yml"]
40
51
  change_files_paths.inject({}) do |all_changes, change_file|
@@ -60,18 +71,6 @@ module Codelog
60
71
  end
61
72
  end
62
73
 
63
- def create_version_changelog_from(changes_hash)
64
- File.open("#{RELEASES_PATH}/#{@version}.md", 'a') do |line|
65
- line.puts "## #{Codelog::Config.version_tag(@version, @release_date)}"
66
- changes_hash.each do |category, changes|
67
- line.puts "### #{category}"
68
- add_entry(line, changes)
69
- line.puts "\n"
70
- end
71
- line.puts "---\n"
72
- end
73
- end
74
-
75
74
  def version_exists?
76
75
  File.file?("#{RELEASES_PATH}/#{@version}.md")
77
76
  end
@@ -0,0 +1,13 @@
1
+ module Codelog
2
+ module Output
3
+ class Log
4
+ def self.print(content)
5
+ new.print(content)
6
+ end
7
+
8
+ def print(content)
9
+ IO.popen('less', 'w') { |output| output.puts content }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ module Codelog
2
+ module Output
3
+ class ReleaseFile
4
+ def initialize(file_path)
5
+ @file_path = file_path
6
+ end
7
+
8
+ def self.print(content, file_path)
9
+ new(file_path).print(content)
10
+ end
11
+
12
+ def print(content)
13
+ Dir.chdir Dir.pwd do
14
+ File.open(@file_path, 'a') do |line|
15
+ line.puts content
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Codelog
2
- VERSION = '0.7.0'.freeze
2
+ VERSION = '0.8.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codelog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luís Bevilacqua
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2018-05-19 00:00:00.000000000 Z
15
+ date: 2018-07-23 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: thor
@@ -120,6 +120,7 @@ files:
120
120
  - lib/codelog/clis/interactive.rb
121
121
  - lib/codelog/command/bump.rb
122
122
  - lib/codelog/command/new.rb
123
+ - lib/codelog/command/preview.rb
123
124
  - lib/codelog/command/release.rb
124
125
  - lib/codelog/command/setup.rb
125
126
  - lib/codelog/command/step/changelog.rb
@@ -127,6 +128,8 @@ files:
127
128
  - lib/codelog/command/step/version.rb
128
129
  - lib/codelog/config.rb
129
130
  - lib/codelog/message.rb
131
+ - lib/codelog/output/log.rb
132
+ - lib/codelog/output/release_file.rb
130
133
  - lib/codelog/version.rb
131
134
  - lib/fixtures/codelog.yml
132
135
  - lib/fixtures/header.txt