From 0a4859b728688a0c92e380f3df382c6b56c5764b Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Thu, 15 Dec 2022 11:09:16 +0100 Subject: [PATCH 1/5] Technical/Update lefthook config (#62) --- .circleci/linter_configs/.lefthook.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/linter_configs/.lefthook.yml b/.circleci/linter_configs/.lefthook.yml index 8eb1581..ff36770 100644 --- a/.circleci/linter_configs/.lefthook.yml +++ b/.circleci/linter_configs/.lefthook.yml @@ -1,5 +1,6 @@ --- +no_tty: true skip_output: - meta From a6e6b9afcd1f3122f62b53c618a35032b69108f3 Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Fri, 6 Jan 2023 21:43:39 +0100 Subject: [PATCH 2/5] Technical/Add changelog linter (#63) * Added changelog linter * Updated lefthook config * Updated gem deploy flow (tagging new release on master merge commit) --- .circleci/config.yml | 4 ++++ .circleci/linter_configs/.lefthook.yml | 5 +++++ .circleci/scripts/changeloglint.sh | 22 ++++++++++++++++++++++ .circleci/scripts/release.sh | 3 +-- 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100755 .circleci/scripts/changeloglint.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 4553596..0cecff8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -98,6 +98,10 @@ jobs: name: Running code documentation linters command: lefthook run code-documentation-linters + - run: + name: Running release linters + command: lefthook run release-linters + tests-ruby: parameters: ruby-version: diff --git a/.circleci/linter_configs/.lefthook.yml b/.circleci/linter_configs/.lefthook.yml index ff36770..05407a5 100644 --- a/.circleci/linter_configs/.lefthook.yml +++ b/.circleci/linter_configs/.lefthook.yml @@ -32,3 +32,8 @@ code-documentation-linters: run: cspell-cli lint -c '.circleci/linter_configs/.cspell.yml' '**/*.{txt,md}' markdownlint: run: markdownlint -c '.circleci/linter_configs/.markdownlint.yml' '**/*.md' + +release-linters: + commands: + changeloglint: + run: .circleci/scripts/changeloglint.sh diff --git a/.circleci/scripts/changeloglint.sh b/.circleci/scripts/changeloglint.sh new file mode 100755 index 0000000..c80dc0c --- /dev/null +++ b/.circleci/scripts/changeloglint.sh @@ -0,0 +1,22 @@ +#!/bin/sh +set -e + +changelog=$(if [ "$1" = "" ]; then echo "CHANGELOG.md"; else echo "$1"; fi) + +get_current_gem_version() { + ruby -r rubygems -e "puts Gem::Specification::load('$(ls -- *.gemspec)').version" +} + +latest_changelog_tag() { + grep -Po "(?<=\#\# \[)[0-9]+\.[0-9]+\.[0-9]+?(?=\])" "$changelog" | head -n 1 +} + +current_gem_version="$(get_current_gem_version)" + +if [ "$current_gem_version" = "$(latest_changelog_tag)" ] +then + echo "SUCCESS: Current gem version ($current_gem_version) has been found on the top of project changelog." +else + echo "FAILURE: Following to \"Keep a Changelog\" convention current gem version ($current_gem_version) must be mentioned on the top of project changelog." + exit 1 +fi diff --git a/.circleci/scripts/release.sh b/.circleci/scripts/release.sh index 13c0de3..41b15a5 100755 --- a/.circleci/scripts/release.sh +++ b/.circleci/scripts/release.sh @@ -8,7 +8,7 @@ DELIMETER="_" PACKAGE_FILE="$FILE_NAME$DELIMETER$BUILD_ARCHITECTURE" gh_cli_latest_release() { - curl -sL -o /dev/null -w '%{url_effective}' "$GH_CLI_RELEASES_URL/latest" | rev | cut -f1 -d'/'| rev + curl -sL -o /dev/null -w '%{url_effective}' "$GH_CLI_RELEASES_URL/latest" | rev | cut -f 1 -d '/'| rev } download_gh_cli() { @@ -42,7 +42,6 @@ release_to_rubygems() { git config --global user.email "${PUBLISHER_EMAIL}" git config --global user.name "${PUBLISHER_NAME}" git stash - git checkout develop gem install yard gem-ctags bundle install echo "Publishing new gem release to RubyGems..." From 44910ac6ee5cf63861f9d1f4d9ea13bef9af0aab Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Sun, 8 Jan 2023 18:55:03 +0100 Subject: [PATCH 3/5] Technical/Update development dependencies (#64) * Updated development dependencies * Updated codeclimate config * Updated project license --- .circleci/gemspecs/latest | 10 +++++----- .codeclimate.yml | 2 +- LICENSE.txt | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.circleci/gemspecs/latest b/.circleci/gemspecs/latest index 3e6e889..2b824d6 100644 --- a/.circleci/gemspecs/latest +++ b/.circleci/gemspecs/latest @@ -25,10 +25,10 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'net-smtp', '~> 0.3.3' spec.add_development_dependency 'pry-byebug', '~> 3.10', '>= 3.10.1' spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6' - spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.1' + spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.3' spec.add_development_dependency 'rspec', '~> 3.12' - spec.add_development_dependency 'rubocop', '~> 1.40' - spec.add_development_dependency 'rubocop-performance', '~> 1.15', '>= 1.15.1' - spec.add_development_dependency 'rubocop-rspec', '~> 2.15' - spec.add_development_dependency 'simplecov', '~> 0.21.2' + spec.add_development_dependency 'rubocop', '~> 1.42' + spec.add_development_dependency 'rubocop-performance', '~> 1.15', '>= 1.15.2' + spec.add_development_dependency 'rubocop-rspec', '~> 2.16' + spec.add_development_dependency 'simplecov', '~> 0.22.0' end diff --git a/.codeclimate.yml b/.codeclimate.yml index db21ad1..efdbcc3 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -9,7 +9,7 @@ checks: plugins: rubocop: enabled: true - channel: rubocop-1-39 + channel: rubocop-1-42 config: file: .circleci/linter_configs/.rubocop.yml diff --git a/LICENSE.txt b/LICENSE.txt index d630804..3f666e2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2022 Vladislav Trotsenko +Copyright (c) 2022-2023 Vladislav Trotsenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From b6794474a2642ef3e126a234f95250fb96b298f6 Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Tue, 10 Jan 2023 09:38:55 +0100 Subject: [PATCH 4/5] Technical/Update Ruby version (#65) * Updated Ruby version to 3.2 for tests/linters * Updated compatible gemspec * Updated pry/simplecov configs * Updated CircleCI config --- .circleci/config.yml | 6 +++--- .circleci/gemspecs/compatible | 4 +++- smtp_mock.gemspec | 4 +--- spec/support/config/pry.rb | 2 +- spec/support/config/simplecov.rb | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0cecff8..6b58974 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -187,15 +187,15 @@ workflows: - linters-ruby: matrix: parameters: - ruby-version: ["3.1-node"] + ruby-version: ["3.2-node"] - tests-ruby: matrix: parameters: - ruby-version: ["3.1"] + ruby-version: ["3.2"] - compatibility-ruby: matrix: parameters: - ruby-version: ["2.5", "2.6", "2.7", "3.0"] + ruby-version: ["2.5", "2.6", "2.7", "3.0", "3.1"] - releasing-gem-from-ruby: requires: - linters-ruby diff --git a/.circleci/gemspecs/compatible b/.circleci/gemspecs/compatible index 9ed6c8d..0af783e 100644 --- a/.circleci/gemspecs/compatible +++ b/.circleci/gemspecs/compatible @@ -12,7 +12,8 @@ Gem::Specification.new do |spec| spec.homepage = 'https://github.com/mocktools/ruby-smtp-mock' spec.license = 'MIT' - dry_struct_version = ::Gem::Version.new(::RUBY_VERSION) >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4' + current_ruby_version = ::Gem::Version.new(::RUBY_VERSION) + dry_struct_version = current_ruby_version >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4' spec.required_ruby_version = '>= 2.5.0' spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } @@ -22,6 +23,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'dry-struct', dry_struct_version spec.add_development_dependency 'ffaker' + spec.add_development_dependency 'net-smtp' if current_ruby_version >= ::Gem::Version.new('3.1.0') spec.add_development_dependency 'rake' spec.add_development_dependency 'rspec' end diff --git a/smtp_mock.gemspec b/smtp_mock.gemspec index 523d388..dfd0a3e 100644 --- a/smtp_mock.gemspec +++ b/smtp_mock.gemspec @@ -22,8 +22,7 @@ Gem::Specification.new do |spec| 'bug_tracker_uri' => 'https://github.com/mocktools/ruby-smtp-mock/issues' } - current_ruby_version = ::Gem::Version.new(::RUBY_VERSION) - dry_struct_version = current_ruby_version >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4' + dry_struct_version = ::Gem::Version.new(::RUBY_VERSION) >= ::Gem::Version.new('2.7.0') ? '~> 1.6' : '~> 1.4' spec.required_ruby_version = '>= 2.5.0' spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(bin|lib|tmp)/|.ruby-version|smtp_mock.gemspec|LICENSE}) } @@ -34,7 +33,6 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'dry-struct', dry_struct_version spec.add_development_dependency 'ffaker', '~> 2.21' - spec.add_development_dependency 'net-smtp', '~> 0.3.3' if current_ruby_version >= ::Gem::Version.new('3.1.0') spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6' spec.add_development_dependency 'rspec', '~> 3.12' end diff --git a/spec/support/config/pry.rb b/spec/support/config/pry.rb index 6e100a4..b87e55c 100644 --- a/spec/support/config/pry.rb +++ b/spec/support/config/pry.rb @@ -1,3 +1,3 @@ # frozen_string_literal: true -require 'pry' if ::RUBY_VERSION[/\A3\.1.+\z/] +require 'pry' if ::RUBY_VERSION[/\A3\.2.+\z/] diff --git a/spec/support/config/simplecov.rb b/spec/support/config/simplecov.rb index ce0ffc1..ce52101 100644 --- a/spec/support/config/simplecov.rb +++ b/spec/support/config/simplecov.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -if ::RUBY_VERSION[/\A3\.1.+\z/] +if ::RUBY_VERSION[/\A3\.2.+\z/] require 'simplecov' SimpleCov.minimum_coverage(100) From c9e5bc2fdf367810d2eacc25466d5585b2d52646 Mon Sep 17 00:00:00 2001 From: Vladislav Trotsenko Date: Tue, 10 Jan 2023 10:01:30 +0100 Subject: [PATCH 5/5] Technical/Update changelog, gem version (#66) * Updated gem version * Updated changelog --- CHANGELOG.md | 14 ++++++++++++++ lib/smtp_mock/version.rb | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7543ad3..a86a902 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.3.3] - 2023-01-10 + +### Added + +- Added and tested Ruby 3.2.x support +- Added `changeloglint` + +### Updated + +- Updated `CircleCI` config +- Updated `lefthook`/`codeclimate`/`simplecov`/`pry` configs +- Updated gem deploy flow (tagging new release on master merge commit) +- Updated gem version, license + ## [1.3.2] - 2022-12-12 ### Added diff --git a/lib/smtp_mock/version.rb b/lib/smtp_mock/version.rb index 197f726..c1183fb 100644 --- a/lib/smtp_mock/version.rb +++ b/lib/smtp_mock/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module SmtpMock - VERSION = '1.3.2' + VERSION = '1.3.3' end