worktree_manager 0.2.1

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.
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe WorktreeManager::Worktree do
4
+ describe '#initialize' do
5
+ it 'accepts a hash of attributes' do
6
+ worktree = described_class.new(path: '/path/to/worktree', branch: 'main')
7
+ expect(worktree.path).to eq('/path/to/worktree')
8
+ expect(worktree.branch).to eq('main')
9
+ end
10
+
11
+ it 'accepts a string path' do
12
+ worktree = described_class.new('/path/to/worktree')
13
+ expect(worktree.path).to eq('/path/to/worktree')
14
+ end
15
+ end
16
+
17
+ describe '#detached?' do
18
+ it 'returns false by default' do
19
+ worktree = described_class.new(path: '/path')
20
+ expect(worktree.detached?).to be false
21
+ end
22
+
23
+ it 'returns true when detached' do
24
+ worktree = described_class.new(path: '/path', detached: true)
25
+ expect(worktree.detached?).to be true
26
+ end
27
+ end
28
+
29
+ describe '#bare?' do
30
+ it 'returns false by default' do
31
+ worktree = described_class.new(path: '/path')
32
+ expect(worktree.bare?).to be false
33
+ end
34
+
35
+ it 'returns true when bare' do
36
+ worktree = described_class.new(path: '/path', bare: true)
37
+ expect(worktree.bare?).to be true
38
+ end
39
+ end
40
+
41
+ describe '#main?' do
42
+ it 'returns true for main branch' do
43
+ worktree = described_class.new(path: '/path', branch: 'main')
44
+ expect(worktree.main?).to be true
45
+ end
46
+
47
+ it 'returns true for master branch' do
48
+ worktree = described_class.new(path: '/path', branch: 'master')
49
+ expect(worktree.main?).to be true
50
+ end
51
+
52
+ it 'returns false for other branches' do
53
+ worktree = described_class.new(path: '/path', branch: 'develop')
54
+ expect(worktree.main?).to be false
55
+ end
56
+ end
57
+
58
+ describe '#to_s' do
59
+ it 'includes branch name when available' do
60
+ worktree = described_class.new(path: '/path', branch: 'main')
61
+ expect(worktree.to_s).to eq('/path (main)')
62
+ end
63
+
64
+ it 'includes head when branch is not available' do
65
+ worktree = described_class.new(path: '/path', head: 'abc123')
66
+ expect(worktree.to_s).to eq('/path (abc123)')
67
+ end
68
+ end
69
+
70
+ describe '#to_h' do
71
+ it 'returns a hash representation' do
72
+ worktree = described_class.new(path: '/path', branch: 'main')
73
+ expected = {
74
+ path: '/path',
75
+ branch: 'main',
76
+ head: nil,
77
+ detached: false,
78
+ bare: false
79
+ }
80
+ expect(worktree.to_h).to eq(expected)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe WorktreeManager do
4
+ it 'has a version number' do
5
+ expect(WorktreeManager::VERSION).not_to be nil
6
+ end
7
+
8
+ describe '.new' do
9
+ it 'creates a new manager instance' do
10
+ manager = WorktreeManager.new
11
+ expect(manager).to be_a(WorktreeManager::Manager)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'lib/worktree_manager/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = 'worktree_manager'
5
+ spec.version = WorktreeManager::VERSION
6
+ spec.authors = ['nacyot']
7
+ spec.email = ['propellerheaven@gmail.com']
8
+
9
+ spec.summary = 'Git worktree management tool'
10
+ spec.description = 'A Ruby gem for managing git worktrees with ease'
11
+ spec.homepage = 'https://github.com/nacyot/worktree_manager'
12
+ spec.license = 'MIT'
13
+
14
+ spec.metadata = {
15
+ 'source_code_uri' => 'https://github.com/nacyot/worktree_manager',
16
+ 'changelog_uri' => 'https://github.com/nacyot/worktree_manager/blob/main/CHANGELOG.md',
17
+ 'bug_tracker_uri' => 'https://github.com/nacyot/worktree_manager/issues',
18
+ 'rubygems_mfa_required' => 'true'
19
+ }
20
+
21
+ spec.files = Dir.chdir(__dir__) { `git ls-files -z`.split("\x0") }
22
+ spec.bindir = 'bin'
23
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.required_ruby_version = '>= 3.1.0'
27
+
28
+ spec.add_dependency 'thor', '~> 1.0'
29
+ spec.add_dependency 'tty-prompt', '~> 0.23'
30
+
31
+ spec.add_development_dependency 'rake', '~> 13.0'
32
+ spec.add_development_dependency 'rspec', '~> 3.0'
33
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: worktree_manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - nacyot
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: thor
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: tty-prompt
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.23'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.23'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rake
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '13.0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '13.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rspec
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ description: A Ruby gem for managing git worktrees with ease
69
+ email:
70
+ - propellerheaven@gmail.com
71
+ executables:
72
+ - wm
73
+ - worktree_manager
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".github/workflows/test.yml"
78
+ - ".gitignore"
79
+ - ".mise.toml"
80
+ - ".rspec"
81
+ - ".version"
82
+ - ".worktree.yml.example"
83
+ - CHANGELOG.md
84
+ - CLAUDE.md
85
+ - Gemfile
86
+ - Gemfile.lock
87
+ - LICENSE
88
+ - README.md
89
+ - Rakefile
90
+ - bin/wm
91
+ - bin/worktree_manager
92
+ - lib/worktree_manager.rb
93
+ - lib/worktree_manager/cli.rb
94
+ - lib/worktree_manager/config_manager.rb
95
+ - lib/worktree_manager/hook_manager.rb
96
+ - lib/worktree_manager/manager.rb
97
+ - lib/worktree_manager/version.rb
98
+ - lib/worktree_manager/worktree.rb
99
+ - mise/release.sh
100
+ - pkg/worktree_manager-0.1.0.gem
101
+ - spec/integration/worktree_integration_spec.rb
102
+ - spec/spec_helper.rb
103
+ - spec/worktree_manager/cli_help_spec.rb
104
+ - spec/worktree_manager/cli_spec.rb
105
+ - spec/worktree_manager/config_manager_spec.rb
106
+ - spec/worktree_manager/hook_manager_spec.rb
107
+ - spec/worktree_manager/manager_spec.rb
108
+ - spec/worktree_manager/worktree_spec.rb
109
+ - spec/worktree_manager_spec.rb
110
+ - worktree_manager.gemspec
111
+ homepage: https://github.com/nacyot/worktree_manager
112
+ licenses:
113
+ - MIT
114
+ metadata:
115
+ source_code_uri: https://github.com/nacyot/worktree_manager
116
+ changelog_uri: https://github.com/nacyot/worktree_manager/blob/main/CHANGELOG.md
117
+ bug_tracker_uri: https://github.com/nacyot/worktree_manager/issues
118
+ rubygems_mfa_required: 'true'
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 3.1.0
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubygems_version: 3.6.9
134
+ specification_version: 4
135
+ summary: Git worktree management tool
136
+ test_files: []