tcravit_ruby_lib 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tcravit_ruby_lib.rb +2 -2
- data/lib/tcravit_ruby_lib/app_banner.rb +46 -3
- data/lib/tcravit_ruby_lib/app_config.rb +42 -7
- data/lib/tcravit_ruby_lib/config_searcher.rb +2 -8
- data/lib/tcravit_ruby_lib/configurable.rb +2 -0
- data/lib/tcravit_ruby_lib/rake_tasks.rb +5 -0
- data/lib/tcravit_ruby_lib/tasks/bump_ver.rake +11 -12
- data/lib/tcravit_ruby_lib/utility.rb +14 -0
- data/lib/tcravit_ruby_lib/version.rb +1 -1
- data/spec/version_bump_rake_tasks_spec.rb +93 -76
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99beb5b023dc1d79ac40040e472823a0c930a60c9675fc7915efa3fd9be6c4b5
|
4
|
+
data.tar.gz: 5c663f58eb23d5530476bbdf3d7551f4fe36b01649f5063047b55f2f4acc2e9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f80ddab2f052a5042fd3ee8be67d00d71010611e7ca4e3b04e686d8fad808f886ff9a8be0f6e1fe4f8bcc59260ff16a4a687505668743d3db96529c7d427761d
|
7
|
+
data.tar.gz: 41012afc7344c3fbf42fdb1d8d3d0e6ddf751b23da64e7c431a81fd5103dfd24dda7c9b4f7d4a778c1995a08b5a2eed2afe6a3941dad851c24321a2cf19261c4
|
data/lib/tcravit_ruby_lib.rb
CHANGED
@@ -24,8 +24,8 @@ $:.unshift File.dirname(__FILE__)
|
|
24
24
|
# Make sure we load the version definitions first
|
25
25
|
require "tcravit_ruby_lib/version"
|
26
26
|
|
27
|
-
Dir[File.join(File.dirname(__FILE__), "tcravit_ruby_lib", "*.rb")].each do |f|
|
28
|
-
require File.join("tcravit_ruby_lib", File.basename(f))
|
27
|
+
Dir[File.join(File.dirname(__FILE__), "tcravit_ruby_lib", "*.rb")].reject { |x| File.basename(x) == "version.rb" }.each do |f|
|
28
|
+
require File.join("tcravit_ruby_lib", File.basename(f))
|
29
29
|
end
|
30
30
|
|
31
31
|
module TcravitRubyLib # :nodoc:
|
@@ -20,8 +20,50 @@
|
|
20
20
|
# limitations under the License.
|
21
21
|
############################################################################
|
22
22
|
|
23
|
-
module TcravitRubyLib
|
24
|
-
|
23
|
+
module TcravitRubyLib #-nodoc-#
|
24
|
+
|
25
|
+
extend self
|
26
|
+
|
27
|
+
##
|
28
|
+
# Generate an app startup banner for a command-line application.
|
29
|
+
#
|
30
|
+
# == Banner Formatting
|
31
|
+
#
|
32
|
+
# The app banner will be framed with asterisks. By default, it will be 76
|
33
|
+
# characters long, though this can be overridden by passing in a value for
|
34
|
+
# +line_length+.
|
35
|
+
#
|
36
|
+
# If a +description+ is included, the first text line of the banner will
|
37
|
+
# take the form "name: description"; otherwise, just the name will be
|
38
|
+
# output. This line will be centered, with whitespace added to the ends to
|
39
|
+
# make the asterisks line up. Otherwise, just the app name will be output.
|
40
|
+
#
|
41
|
+
# If any of +version+, +date+, and/or +author+ are supplied, these will be
|
42
|
+
# joined (in that order) by commas, and a second centered line of text
|
43
|
+
# containing those components will be output. If none are supplied, no
|
44
|
+
# second line will be output.
|
45
|
+
#
|
46
|
+
# == Arguments
|
47
|
+
#
|
48
|
+
# For flexibility, parameters are all passed in a hash. The method accepts
|
49
|
+
# the following options:
|
50
|
+
#
|
51
|
+
# * `:name` - The name of the application. Required.
|
52
|
+
# * `:description` - A brief description of the application. Optional.
|
53
|
+
# * `:version`
|
54
|
+
# * `:date`
|
55
|
+
# * `:author`
|
56
|
+
# * `:line_length`
|
57
|
+
#
|
58
|
+
# The only required option is +name+, and an ArgumentError will be raised
|
59
|
+
# if it is not supplied. All other options are optional, and the method
|
60
|
+
# will simply use whichever ones are supplied to generate the banner.
|
61
|
+
#
|
62
|
+
# For examples, see the RSpec tests for this method.
|
63
|
+
#
|
64
|
+
# @param opts [Hash] A hash of options.
|
65
|
+
# @return [String] The app banner, ready to print out
|
66
|
+
def Banner(opts={})
|
25
67
|
raise ArgumentError, "Name not provided" unless opts.keys.include?("name".to_sym)
|
26
68
|
|
27
69
|
line_length = 76
|
@@ -55,7 +97,8 @@ module TcravitRubyLib #-nodoc-#
|
|
55
97
|
return lines.join("\n")
|
56
98
|
end
|
57
99
|
|
58
|
-
|
100
|
+
private
|
101
|
+
def asterisk_pad(data, length=76)
|
59
102
|
buf = "* " + (" " * (((length-4) - data.length) / 2)) + data
|
60
103
|
buf = buf + (" " * ((length-2) - buf.length)) + " *"
|
61
104
|
return buf
|
@@ -21,7 +21,8 @@
|
|
21
21
|
|
22
22
|
module TcravitRubyLib #:nodoc:
|
23
23
|
|
24
|
-
|
24
|
+
##
|
25
|
+
## Simple and Flexible Configuration Data Storage.
|
25
26
|
#
|
26
27
|
# AppConfig provides a simple facility for storing configuration data in
|
27
28
|
# an application. It does this using metaprogramming techniques to define
|
@@ -44,7 +45,28 @@ module TcravitRubyLib #:nodoc:
|
|
44
45
|
|
45
46
|
module AppConfig
|
46
47
|
extend self
|
47
|
-
|
48
|
+
|
49
|
+
##
|
50
|
+
# Configure the settings.
|
51
|
+
#
|
52
|
+
# +configure+ accepts a block which is evaluated by `instance_eval`.
|
53
|
+
# Method calls inside this block are turned into app settings via
|
54
|
+
# {#method_missing}, which dynamically creates getters and setters
|
55
|
+
# for the provided values.
|
56
|
+
#
|
57
|
+
# As a side effect, this means you can't create app settings whose
|
58
|
+
# name is the same as a ruby reserved word or a method defined by a
|
59
|
+
# ruby `Object`, because those calls don't trigger {#method_missing}
|
60
|
+
# to execute. In practice, this shouldn't be a huge limitation, but
|
61
|
+
# it's worth being aware of.
|
62
|
+
#
|
63
|
+
# Configuration setting names must begin with an uppercase letter,
|
64
|
+
# lowercase letter, or digit. Dashes and underscores are permitted
|
65
|
+
# after the initial character.
|
66
|
+
#
|
67
|
+
# @param block [Block] The configuration block.
|
68
|
+
# @return Nothing, but stores the configuration values provided
|
69
|
+
# inside the block.
|
48
70
|
def configure(&block)
|
49
71
|
@definitions ||= Hash.new
|
50
72
|
|
@@ -54,14 +76,27 @@ module TcravitRubyLib #:nodoc:
|
|
54
76
|
instance_eval &block
|
55
77
|
@in_config = false
|
56
78
|
end
|
57
|
-
|
79
|
+
|
80
|
+
#@
|
81
|
+
# Remove a previously defined configuration value.
|
82
|
+
#
|
83
|
+
# {#remove} can be passed the name of the configuration setting as
|
84
|
+
# a string or a symbol. If the requested setting exists, its value
|
85
|
+
# will be discarded, and the getter and setter methods will be
|
86
|
+
# undefined. If the requested setting does not exist, no action is
|
87
|
+
# taken and no exceptions are raised.
|
88
|
+
#
|
89
|
+
# @param key [String] The configuration setting to remove. A symbol
|
90
|
+
# can also be provided for the +key+.
|
91
|
+
# @return Nothing.
|
58
92
|
def remove!(key)
|
59
93
|
the_sym = key.to_sym
|
60
|
-
@definitions.delete(the_sym)
|
61
|
-
send :undef_method, the_sym
|
62
|
-
send :undef_method, "#{the_sym.to_s}=".to_sym
|
94
|
+
@definitions.delete(the_sym) if @definitions.include?(the_sym)
|
95
|
+
send :undef_method, the_sym if self.respond_to?(the_sym)
|
96
|
+
send :undef_method, "#{the_sym.to_s}=".to_sym if self.respond_to?("#{the_sym.to_s}=".to_sym)
|
63
97
|
end
|
64
|
-
|
98
|
+
|
99
|
+
#-nodoc-#
|
65
100
|
def method_missing(methname, *args)
|
66
101
|
if (methname.to_s =~ /^([A-Za-z0-9][A-Za-z0-9\-\_]+)$/)
|
67
102
|
if @in_config
|
@@ -24,7 +24,8 @@ require 'pathname'
|
|
24
24
|
|
25
25
|
module TcravitRubyLib #:nodoc:
|
26
26
|
|
27
|
-
|
27
|
+
##
|
28
|
+
# jUtilities for locating a configuration directory within a tree.
|
28
29
|
#
|
29
30
|
# Unix utilities such as +git+ will look for the .git directory in a
|
30
31
|
# project by starting with the current directory and traversing upward
|
@@ -33,13 +34,6 @@ module TcravitRubyLib #:nodoc:
|
|
33
34
|
#
|
34
35
|
# This module, inspired by a post on Practicing Ruby, implements that
|
35
36
|
# kind of traversal for Ruby applications.
|
36
|
-
#
|
37
|
-
# Author:: Tammy Cravit (mailto:tammy@tammycravit.com)
|
38
|
-
# Copyright:: Copyright (c) 2011, Tammy Cravit. All rights reserved.
|
39
|
-
# License:: This program is free software: you can redistribute it and/or modify
|
40
|
-
# it under the terms of the GNU General Public License as published by
|
41
|
-
# the Free Software Foundation, either version 3 of the License, or
|
42
|
-
# (at your option) any later version.
|
43
37
|
module ConfigSearcher
|
44
38
|
|
45
39
|
# Locate a configuration folder by starting in the specified directory
|
@@ -22,6 +22,11 @@
|
|
22
22
|
require 'rake'
|
23
23
|
|
24
24
|
module TcravitRubyLib
|
25
|
+
##
|
26
|
+
# Load and install rake tasks defined within the TcravitRubyLib library.
|
27
|
+
#
|
28
|
+
# This module is designed to be require'd by a Rakefile, and will load and
|
29
|
+
# install all of the Rake tasks contained within the library.
|
25
30
|
class RakeTasks
|
26
31
|
include Rake::DSL if defined?(Rake::DSL)
|
27
32
|
|
@@ -19,16 +19,9 @@
|
|
19
19
|
############################################################################
|
20
20
|
|
21
21
|
def find_version_file
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
return nil
|
26
|
-
else
|
27
|
-
curr_dir = File.expand_path(curr_dir + "/..")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
if File.directory?(File.join(curr_dir)) then
|
31
|
-
ver_file = Dir["#{curr_dir}/**/version.rb"]
|
22
|
+
rake_dir = Rake.original_dir
|
23
|
+
if File.directory?(rake_dir) then
|
24
|
+
ver_file = Dir["#{rake_dir}/**/version.rb"]
|
32
25
|
if ver_file.nil?
|
33
26
|
return nil
|
34
27
|
else
|
@@ -82,9 +75,15 @@ def update_gem_version_part(index=2, test_mode=false)
|
|
82
75
|
|
83
76
|
vd = TcravitRubyLib::VERSION_DATA
|
84
77
|
vd[index] = vd[index] + 1
|
78
|
+
if (index < 2)
|
79
|
+
vd[2] = 0
|
80
|
+
end
|
81
|
+
if (index == 0)
|
82
|
+
vd[1] = 0
|
83
|
+
end
|
85
84
|
|
86
85
|
if test_mode then
|
87
|
-
write_output_to("/tmp/
|
86
|
+
write_output_to("/tmp/bump_ver_#{positions[index]}.out", create_file_contents(module_name, vd))
|
88
87
|
else
|
89
88
|
write_output_to(version_file, create_file_contents(module_name, vd))
|
90
89
|
end
|
@@ -99,7 +98,7 @@ def set_gem_version(major, minor, build, test_mode=false)
|
|
99
98
|
vd = [major, minor, build]
|
100
99
|
|
101
100
|
if test_mode then
|
102
|
-
write_output_to("/tmp/
|
101
|
+
write_output_to("/tmp/bump_ver_set.out", create_file_contents(module_name, vd))
|
103
102
|
else
|
104
103
|
write_output_to(version_file, create_file_contents(module_name, vd))
|
105
104
|
end
|
@@ -22,9 +22,23 @@
|
|
22
22
|
require 'simple-password-gen'
|
23
23
|
|
24
24
|
module TcravitRubyLib
|
25
|
+
##
|
26
|
+
# Contains random Ruby utility functions that don't fit anywhere else.
|
25
27
|
module Utility
|
26
28
|
extend self
|
27
29
|
|
30
|
+
##
|
31
|
+
# Generate random alphanumeric passwords.
|
32
|
+
#
|
33
|
+
# Previously this method generated passwords by shuffling characters
|
34
|
+
# in an array. It's now just a wrapper for the +simple-password-gen+
|
35
|
+
# gem.
|
36
|
+
#
|
37
|
+
# @param size [Integer] The length of the password to generate. Defaults
|
38
|
+
# to 16 characters if not specified.
|
39
|
+
# @param pronounceable [Boolean] True to generate pronounceable passwords.
|
40
|
+
# Defaults to false.
|
41
|
+
# @return [String] The generated password.
|
28
42
|
def random_alphanumeric(size=16, pronounceable=false)
|
29
43
|
if pronounceable then
|
30
44
|
return Password.pronounceable(size*2)[0..(size-1)]
|
@@ -28,112 +28,129 @@ require_custom_matcher_named("be_a_rake_task_named")
|
|
28
28
|
require_custom_matcher_named("be_a_valid_gem_version_file_for")
|
29
29
|
require_custom_matcher_named("declare_the_gem_version_to_be")
|
30
30
|
|
31
|
-
|
31
|
+
@test_version_file = "/tmp/bump_ver.out"
|
32
32
|
|
33
|
-
describe "
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
describe "bump_ver.rake" do
|
34
|
+
describe "version:bump:major", type: :rake do
|
35
|
+
before(:all) do
|
36
|
+
@test_version_file = "/tmp/bump_ver_major.out"
|
37
37
|
end
|
38
|
-
end
|
39
38
|
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
context "the basics" do
|
40
|
+
it "should be a rake task" do
|
41
|
+
expect(subject).to be_a_rake_task_named("version:bump:major")
|
42
|
+
end
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
45
|
+
context "file generation" do
|
46
|
+
before(:each) do
|
47
|
+
File.delete(@test_version_file) if File.exist?(@test_version_file)
|
48
|
+
end
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
50
|
+
it "should generate a file with the right format and module name" do
|
51
|
+
args = to_task_arguments(1)
|
52
|
+
task.execute(args)
|
53
|
+
expect(@test_version_file).to be_a_valid_gem_version_file_for("TcravitRubyLib")
|
54
|
+
end
|
59
55
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
56
|
+
it "should increment the major version number" do
|
57
|
+
initial_version = TcravitRubyLib::VERSION_DATA.clone
|
58
|
+
args = to_task_arguments(1)
|
59
|
+
task.execute(args)
|
60
|
+
expect(@test_version_file).to declare_the_gem_version_to_be((initial_version[0] + 1), 0, 0)
|
61
|
+
end
|
64
62
|
end
|
65
63
|
end
|
66
64
|
|
67
|
-
|
68
|
-
before(:
|
69
|
-
|
65
|
+
describe "version:bump:minor", type: :rake do
|
66
|
+
before(:all) do
|
67
|
+
@test_version_file = "/tmp/bump_ver_minor.out"
|
70
68
|
end
|
71
69
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
context "the basics" do
|
71
|
+
it "should be a rake task" do
|
72
|
+
expect(subject).to be_a_rake_task_named("version:bump:minor")
|
73
|
+
end
|
76
74
|
end
|
77
75
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
expect(TEST_VERSION_FILE).to declare_the_gem_version_to_be(initial_version[0], (initial_version[1] + 1), initial_version[2])
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
76
|
+
context "file generation" do
|
77
|
+
before(:each) do
|
78
|
+
File.delete(@test_version_file) if File.exist?(@test_version_file)
|
79
|
+
end
|
86
80
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
81
|
+
it "should generate a file with the right format and module name" do
|
82
|
+
args = to_task_arguments(1)
|
83
|
+
task.execute(args)
|
84
|
+
expect(@test_version_file).to be_a_valid_gem_version_file_for("TcravitRubyLib")
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should increment the minor version number" do
|
88
|
+
initial_version = TcravitRubyLib::VERSION_DATA.clone
|
89
|
+
args = to_task_arguments(1)
|
90
|
+
task.execute(args)
|
91
|
+
expect(@test_version_file).to declare_the_gem_version_to_be(initial_version[0], (initial_version[1] + 1), 0)
|
92
|
+
end
|
91
93
|
end
|
92
94
|
end
|
93
95
|
|
94
|
-
|
95
|
-
before(:
|
96
|
-
|
96
|
+
describe "version:bump:build", type: :rake do
|
97
|
+
before(:all) do
|
98
|
+
@test_version_file = "/tmp/bump_ver_build.out"
|
97
99
|
end
|
98
100
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
101
|
+
context "the basics" do
|
102
|
+
it "should be a rake task" do
|
103
|
+
expect(subject).to be_a_rake_task_named("version:bump:build")
|
104
|
+
end
|
103
105
|
end
|
104
106
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
expect(TEST_VERSION_FILE).to declare_the_gem_version_to_be(initial_version[0], initial_version[1], (initial_version[2] + 1))
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
107
|
+
context "file generation" do
|
108
|
+
before(:each) do
|
109
|
+
File.delete(@test_version_file) if File.exist?(@test_version_file)
|
110
|
+
end
|
113
111
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
112
|
+
it "should generate a file with the right format and module name" do
|
113
|
+
args = to_task_arguments(1)
|
114
|
+
task.execute(args)
|
115
|
+
expect(@test_version_file).to be_a_valid_gem_version_file_for("TcravitRubyLib")
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should increment build version number" do
|
119
|
+
initial_version = TcravitRubyLib::VERSION_DATA.clone
|
120
|
+
args = to_task_arguments(1)
|
121
|
+
task.execute(args)
|
122
|
+
expect(@test_version_file).to declare_the_gem_version_to_be(initial_version[0], initial_version[1], (initial_version[2] + 1))
|
123
|
+
end
|
118
124
|
end
|
119
125
|
end
|
120
126
|
|
121
|
-
|
122
|
-
before(:
|
123
|
-
|
127
|
+
describe "version:bump:set", type: :rake do
|
128
|
+
before(:all) do
|
129
|
+
@test_version_file = "/tmp/bump_ver_set.out"
|
124
130
|
end
|
125
131
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
132
|
+
context "the basics" do
|
133
|
+
it "should be a rake task" do
|
134
|
+
expect(subject).to be_a_rake_task_named("version:bump:set")
|
135
|
+
end
|
130
136
|
end
|
131
137
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
138
|
+
context "file generation" do
|
139
|
+
before(:each) do
|
140
|
+
File.delete(@test_version_file) if File.exist?(@test_version_file)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should generate a file with the right format and module name" do
|
144
|
+
args = to_task_arguments(3,4,5,11)
|
145
|
+
task.execute(args)
|
146
|
+
expect(@test_version_file).to be_a_valid_gem_version_file_for("TcravitRubyLib")
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should generate a file with the right version number" do
|
150
|
+
args = to_task_arguments(3,4,5,1)
|
151
|
+
task.execute(args)
|
152
|
+
expect(@test_version_file).to declare_the_gem_version_to_be(3, 4, 5)
|
153
|
+
end
|
136
154
|
end
|
137
155
|
end
|
138
156
|
end
|
139
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tcravit_ruby_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tammy Cravit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simple-password-gen
|