check_names 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d0cf11e9076de1fa47bd7958d036569900222f8ffbe9aefd86e4cee94fdaa2c
4
- data.tar.gz: 0d3450cd0d9825a3d99d7169df84a321203ed85a516587ac974b7bc361d59fa2
3
+ metadata.gz: 8e8b673b887e26b3ec7100c88369de69d82f985a65389b9bbf4d901e0dc76a53
4
+ data.tar.gz: c5c5d6f4157348de247b653598360cc6da83d56940fa85a0e4a0367b6b13a2c7
5
5
  SHA512:
6
- metadata.gz: a57acda4efb147a008062b2660ff1473ae93b7a499d6cc425c386c9eae69177692193a52c3fa576ecb4d82c857c71b450436a7965debc3d30e5cc3398494b8a8
7
- data.tar.gz: 830e2e02569026fd527180a71f786d975d9ca7c258655955f59cc74f513a4e50a153a0523a92d83a444197f1771186488f9896e5325faa567ae1eab7a40f7e96
6
+ metadata.gz: ed35fb48743e2651df7d8d03fccc9394ef69d69ce5268059d11542a84ec941759c03092120b1cedea4c339b4b1426446d5e857a74bcab46a5e8111fb3468f40d
7
+ data.tar.gz: db674a40f05f65f22705ed8eca975c6452a02bc2322102fe889990e7313d8cbb1d6974f8cba57498ebf875d20a89e0c9c43d99e3180c84aacf3f42989d7f079d
data/exe/check_names CHANGED
@@ -22,40 +22,56 @@ Version #{CheckNames.version}
22
22
  Usage:
23
23
  check_names [OPTIONS]... [names]...
24
24
 
25
- check_names exits with a zero return code (success) if no conflicting gem
26
- name exists. Otherwise it exits with a non-zero return code, with one
27
- of the following meanings:
25
+ check_names looks to see whether the names provided are already in use.
26
+ It outputs the usage (if any) of each name on $STDOUT. It exits with a
27
+ zero return code if none of the names are already in use. Otherwise it
28
+ exits with return code 1.
28
29
 
29
- 1 A gem exists on Rubygems with this name
30
- 2 You have a github repository of this name
31
- 3 You have an executable (reachable via \$PATH) with this name
32
- 4 You have a shell function with this name
33
- 5 You have an alias with this name
34
- 6 This name is used by a Ruby standard class
30
+ check_names checks for each of the following uses:
35
31
 
36
- If more than one name was given, the return code is the maximum return code
37
- received for any name.
32
+ - The name of a Ruby standard class
33
+ - The name of a gem on RubyGems
34
+ - The name of one of your Github repositories
35
+ - The name of a sehll alias
36
+ - The name of a shell function
37
+ - The name of an executable (reachable via \$PATH)
38
38
 
39
39
  The following options are available:
40
40
 
41
41
  --help -h Print this help information
42
- --quiet -q Suppress messages about the status of the name check
42
+ --all -a Report all uses of the name. (Otherwise, check_names stops at
43
+ the first use it finds.)
43
44
  HELP
44
45
  end
45
46
 
46
47
  def main(args)
47
48
  args = args.map { |arg| arg.downcase }
48
- quiet = args.index { |arg| %w{-q --quiet}.include?(arg) }
49
- args.delete_at(quiet) if quiet
49
+ all = args.index { |arg| %w{-a --all}.include?(arg) }
50
+ args.delete_at(all) if all
50
51
  if args.size == 0 || %w{-h --help help}.include?(args.first)
51
52
  show_help
52
53
  exit
53
54
  end
55
+
54
56
  rc = 0
55
- args.each do |arg|
56
- status = GemName.check(arg)
57
- puts "#{arg}: #{status[:message]}." unless quiet
58
- rc = status[:rc] if status[:rc] > rc
57
+ args.each.with_index(0) do |arg, i|
58
+ results = []
59
+ print "#{arg}: "
60
+ checks_printed_count = 0
61
+ (1...(CheckNames.check_methods.size)).each do |check|
62
+ result = CheckNames.check_name(check, arg)
63
+ if result[:result]
64
+ print ", " if checks_printed_count > 0
65
+ print result[:description]
66
+ checks_printed_count += 1
67
+ end
68
+ if checks_printed_count > 0
69
+ rc = 1
70
+ break unless all
71
+ end
72
+ end
73
+ print CheckNames.check_method(0)[:description] unless checks_printed_count > 0
74
+ puts
59
75
  end
60
76
  exit(rc)
61
77
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CheckNames
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
 
6
6
  def self.version
7
7
  VERSION
data/lib/check_names.rb CHANGED
@@ -4,7 +4,7 @@ require_relative "check_names/version"
4
4
  require 'shellwords'
5
5
  require 'httparty'
6
6
 
7
- module GemName
7
+ module CheckNames
8
8
  class Error < StandardError; end
9
9
 
10
10
  def self.ruby_gem_exists?(name)
@@ -48,29 +48,45 @@ module GemName
48
48
 
49
49
  def self.standard_class_exists?(name)
50
50
  class_name = name.split('_').map(&:capitalize).join
51
- Module.const_defined?(class_name)
51
+ # Do it this way so the Class space isn't polluted with the classes of this script
52
+ command = "ruby -e \"puts Module.const_defined?(\\\"#{class_name}\\\").inspect\""
53
+ begin
54
+ eval(`#{command}`.chomp)
55
+ rescue
56
+ false
57
+ end
52
58
  end
53
59
 
54
- def self.check(name)
55
- name = name.downcase
56
- if ruby_gem_exists?(name)
57
- return {rc: 1, message: "A Gem on RubyGems"}
58
- end
59
- if github_repository_exists?(name)
60
- return {rc: 2, message: "A personal Github repository"}
61
- end
62
- if executable_exists?(name)
63
- return {rc: 3, message: "An executable"}
64
- end
65
- if function_exists?(name)
66
- return {rc: 4, message: "A function"}
67
- end
68
- if alias_exists?(name)
69
- return {rc: 5, message: "An alias"}
70
- end
71
- if standard_class_exists?(name)
72
- return {rc: 6, message: "A Ruby class"}
60
+ CHECK_METHODS = [
61
+ {method: nil, description: "Unused"},
62
+ {method: :standard_class_exists?, description: "Class"},
63
+ {method: :ruby_gem_exists?, description: "RubyGem"},
64
+ {method: :github_repository_exists?, description: "Github repository"},
65
+ {method: :alias_exists?, description: "Alias"},
66
+ {method: :function_exists?, description: "Function"},
67
+ {method: :executable_exists?, description: "Executable"}
68
+ ]
69
+
70
+ def self.check_methods
71
+ CHECK_METHODS
72
+ end
73
+
74
+ def self.check_method(i)
75
+ CHECK_METHODS[i]
76
+ end
77
+
78
+ def self.unused_result
79
+ {check: 0, description: CHECK_METHODS[0][:description], result: true}
80
+ end
81
+
82
+ def self.check_name(check, name)
83
+ method = CHECK_METHODS[check] && CHECK_METHODS[check][:method]
84
+ if method
85
+ result = {check: check, description: CHECK_METHODS[check][:description], result: send(method, name)}
86
+ else
87
+ result = unused_result.dup
73
88
  end
74
- {rc: 0, message: "Available"}
89
+ result[:name] = name
90
+ result
75
91
  end
76
92
  end
data/sig/check_names.rbs CHANGED
@@ -1,4 +1,4 @@
1
- module GemName
1
+ module CheckNames
2
2
  VERSION: String
3
3
  # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: check_names
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard LeBer