semvergen 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 75dcf2a58c9a2a6c241045ee8c51f139d2b073d7
4
+ data.tar.gz: 24463c3cd30605cc1a2d7e4ee823136f6cd0b400
5
+ SHA512:
6
+ metadata.gz: 5c25bf3934540a29dddd0c4eb435ed61f21888393ccc47a61a43f98a4c2984448dd307ca79a780ff54ea854673f37bcb376e98c0a3773e3bc4ef7a0020dea3fa
7
+ data.tar.gz: aad011f3c0c6db0df085a933cd8c29aaf8acc9388cf0c47e820b793b1019d4fb854c152683fb5a9e732f64bae7ecaebc101e637fcc849068f897a28c838e1f1b
data/.gitignore ADDED
@@ -0,0 +1,37 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+ .idea
12
+
13
+ ## Specific to RubyMotion:
14
+ .dat*
15
+ .repl_history
16
+ build/
17
+
18
+ ## Documentation cache and generated files:
19
+ /.yardoc/
20
+ /_yardoc/
21
+ /doc/
22
+ /rdoc/
23
+
24
+ ## Environment normalisation:
25
+ /.bundle/
26
+ /lib/bundler/man/
27
+
28
+ # for a library or gem, you might want to ignore these files since the code is
29
+ # intended to run in multiple environments; otherwise, check them in:
30
+ # Gemfile.lock
31
+ # .ruby-version
32
+ # .ruby-gemset
33
+
34
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
+ .rvmrc
36
+
37
+ .gem_server
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ semvergen
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1.0
data/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ # 1.0.0
4
+ * Bump to version 1
5
+
6
+
7
+ # 0.2.1
8
+ * Bumping to version 1
9
+
10
+
11
+ # 0.2.0
12
+ * New user interface
13
+
14
+
15
+ # 0.1.0
16
+ * Creating changelog file (aka eat dog food)
17
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in semvergen.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,86 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ semvergen (0.1.0)
5
+ geminabox
6
+ highline (~> 1.6)
7
+ thor (~> 0.14)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ builder (3.2.2)
13
+ celluloid (0.15.2)
14
+ timers (~> 1.1.0)
15
+ coderay (1.1.0)
16
+ diff-lcs (1.2.5)
17
+ faraday (0.9.0)
18
+ multipart-post (>= 1.2, < 3)
19
+ ffi (1.9.3)
20
+ formatador (0.2.5)
21
+ geminabox (0.12.4)
22
+ builder
23
+ faraday
24
+ httpclient (>= 2.2.7)
25
+ nesty
26
+ sinatra (>= 1.2.7)
27
+ guard (2.6.1)
28
+ formatador (>= 0.2.4)
29
+ listen (~> 2.7)
30
+ lumberjack (~> 1.0)
31
+ pry (>= 0.9.12)
32
+ thor (>= 0.18.1)
33
+ guard-rspec (4.2.10)
34
+ guard (~> 2.1)
35
+ rspec (>= 2.14, < 4.0)
36
+ highline (1.6.21)
37
+ httpclient (2.4.0)
38
+ listen (2.7.9)
39
+ celluloid (>= 0.15.2)
40
+ rb-fsevent (>= 0.9.3)
41
+ rb-inotify (>= 0.9)
42
+ lumberjack (1.0.9)
43
+ method_source (0.8.2)
44
+ multipart-post (2.0.0)
45
+ nesty (1.0.2)
46
+ pry (0.10.0)
47
+ coderay (~> 1.1.0)
48
+ method_source (~> 0.8.1)
49
+ slop (~> 3.4)
50
+ rack (1.5.2)
51
+ rack-protection (1.5.3)
52
+ rack
53
+ rake (10.3.2)
54
+ rb-fsevent (0.9.4)
55
+ rb-inotify (0.9.5)
56
+ ffi (>= 0.5.0)
57
+ rspec (3.0.0)
58
+ rspec-core (~> 3.0.0)
59
+ rspec-expectations (~> 3.0.0)
60
+ rspec-mocks (~> 3.0.0)
61
+ rspec-core (3.0.2)
62
+ rspec-support (~> 3.0.0)
63
+ rspec-expectations (3.0.2)
64
+ diff-lcs (>= 1.2.0, < 2.0)
65
+ rspec-support (~> 3.0.0)
66
+ rspec-mocks (3.0.2)
67
+ rspec-support (~> 3.0.0)
68
+ rspec-support (3.0.2)
69
+ sinatra (1.4.5)
70
+ rack (~> 1.4)
71
+ rack-protection (~> 1.4)
72
+ tilt (~> 1.3, >= 1.3.4)
73
+ slop (3.5.0)
74
+ thor (0.19.1)
75
+ tilt (1.4.1)
76
+ timers (1.1.0)
77
+
78
+ PLATFORMS
79
+ ruby
80
+
81
+ DEPENDENCIES
82
+ bundler (~> 1.6)
83
+ guard-rspec (~> 4.0)
84
+ rake (~> 10.1)
85
+ rspec (~> 3.0)
86
+ semvergen!
data/Guardfile ADDED
@@ -0,0 +1,8 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :rspec do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Brendon McLean
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 all
13
+ 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 THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ Semvergen
2
+ =========
3
+
4
+ Interactive semantic version and gem publishing
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/semvergen ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.push File.expand_path("../../lib", __FILE__)
4
+
5
+ require 'thor'
6
+ require 'semvergen'
7
+
8
+ class SemvergenCLI < Thor
9
+
10
+ desc "bump", "Bump the version of this gem"
11
+ option :ignore_dirty, type: :boolean, banner: "Skip the git-index-dirty check"
12
+ def bump
13
+ Semvergen.bump!(options)
14
+ end
15
+
16
+ desc "publish", "Publish the gem to your gem server"
17
+ def release
18
+ Semvergen.release!(options)
19
+ end
20
+
21
+ end
22
+
23
+ SemvergenCLI.start(ARGV)
@@ -0,0 +1,134 @@
1
+ module Semvergen
2
+
3
+ class Bump
4
+
5
+ extend Forwardable
6
+
7
+ PATCH = "Patch: Bug fixes, recommended for all (default)"
8
+ MINOR = "Minor: New features, but backwards compatible"
9
+ MAJOR = "Major: Breaking changes"
10
+
11
+ RELEASE_TYPES = [
12
+ PATCH,
13
+ MINOR,
14
+ MAJOR
15
+ ]
16
+
17
+ def_delegators :@interface, :say, :ask, :color, :choose, :newline, :agree
18
+
19
+ def initialize(interface, version_file, change_log_file, shell)
20
+ @interface = interface
21
+ @version_file = version_file
22
+ @change_log_file = change_log_file
23
+ @shell = shell
24
+ end
25
+
26
+ def run!(options)
27
+ if @shell.git_index_dirty? && !options[:ignore_dirty]
28
+ say color("Git index dirty. Commit changes before continuing", :red, :bold)
29
+ else
30
+ say color("Cut new Quattro Release", :white, :underline, :bold)
31
+
32
+ newline
33
+
34
+ release_type = choose do |menu|
35
+ menu.header = "Select release type"
36
+ menu.default = "1"
37
+ menu.select_by = :index
38
+ menu.choices *RELEASE_TYPES
39
+ end
40
+
41
+ new_version = next_version(@version_file.version, release_type)
42
+
43
+ newline
44
+
45
+ say "Current version: #{color(@version_file.version, :bold)}"
46
+ say "Bumped version : #{color(new_version, :bold, :green)}"
47
+
48
+ newline
49
+
50
+ say "Enter change log features (or a blank line to finish):"
51
+
52
+ features = []
53
+
54
+ while true
55
+ response = ask "* " do |q|
56
+ q.validate = lambda { |answer| features.size > 0 || answer.length > 0 }
57
+ q.responses[:not_valid] = color("Enter at least one feature", :red)
58
+ q.responses[:invalid_type] = color("Enter at least one feature", :red)
59
+ q.responses[:ask_on_error] = "* "
60
+ end
61
+
62
+ if response.length == 0
63
+ features << "\n"
64
+ break
65
+ else
66
+ features << "* #{response}"
67
+ end
68
+ end
69
+
70
+ change_log_lines = ["# #{new_version}"] + features
71
+ change_log_message = change_log_lines.join("\n")
72
+ diff_change_log = change_log_lines.map { |l| color("+++ ", :white) + color(l, :green) }.join("\n")
73
+
74
+ newline
75
+
76
+ say color("Will add the following to CHANGELOG.md", :underline)
77
+ say color(diff_change_log)
78
+
79
+ commit_message = ask("Git commit subject line: ") do |q|
80
+ q.validate = /.{10,}/
81
+ q.responses[:not_valid] = color("Message must be more than 10 chars", :red)
82
+ q.responses[:invalid_type] = color("Message must be more than 10 chars", :red)
83
+ end
84
+
85
+ newline
86
+
87
+ say color("Summary of actions:", :underline, :green, :red)
88
+ newline
89
+
90
+ say "Bumping version: #{color(@version_file.version, :yellow)} -> #{color(new_version, :green)}"
91
+ newline
92
+
93
+ say "Adding features to CHANGELOG.md:"
94
+ say color(diff_change_log, :green)
95
+
96
+ say "Staging files for commit:"
97
+ say color("* lib/quattro/version.rb", :green)
98
+ say color("* CHANGELOG.md", :green)
99
+ newline
100
+
101
+ say "Committing with message: #{color(commit_message, :green)}"
102
+ newline
103
+
104
+ if agree("Proceed? ")
105
+ @version_file.version = new_version
106
+
107
+ @change_log_file << change_log_message
108
+
109
+ @shell.commit(@version_file.path, new_version, commit_message, features)
110
+
111
+ newline
112
+
113
+ say color("To release, use semvergen release", :bold, :green)
114
+ end
115
+ end
116
+ end
117
+
118
+ def next_version(current_version, release_type)
119
+ version_tuples = current_version.split(".")
120
+
121
+ release_index = 2 - RELEASE_TYPES.index(release_type)
122
+
123
+ bumping = version_tuples[release_index]
124
+ unchanged = version_tuples[0...release_index]
125
+ zeroing = version_tuples[(release_index + 1)..-1]
126
+
127
+ new_version_tuples = unchanged + [bumping.to_i + 1] + (["0"] * zeroing.size)
128
+
129
+ new_version_tuples.join(".")
130
+ end
131
+
132
+ end
133
+
134
+ end
@@ -0,0 +1,19 @@
1
+ module Semvergen
2
+
3
+ class ChangeLogFile
4
+
5
+ def <<(message)
6
+ current_change_log = File.exist?(change_log_file) ? File.read(change_log_file) : ""
7
+ new_change_log = "# Changelog\n\n#{message}" + current_change_log.gsub("# Changelog\n", "")
8
+ File.open(change_log_file, "w") { |f| f.write new_change_log }
9
+ end
10
+
11
+ private
12
+
13
+ def change_log_file
14
+ File.join("CHANGELOG.md")
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,15 @@
1
+ require 'highline/import'
2
+
3
+
4
+ module Semvergen
5
+
6
+ class Interface < HighLine
7
+
8
+ def fail_exit(message)
9
+ say color(message, :red)
10
+ exit 1
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,61 @@
1
+ module Semvergen
2
+
3
+ class Launcher
4
+
5
+ def bump!(options={})
6
+ Semvergen::Bump.new(interface, version_file, change_log_file, shell).run!(options)
7
+ end
8
+
9
+ def release!(options={})
10
+ Semvergen::Release.new(interface, gem_name, gem_server, shell, version_file).run!(options)
11
+ end
12
+
13
+ private
14
+
15
+ def version_file
16
+ VersionFile.new(File.open(version_path, "r+"))
17
+ end
18
+
19
+ def change_log_file
20
+ ChangeLogFile.new
21
+ end
22
+
23
+ def shell
24
+ Shell.new
25
+ end
26
+
27
+ def version_path
28
+ File.join("lib", gem_name, "version.rb")
29
+ end
30
+
31
+ def gem_name
32
+ File.basename(gem_spec).gsub(".gemspec", "")
33
+ end
34
+
35
+ def interface
36
+ @interface ||= Interface.new
37
+ end
38
+
39
+ def gem_spec
40
+ gemspecs = Dir["*.gemspec"]
41
+ interface.fail_exit("No gemspec found in current dir") if gemspecs.count == 0
42
+ interface.fail_exit("More than one gemspec found in current dir") if gemspecs.count > 1
43
+
44
+ gemspecs[0]
45
+ end
46
+
47
+ def gem_server
48
+ if File.exists?(gem_server_file)
49
+ File.read(gem_server_file)
50
+ else
51
+ interface.fail_exit "To publish, place the url (with optional username and pass) in a .gem_server file"
52
+ end
53
+ end
54
+
55
+ def gem_server_file
56
+ File.join(".gem_server")
57
+ end
58
+
59
+ end
60
+
61
+ end
@@ -0,0 +1,31 @@
1
+ module Semvergen
2
+
3
+ class Release
4
+
5
+ extend Forwardable
6
+
7
+ def_delegators :@interface, :say, :ask, :color, :choose, :newline, :agree
8
+
9
+ def initialize(interface, gem_name, gem_server, shell, version_file)
10
+ @interface = interface
11
+ @gem_name = gem_name
12
+ @gem_server = gem_server
13
+ @shell = shell
14
+ @version_file = version_file
15
+ end
16
+
17
+ def run!(options)
18
+ say "Found gemspec: #{color(@gem_name, :green)}"
19
+ newline
20
+
21
+ say color("Building gem: ")
22
+ @shell.build_gem(@gem_name)
23
+ say color("OK", :green, :bold)
24
+
25
+ say color("Publishing: ")
26
+ @shell.publish(@gem_name, @version_file.version, @gem_server)
27
+ say color("OK", :green, :bold)
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,49 @@
1
+ module Semvergen
2
+
3
+ class Shell
4
+
5
+ def initialize(execute_function = method(:system_exec).to_proc)
6
+ @execute_function = execute_function
7
+ end
8
+
9
+ def git_index_dirty?
10
+ execute("git status --porcelain") =~ /^\s*(D|M|A|R|C)\s/
11
+ end
12
+
13
+ def commit(version_path, new_version, commit_subject, features)
14
+ commit_body = COMMIT_MESSAGE % [new_version, commit_subject, features.join("\n")]
15
+
16
+ execute "git add CHANGELOG.md"
17
+ execute "git add #{version_path}"
18
+ execute %Q[git commit -m "#{commit_body}"]
19
+ end
20
+
21
+ def build_gem(gem_name)
22
+ execute "gem build #{gem_name}.gemspec --force"
23
+ end
24
+
25
+ def publish(gem_name, version, gem_server)
26
+ execute "gem inabox #{gem_name}-#{version}.gem --host #{gem_server}"
27
+ end
28
+
29
+ private
30
+
31
+ def execute(command)
32
+ @execute_function[command]
33
+ end
34
+
35
+ def system_exec(command)
36
+ result = `#{command}`
37
+ raise if $?.exitstatus > 0
38
+ result
39
+ end
40
+
41
+ COMMIT_MESSAGE = <<-STR
42
+ Version %s: %s
43
+
44
+ %s
45
+ STR
46
+
47
+ end
48
+
49
+ end
@@ -0,0 +1,3 @@
1
+ module Semvergen
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,41 @@
1
+ module Semvergen
2
+
3
+ class VersionFile
4
+
5
+ def initialize(file)
6
+ @file = file
7
+ end
8
+
9
+ def version
10
+ if file.read =~ /VERSION = "(\d+\.\d+\.\d+)"/
11
+ $1
12
+ else
13
+ raise "Don't understand version"
14
+ end
15
+ end
16
+
17
+ def version=(new_version)
18
+ content = file.read.gsub(/VERSION.*$/, %Q[VERSION = "#{new_version}"])
19
+ file.truncate(0)
20
+ file.write content
21
+ file.flush
22
+ end
23
+
24
+ def file
25
+ @file.rewind
26
+ @file
27
+ end
28
+
29
+ def path
30
+ @file.path
31
+ end
32
+
33
+ VERSION_TEMPLATE = <<-RUBY
34
+ module Quattro
35
+ VERSION = "%s"
36
+ end
37
+ RUBY
38
+
39
+ end
40
+
41
+ end
data/lib/semvergen.rb ADDED
@@ -0,0 +1,27 @@
1
+ require "semvergen/version"
2
+
3
+ require "semvergen/launcher"
4
+ require "semvergen/interface"
5
+ require "semvergen/bump"
6
+ require "semvergen/release"
7
+ require "semvergen/change_log_file"
8
+ require "semvergen/shell"
9
+ require "semvergen/version_file"
10
+
11
+ module Semvergen
12
+
13
+ def self.bump!(options)
14
+ launcher.bump!(options)
15
+ end
16
+
17
+ def self.release!(options)
18
+ launcher.release!(options)
19
+ end
20
+
21
+ private
22
+
23
+ def self.launcher
24
+ Semvergen::Launcher.new
25
+ end
26
+
27
+ end
data/semvergen.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'semvergen/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "semvergen"
8
+ spec.version = Semvergen::VERSION
9
+ spec.authors = ["Brendon McLean"]
10
+ spec.email = ["brendon@intellectionsoftware.com"]
11
+ spec.summary = "Interactive semantic version and gem publishing"
12
+ spec.homepage = "https://github.com/brendon9x/semvergen"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_runtime_dependency "highline", "~> 1.6"
21
+ spec.add_runtime_dependency "thor", "~> 0.14"
22
+ spec.add_runtime_dependency "geminabox"
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.6"
25
+ spec.add_development_dependency "rake", "~> 10.1"
26
+ spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_development_dependency "guard-rspec", "~> 4.0"
28
+ end
@@ -0,0 +1,25 @@
1
+ describe Semvergen::Bump do
2
+ let(:semvergen) { Semvergen::Bump.new nil, nil, nil, nil }
3
+
4
+ describe :next_version do
5
+ let(:next_version) { semvergen.next_version current_version, release_type }
6
+ let(:current_version) { "3.2.19" }
7
+
8
+ context "when bumping a major version" do
9
+ let(:release_type) { Semvergen::Bump::MAJOR }
10
+ it { expect(next_version).to eq "4.0.0" }
11
+ end
12
+
13
+ context "when bumping a minor version" do
14
+ let(:release_type) { Semvergen::Bump::MINOR }
15
+ it { expect(next_version).to eq "3.3.0" }
16
+ end
17
+
18
+ context "when bumping a patch version" do
19
+ let(:release_type) { Semvergen::Bump::PATCH }
20
+ it { expect(next_version).to eq "3.2.20" }
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Semvergen::Shell do
4
+
5
+ let :shell do
6
+ Semvergen::Shell.new(command_map)
7
+ end
8
+
9
+ describe :git_index_dirty? do
10
+
11
+ let :with_added do
12
+ <<-STR
13
+ M file_a
14
+ A file_b
15
+ AM file_c
16
+ ?? file_d
17
+ STR
18
+ end
19
+
20
+ let :with_only_changed do
21
+ <<-STR
22
+ ?? file_x
23
+ STR
24
+ end
25
+
26
+ it "returns true when index dirty" do
27
+ expect(Semvergen::Shell.new("git status --porcelain" => with_added).git_index_dirty?).to be_truthy
28
+ expect(Semvergen::Shell.new("git status --porcelain" => with_only_changed).git_index_dirty?).to be_falsey
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,81 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
4
+ # file to always be loaded, without a need to explicitly require it in any files.
5
+ #
6
+ # Given that it is always loaded, you are encouraged to keep this file as
7
+ # light-weight as possible. Requiring heavyweight dependencies from this file
8
+ # will add to the boot time of your test suite on EVERY test run, even for an
9
+ # individual file that may not need all of that loaded. Instead, make a
10
+ # separate helper file that requires this one and then use it only in the specs
11
+ # that actually need it.
12
+ #
13
+ # The `.rspec` file also contains a few flags that are not defaults but that
14
+ # users commonly want.
15
+ #
16
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
+
18
+ require 'semvergen'
19
+
20
+ RSpec.configure do |config|
21
+ # The settings below are suggested to provide a good initial experience
22
+ # with RSpec, but feel free to customize to your heart's content.
23
+ =begin
24
+ # These two settings work together to allow you to limit a spec run
25
+ # to individual examples or groups you care about by tagging them with
26
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
27
+ # get run.
28
+ config.filter_run :focus
29
+ config.run_all_when_everything_filtered = true
30
+
31
+ # Many RSpec users commonly either run the entire suite or an individual
32
+ # file, and it's useful to allow more verbose output when running an
33
+ # individual spec file.
34
+ if config.files_to_run.one?
35
+ # Use the documentation formatter for detailed output,
36
+ # unless a formatter has already been configured
37
+ # (e.g. via a command-line flag).
38
+ config.default_formatter = 'doc'
39
+ end
40
+
41
+ # Print the 10 slowest examples and example groups at the
42
+ # end of the spec run, to help surface which specs are running
43
+ # particularly slow.
44
+ config.profile_examples = 10
45
+
46
+ # Run specs in random order to surface order dependencies. If you find an
47
+ # order dependency and want to debug it, you can fix the order by providing
48
+ # the seed, which is printed after each run.
49
+ # --seed 1234
50
+ config.order = :random
51
+
52
+ # Seed global randomization in this process using the `--seed` CLI option.
53
+ # Setting this allows you to use `--seed` to deterministically reproduce
54
+ # test failures related to randomization by passing the same `--seed` value
55
+ # as the one that triggered the failure.
56
+ Kernel.srand config.seed
57
+
58
+ # rspec-expectations config goes here. You can use an alternate
59
+ # assertion/expectation library such as wrong or the stdlib/minitest
60
+ # assertions if you prefer.
61
+ config.expect_with :rspec do |expectations|
62
+ # Enable only the newer, non-monkey-patching expect syntax.
63
+ # For more details, see:
64
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
65
+ expectations.syntax = :expect
66
+ end
67
+
68
+ # rspec-mocks config goes here. You can use an alternate test double
69
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
70
+ config.mock_with :rspec do |mocks|
71
+ # Enable only the newer, non-monkey-patching expect syntax.
72
+ # For more details, see:
73
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
74
+ mocks.syntax = :expect
75
+
76
+ # Prevents you from mocking or stubbing a method that does not exist on
77
+ # a real object. This is generally recommended.
78
+ mocks.verify_partial_doubles = true
79
+ end
80
+ =end
81
+ end
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: semvergen
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Brendon McLean
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: highline
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.14'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: geminabox
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.0'
111
+ description:
112
+ email:
113
+ - brendon@intellectionsoftware.com
114
+ executables:
115
+ - semvergen
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - ".rspec"
121
+ - ".ruby-gemset"
122
+ - ".ruby-version"
123
+ - CHANGELOG.md
124
+ - Gemfile
125
+ - Gemfile.lock
126
+ - Guardfile
127
+ - LICENSE
128
+ - README.md
129
+ - Rakefile
130
+ - bin/semvergen
131
+ - lib/semvergen.rb
132
+ - lib/semvergen/bump.rb
133
+ - lib/semvergen/change_log_file.rb
134
+ - lib/semvergen/interface.rb
135
+ - lib/semvergen/launcher.rb
136
+ - lib/semvergen/release.rb
137
+ - lib/semvergen/shell.rb
138
+ - lib/semvergen/version.rb
139
+ - lib/semvergen/version_file.rb
140
+ - semvergen.gemspec
141
+ - spec/semvergen/bump_spec.rb
142
+ - spec/semvergen/shell_spec.rb
143
+ - spec/spec_helper.rb
144
+ homepage: https://github.com/brendon9x/semvergen
145
+ licenses:
146
+ - MIT
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.2.2
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: Interactive semantic version and gem publishing
168
+ test_files:
169
+ - spec/semvergen/bump_spec.rb
170
+ - spec/semvergen/shell_spec.rb
171
+ - spec/spec_helper.rb