Skip to content

Commit ef61d35

Browse files
committed
Handle prmd init with no arguments
1 parent b1f87e0 commit ef61d35

File tree

5 files changed

+46
-5
lines changed

5 files changed

+46
-5
lines changed

lib/prmd.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require_relative 'prmd/commands'
44
require_relative 'prmd/schema'
55
require_relative 'prmd/link'
6+
require_relative 'prmd/utils'
67
require_relative 'prmd/template'
78
require_relative 'prmd/url_generator'
89
require_relative 'prmd/hash_helpers'

lib/prmd/cli/base.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ def make_parser(options = {})
3333
# @param [Array<String>] argv
3434
# @return [Array<String>] remaining arguments
3535
# @private
36-
def execute_parser(parser, argv)
37-
parser.parse(argv)
36+
def execute_parser(argv)
37+
@parser.parse(argv)
3838
end
3939

4040
# Set the given key and value in the given options Hash.
@@ -66,10 +66,10 @@ def set_option(options, key, value)
6666
# @return [Hash<Symbol, Object>] parsed options
6767
def parse_options(argv, options = {})
6868
opts = {}
69-
parser = make_parser(options) do |key, value|
69+
@parser = make_parser(options) do |key, value|
7070
set_option(opts, key, value)
7171
end
72-
argv = execute_parser(parser, argv)
72+
argv = execute_parser(argv)
7373
opts[:argv] = argv
7474
opts
7575
end

lib/prmd/cli/generate.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require_relative 'base'
22
require_relative '../commands/init'
3+
require_relative '../utils'
34

45
module Prmd
56
module CLI
@@ -40,7 +41,11 @@ def self.make_parser(options = {})
4041
# @return (see Prmd::CLI::Base#execute)
4142
def self.execute(options = {})
4243
name = options.fetch(:argv).first
43-
write_result Prmd.init(name, options), options
44+
if Prmd::Utils.blank?(name)
45+
abort @parser
46+
else
47+
write_result Prmd.init(name, options), options
48+
end
4449
end
4550
end
4651
end

lib/prmd/utils.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module Prmd
2+
# For any tid bits, or core extension methods, without the "core" extension
3+
module Utils
4+
# For checking if the string contains only spaces
5+
BLANK_REGEX = /\A\s+\z/
6+
7+
def self.blank?(obj)
8+
if obj.nil?
9+
true
10+
elsif obj.is_a?(String)
11+
obj.empty? || !!(obj =~ BLANK_REGEX)
12+
elsif obj.respond_to?(:empty?)
13+
obj.empty?
14+
else
15+
false
16+
end
17+
end
18+
end
19+
end

test/utils_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
require_relative 'helpers'
2+
3+
class UtilsTest < Minitest::Test
4+
def test_blank?
5+
assert_equal true, Prmd::Utils.blank?(nil)
6+
assert_equal true, Prmd::Utils.blank?([])
7+
assert_equal true, Prmd::Utils.blank?({})
8+
assert_equal true, Prmd::Utils.blank?("")
9+
assert_equal true, Prmd::Utils.blank?(" ")
10+
assert_equal true, Prmd::Utils.blank?(" ")
11+
assert_equal false, Prmd::Utils.blank?([nil])
12+
assert_equal false, Prmd::Utils.blank?({ a: nil })
13+
assert_equal false, Prmd::Utils.blank?("A")
14+
assert_equal false, Prmd::Utils.blank?(Object.new)
15+
end
16+
end

0 commit comments

Comments
 (0)