branch-name 2.2.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c79db6ebf8cf49b09e86cc7ffff4bbe74fe88981da302cf83231cbce59a8ec0d
4
- data.tar.gz: 15f849bc8342043994590d68b2caa5ea439a7c9a9c89a16a04a03211d3f47250
3
+ metadata.gz: ecf9d15cb3f6a7be37ca9d39377e9d8c103b71557ae26a01dbf19670ce3c9548
4
+ data.tar.gz: 2ee162f10d1bd5bf48cde5e2d7611241600030098b9e50331472eef08077bbad
5
5
  SHA512:
6
- metadata.gz: edd5e60ccba0dd53b403290dc1956df060e2d31ca61c2959feb97d9ee80f8cda6802e8b90c441f8571fbf254e93929c9ba382af284cfda5ef3de997319a7e52d
7
- data.tar.gz: 866f0482f61a59968b7b8fe3c4923551e3e0920416383aa5aa146ce1c4a827fb5f917bceef4297d020058c6e4a76f047c3027166937ff05ba9d1adc3216292b9
6
+ metadata.gz: d7dd261862332096d9dd74d38ade8fd517b72ea07fe867a8d2b2b6cbf367b13e296ce2f8fc35cd9bd2a697e53a51d39edc842ca9ad644a6ece15dcd4e0c0b3ac
7
+ data.tar.gz: cba46ce2945c423427d1e39930d9695841a0153fa041d61899f90b396a156162a4dcce047f1c04d1b131ce7573aa497b3f351538d8d12f6bc7820fcf2fe39b6e
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
+ ## ['3.0.0'] - 2022-09-26
2
+ * Enhancements:
3
+ * Changes:
4
+ * Default default commands to :help.
5
+ * Remove references to system for options, folder locations, etc. These were not being used and the nature of this tool is that global options should suffice.
6
+ * Bug Fixes: Not really a branch-name bug, but patched Thor bug that displays nested subcommands incorrectly.
7
+
1
8
  ## ['2.2.0'] - 2022-09-24
2
9
  * Enhancements:
3
- * Add support for `branch-name create` `-x` argument (see `branch-name help create`) which allows you to position the ticket and ticket description within the forulated branch name.
10
+ * Add support for `branch-name create` `-x` argument (see `branch-name help create`) which allows you to position the ticket and ticket description within the formulated branch name.
4
11
  * The `branch-name create :project_location` option string now accepts any [`Time.strftime`](`https://apidock.com/ruby/Time/strftime`) format directive.
5
12
  * Add better test coverage, although not what it should be (I'm working on it); this started a "quick and dirty" tool.
6
13
  * `branch-name create` will now create the PROJECT_LOCATION if it does not exist.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- branch-name (2.2.0)
4
+ branch-name (3.0.0)
5
5
  activesupport (~> 7.0, >= 7.0.4)
6
6
  colorize (~> 0.8.1)
7
7
  os (~> 1.1, >= 1.1.4)
data/README.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # `branch-name`
2
2
 
3
+ [![GitHub version](http://badge.fury.io/gh/gangelo%2Fbranch-name.svg)](https://badge.fury.io/gh/gangelo%2Fbranch-name)
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/branch-name.svg)](https://badge.fury.io/rb/branch-name)
6
+
7
+ [![](http://ruby-gem-downloads-badge.herokuapp.com/branch-name?type=total)](http://www.rubydoc.info/gems/branch-name/)
8
+ [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/gems/branch-name/)
9
+
10
+ [![Report Issues](https://img.shields.io/badge/report-issues-red.svg)](https://github.com/gangelo/branch-name/issues)
11
+
12
+ [![License](http://img.shields.io/badge/license-MIT-yellowgreen.svg)](#license)
13
+
3
14
  `branch-name` is a gem that provides a command-line interface that allows you to accomplish several tasks, tasks I *personally* find myself having to carry out every time I work on a feature branch. I created this gem *for myself*; however, you are free to use it yourself, if any of these tasks fits into your personal routine:
4
15
 
5
16
  1. Formulate a git *feature branch name*, given a [jira](https://www.atlassian.com/software/jira) ticket and jira ticket description. **Why? Because I am constantly having to create git feature branch names that are based on jira ticket and jira ticket descriptions.**
@@ -12,6 +12,7 @@ require_relative 'locatable'
12
12
  require_relative 'normalizable'
13
13
  require_relative 'projectable'
14
14
  require_relative 'subcommands/config'
15
+ require_relative 'task_defaultable'
15
16
  require_relative 'version'
16
17
 
17
18
  module Branch
@@ -26,11 +27,11 @@ module Branch
26
27
  include Locatable
27
28
  include Normalizable
28
29
  include Projectable
30
+ include TaskDefaultable
29
31
 
30
32
  class_option :debug, type: :boolean, default: false
31
33
  class_option :verbose, type: :boolean, default: false
32
34
 
33
- default_task :create
34
35
  map %w[--version -v] => :version
35
36
 
36
37
  desc 'create [OPTIONS] DESCRIPTION [TICKET]', 'Formulate a branch name based on a ticket
@@ -34,10 +34,6 @@ module Branch
34
34
  File.join(local_folder, CONFIG_FILENAME)
35
35
  end
36
36
 
37
- def system_config_file
38
- File.join(system_folder, CONFIG_FILENAME)
39
- end
40
-
41
37
  def global_config_file?
42
38
  File.exist? global_config_file
43
39
  end
@@ -46,10 +42,6 @@ module Branch
46
42
  File.exist? local_config_file
47
43
  end
48
44
 
49
- def system_config_file?
50
- File.exist? system_config_file
51
- end
52
-
53
45
  def create_global_config_file!
54
46
  create_config_file global_config_file
55
47
  end
@@ -58,10 +50,6 @@ module Branch
58
50
  create_config_file local_config_file
59
51
  end
60
52
 
61
- def create_system_config_file!
62
- create_config_file system_config_file
63
- end
64
-
65
53
  def delete_global_config_file!
66
54
  delete_config_file global_config_file
67
55
  end
@@ -70,10 +58,6 @@ module Branch
70
58
  delete_config_file local_config_file
71
59
  end
72
60
 
73
- def delete_system_config_file!
74
- delete_config_file system_config_file
75
- end
76
-
77
61
  private
78
62
 
79
63
  def create_config_file(config_file)
@@ -12,7 +12,6 @@ module Branch
12
12
  def load_options(defaults: {})
13
13
  options = {}
14
14
 
15
- options.merge!(load_config(system_config_file))
16
15
  options.merge!(load_config(global_config_file))
17
16
  options.merge!(load_config(local_config_file))
18
17
 
@@ -19,27 +19,12 @@ module Branch
19
19
  Dir.pwd
20
20
  end
21
21
 
22
- def system_folder
23
- system_folder = Pathname.new('/')
24
- unless system_folder.exist? && system_folder.directory?
25
- puts "WARNING: system folder #{system_folder} does not exist, " \
26
- "using global folder instead (#{global_folder})".red
27
-
28
- return global_folder
29
- end
30
- system_folder.to_s
31
- end
32
-
33
22
  def project_folder(options: {})
34
23
  return home_folder if options.blank?
35
24
 
36
25
  home_folder
37
26
  end
38
27
 
39
- def system_folder_equals_global_folder?
40
- syetem_folder == global_folder
41
- end
42
-
43
28
  def temp_folder
44
29
  Dir.tmpdir
45
30
  end
@@ -3,7 +3,9 @@
3
3
  require 'thor'
4
4
  require_relative '../configurable'
5
5
  require_relative '../exitable'
6
+ require_relative 'delete'
6
7
  require_relative 'init'
8
+ require_relative '../task_defaultable'
7
9
 
8
10
  module Branch
9
11
  module Name
@@ -11,8 +13,7 @@ module Branch
11
13
  class Config < ::Thor
12
14
  include Configurable
13
15
  include Exitable
14
-
15
- default_task :info
16
+ include TaskDefaultable
16
17
 
17
18
  desc 'info', 'Displays information about this gem configuration'
18
19
  long_desc <<-LONG_DESC
@@ -36,46 +37,13 @@ module Branch
36
37
  else
37
38
  say "Local config file does not exist at: \"#{local_folder}\"", :yellow
38
39
  end
39
-
40
- if system_config_file?
41
- say "System config file exists: \"#{system_config_file}\"", :green
42
- else
43
- say "System config file does not exist at: \"#{system_folder}\"", :yellow
44
- end
45
- end
46
-
47
- desc 'delete [OPTION]', 'Removes .branch-name file(s)'
48
- long_desc <<-LONG_DESC
49
- NAME
50
- \x5
51
- `branch-name config delete [OPTION]` -- will remove one or all .branch-name file(s)
52
- depending on the OPTION.
53
-
54
- SYNOPSIS
55
- \x5
56
- branch-name config delete [-a|-g|-l|-s]
57
- LONG_DESC
58
- method_option :all, type: :boolean, aliases: '-a'
59
- method_option :global, type: :boolean, aliases: '-g'
60
- method_option :local, type: :boolean, aliases: '-l'
61
- method_option :system, type: :boolean, aliases: '-s'
62
-
63
- def delete
64
- if options[:all]
65
- delete_global_config_file!
66
- delete_local_config_file!
67
- delete_system_config_file!
68
- elsif options[:global]
69
- delete_global_config_file!
70
- elsif options[:local]
71
- delete_local_config_file!
72
- elsif options[:system]
73
- delete_system_config_file!
74
- end
75
40
  end
76
41
 
77
42
  desc 'init SUBCOMMAND', 'Sets up config files for this gem'
78
43
  subcommand :init, Branch::Name::Subcommands::Init
44
+
45
+ desc 'delete SUBCOMMAND', 'Deletes one of all config files for this gem'
46
+ subcommand :delete, Branch::Name::Subcommands::Delete
79
47
  end
80
48
  end
81
49
  end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ require_relative '../configurable'
5
+ require_relative '../exitable'
6
+ require_relative 'nestable'
7
+ require_relative '../task_defaultable'
8
+
9
+ module Branch
10
+ module Name
11
+ module Subcommands
12
+ class Delete < ::Thor
13
+ include Configurable
14
+ include Exitable
15
+ include Nestable
16
+ include TaskDefaultable
17
+
18
+ class << self
19
+ def ascestor_name
20
+ 'config delete'
21
+ end
22
+ end
23
+
24
+ desc 'all', 'Deletes all config files (local and global) for this gem'
25
+ subcommand_help_override "#{ascestor_name} all"
26
+ long_desc <<-LONG_DESC
27
+ NAME
28
+ \x5
29
+ `branch-name config delete all` -- will remove the all .branch-name config files.
30
+
31
+ SYNOPSIS
32
+ \x5
33
+ branch-name config delete all
34
+ LONG_DESC
35
+ method_option :all, type: :boolean, aliases: '-a'
36
+
37
+ def all
38
+ delete_global_config_file!
39
+ delete_local_config_file!
40
+ end
41
+
42
+ desc 'global', 'Deletes the global config file for this gem'
43
+ subcommand_help_override "#{ascestor_name} global"
44
+ long_desc <<-LONG_DESC
45
+ NAME
46
+ \x5
47
+ `branch-name config delete global` -- will remove the global .branch-name config file.
48
+
49
+ SYNOPSIS
50
+ \x5
51
+ branch-name config delete global
52
+ LONG_DESC
53
+ method_option :global, type: :boolean, aliases: '-g'
54
+
55
+ def global
56
+ delete_global_config_file!
57
+ end
58
+
59
+ desc 'local', 'Deletes the local config file for this gem'
60
+ subcommand_help_override "#{ascestor_name} local"
61
+ long_desc <<-LONG_DESC
62
+ NAME
63
+ \x5
64
+ `branch-name config delete local` -- will remove the local .branch-name config file.
65
+
66
+ SYNOPSIS
67
+ \x5
68
+ branch-name config delete local
69
+ LONG_DESC
70
+ method_option :local, type: :boolean, aliases: '-l'
71
+
72
+ def local
73
+ delete_local_config_file!
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Branch
4
+ module Name
5
+ module Subcommands
6
+ # This module helps fix a bug in Thor that prohibits help for nested
7
+ # subcommands from displaying help properly. Nested subcommands fail
8
+ # to display their subcommand ancestor command name. This fixes that
9
+ # bug. This module is used in conjunction with the Nestable module.
10
+ module HelpNestable
11
+ class << self
12
+ def included(base)
13
+ # Thor override
14
+ base.desc 'help [COMMAND]', 'Describe available commands or one specific command'
15
+ base.subcommand_help_override "config init help [SUBCOMMAND]"
16
+ def help(command = nil, subcommand = false)
17
+ super
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -3,63 +3,55 @@
3
3
  require 'thor'
4
4
  require_relative '../configurable'
5
5
  require_relative '../exitable'
6
+ require_relative 'nestable'
7
+ require_relative '../task_defaultable'
6
8
 
7
9
  module Branch
8
10
  module Name
9
11
  module Subcommands
10
- # https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-config
11
12
  class Init < ::Thor
12
13
  include Configurable
13
14
  include Exitable
15
+ include Nestable
16
+ include TaskDefaultable
14
17
 
15
- default_task :global
18
+ class << self
19
+ def ascestor_name
20
+ 'config init'
21
+ end
22
+ end
16
23
 
17
24
  desc 'global', 'Creates and initializes a .branch-name file in the global folder'
25
+ subcommand_help_override "#{ascestor_name} global"
18
26
  long_desc <<-LONG_DESC
19
27
  NAME
20
28
  \x5
21
- `branch-name init global` -- will create and initialize a .branch-name file
29
+ `branch-name config init global` -- will create and initialize a .branch-name file
22
30
  in the "#{Locatable.global_folder}" folder.
23
31
 
24
32
  SYNOPSIS
25
33
  \x5
26
- branch-name init global
34
+ branch-name config init global
27
35
  LONG_DESC
28
36
  def global
29
37
  create_global_config_file!
30
38
  end
31
39
 
32
40
  desc 'local', 'Creates and initializes a .branch-name file in the local folder'
41
+ subcommand_help_override "#{ascestor_name} local"
33
42
  long_desc <<-LONG_DESC
34
43
  NAME
35
44
  \x5
36
- `branch-name init local` -- will create and initialize a .branch-name file
45
+ `branch-name config init local` -- will create and initialize a .branch-name file
37
46
  in the "#{Locatable.local_folder}" folder.
38
47
 
39
48
  SYNOPSIS
40
49
  \x5
41
- branch-name init local
50
+ branch-name config init local
42
51
  LONG_DESC
43
52
  def local
44
53
  create_local_config_file!
45
54
  end
46
-
47
- desc 'system', 'Creates and initializes a .branch-name file in the system folder'
48
- long_desc <<-LONG_DESC
49
- NAME
50
- \x5
51
- `branch-name init system` -- will create and initialize a .branch-name file
52
- in the "#{Locatable.system_folder}" folder.
53
-
54
- SYNOPSIS
55
- \x5
56
- branch-name init system
57
- LONG_DESC
58
- def system
59
- # create_system_config_file!
60
- say_error 'System initialization is not available at this time', :red
61
- exit 1
62
- end
63
55
  end
64
56
  end
65
57
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'help_nestable'
4
+
5
+ module Branch
6
+ module Name
7
+ module Subcommands
8
+ # This module fixes a bug in Thor that prohibits help for nested
9
+ # subcommands from displaying help properly. Nested subcommands fail
10
+ # to display their subcommand ancestor command name. This fixes that
11
+ # bug.
12
+ module Nestable
13
+ class << self
14
+ def included(base)
15
+ base.extend ClassMethods
16
+ base.include HelpNestable
17
+ end
18
+ end
19
+
20
+ module ClassMethods
21
+ def ascestor_name
22
+ raise NotImplementedError
23
+ end
24
+
25
+ # Thor override
26
+ def banner(command, _namespace = nil, subcommand = false)
27
+ command.formatted_usage(self, $thor_runner, subcommand).split("\n").map do |_formatted_usage|
28
+ command_name = command.name.to_sym
29
+ "#{basename} #{@subcommand_help_override[command.usage]}"
30
+ end.join("\n")
31
+ end
32
+
33
+ def subcommand_help_override(help_string)
34
+ raise "Thor.desc must be called for \"#{help_string}\" " \
35
+ 'prior to calling .subcommand_help_override' if @usage.blank?
36
+
37
+ @subcommand_help_override = {} unless defined? @subcommand_help_override
38
+ @subcommand_help_override[@usage] = help_string
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Branch
4
+ module Name
5
+ # Forces the default Thor task to be :help
6
+ module TaskDefaultable
7
+ class << self
8
+ def included(base)
9
+ base.default_command :help
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -3,6 +3,6 @@
3
3
  module Branch
4
4
  module Name
5
5
  # branch-name version
6
- VERSION = '2.2.0'
6
+ VERSION = '3.0.0'
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: branch-name
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gene M. Angelo, Jr.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-24 00:00:00.000000000 Z
11
+ date: 2022-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -118,7 +118,11 @@ files:
118
118
  - lib/branch/name/option_error.rb
119
119
  - lib/branch/name/projectable.rb
120
120
  - lib/branch/name/subcommands/config.rb
121
+ - lib/branch/name/subcommands/delete.rb
122
+ - lib/branch/name/subcommands/help_nestable.rb
121
123
  - lib/branch/name/subcommands/init.rb
124
+ - lib/branch/name/subcommands/nestable.rb
125
+ - lib/branch/name/task_defaultable.rb
122
126
  - lib/branch/name/version.rb
123
127
  - sig/branch/name.rbs
124
128
  homepage: https://github.com/gangelo/branch-name