lsd-rb 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +44 -16
- data/bin/setup +1 -1
- data/lib/lsd/directory_lister.rb +7 -12
- data/lib/lsd/entry.rb +0 -2
- data/lib/lsd/table_formatter.rb +0 -2
- data/lib/lsd/version.rb +1 -3
- data/lib/lsd.rb +9 -6
- metadata +87 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1a3fa99d422d28418ea21937ed061a7a1cdfa80ae303773a438bd350f4490a4
|
4
|
+
data.tar.gz: d7ca61877fdba84dd3bcc4cd267aacb638556f58348f9cbc6d381c1e76037898
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f58e6b2b214f75e536a872e672d1fd0851262943a79d897d878387d5e4472e7b5adedb3ea1e832ce3d1386fecb31f5083e83d3739aed320febe0dcb15888e7e8
|
7
|
+
data.tar.gz: 04c8a55faf3a230ace395359ac9d8444e7f96096c6ac92b2adba779432eb5b030f7bc33c6a16dcdd1fd27aca341a2a1cb2f0d96e0d9162d0602716b8ca37e5dc
|
data/README.md
CHANGED
@@ -18,13 +18,13 @@ A modern alternative to the `ls` command inspired by Nushell's output, written i
|
|
18
18
|
1. Install gem (recommended)
|
19
19
|
|
20
20
|
```bash
|
21
|
-
gem install lsd
|
21
|
+
gem install lsd-rb
|
22
22
|
```
|
23
23
|
|
24
24
|
2. Use the installation script
|
25
25
|
|
26
26
|
```bash
|
27
|
-
git clone https://github.com/
|
27
|
+
git clone https://github.com/aristotelesbr/lsd
|
28
28
|
cd lsd
|
29
29
|
./install.sh
|
30
30
|
```
|
@@ -35,13 +35,17 @@ The installation script will:
|
|
35
35
|
|
36
36
|
1. Check if Ruby is installed (>= 3.0)
|
37
37
|
2. Install necessary dependencies
|
38
|
+
|
38
39
|
```bash
|
39
|
-
|
40
|
+
bundle install
|
40
41
|
```
|
42
|
+
|
41
43
|
3. Compile the program if needed
|
44
|
+
|
42
45
|
```bash
|
43
|
-
|
46
|
+
chmod +x bin/lsd
|
44
47
|
```
|
48
|
+
|
45
49
|
4. Move the binary to `/usr/local/bin`
|
46
50
|
|
47
51
|
## Usage
|
@@ -85,27 +89,51 @@ The index column (#) is always shown.
|
|
85
89
|
└── README.md # This documentation
|
86
90
|
```
|
87
91
|
|
92
|
+
## Development
|
93
|
+
|
94
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
95
|
+
|
96
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
97
|
+
|
88
98
|
## Contributing
|
89
99
|
|
100
|
+
We welcome contributions to LSD! Here's how you can help:
|
101
|
+
|
90
102
|
1. Fork the project
|
91
|
-
2. Create your feature branch (`git checkout -b feature/
|
92
|
-
3.
|
93
|
-
4.
|
94
|
-
5.
|
103
|
+
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
104
|
+
3. Make your changes
|
105
|
+
4. Run the tests to ensure everything passes (`bundle exec rake`)
|
106
|
+
5. Commit your changes (`git commit -am 'Add amazing feature'`)
|
107
|
+
6. Push to the branch (`git push origin feature/amazing-feature`)
|
108
|
+
7. Create a new Pull Request
|
95
109
|
|
96
|
-
|
110
|
+
### Code Style
|
97
111
|
|
98
|
-
This project
|
112
|
+
This project follows [Ruby Standard Style](https://github.com/standardrb/standard). All pull requests must pass style checks before they can be merged. You can automatically fix most style issues with:
|
99
113
|
|
100
|
-
|
114
|
+
```bash
|
115
|
+
bundle exec rake standard:fix
|
116
|
+
```
|
101
117
|
|
102
|
-
|
118
|
+
### Test Coverage
|
103
119
|
|
104
|
-
|
120
|
+
We maintain high test coverage in this project. All new features or bug fixes should include tests. Current test coverage is 90%.
|
105
121
|
|
106
|
-
|
122
|
+
To run the test suite with coverage report:
|
123
|
+
|
124
|
+
```bash
|
125
|
+
bundle exec rake
|
126
|
+
```
|
127
|
+
|
128
|
+
The coverage report will be generated in the `coverage` directory.
|
129
|
+
|
130
|
+
### Pull Request Process
|
107
131
|
|
108
|
-
|
132
|
+
1. Ensure your code follows the project's style guide (Ruby Standard)
|
133
|
+
2. Update the CHANGELOG.md with details of your changes
|
134
|
+
3. Include tests for your changes
|
135
|
+
4. Update documentation if needed
|
136
|
+
5. The PR template will guide you through the required information
|
109
137
|
|
110
138
|
## License
|
111
139
|
|
@@ -113,4 +141,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
113
141
|
|
114
142
|
## Code of Conduct
|
115
143
|
|
116
|
-
Everyone interacting in the
|
144
|
+
Everyone interacting in the LSD project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/aristotelesbr/lsd/blob/master/CODE_OF_CONDUCT.md).
|
data/bin/setup
CHANGED
data/lib/lsd/directory_lister.rb
CHANGED
@@ -1,23 +1,18 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "terminal-table"
|
4
|
-
require "colorize"
|
5
|
-
|
6
|
-
require_relative "entry"
|
7
|
-
require_relative "table_formatter"
|
8
|
-
|
9
1
|
module Lsd
|
10
2
|
module DirectoryLister
|
11
|
-
|
3
|
+
Error = Class.new(StandardError)
|
4
|
+
|
5
|
+
FILE_PRIORITY = 1
|
6
|
+
DIRECTORY_PRIORITY = 0
|
12
7
|
|
13
8
|
def self.list(path = ".")
|
14
9
|
entries = Dir.entries(path)
|
15
|
-
.reject { |
|
16
|
-
.sort_by { |name| [File.directory?(name) ?
|
10
|
+
.reject { |entry| entry.start_with?(".") }
|
11
|
+
.sort_by { |name| [File.directory?(name) ? DIRECTORY_PRIORITY : FILE_PRIORITY, name.downcase] }
|
17
12
|
.map { |name| Entry.new(name) }
|
18
13
|
|
19
14
|
puts TableFormatter.format(entries)
|
20
|
-
rescue Errno::EACCES
|
15
|
+
rescue Errno::EACCES
|
21
16
|
raise Error, "Permission denied: #{path}"
|
22
17
|
end
|
23
18
|
end
|
data/lib/lsd/entry.rb
CHANGED
data/lib/lsd/table_formatter.rb
CHANGED
data/lib/lsd/version.rb
CHANGED
data/lib/lsd.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require_relative "lsd/entry"
|
6
|
-
require_relative "lsd/table_formatter"
|
1
|
+
require "terminal-table"
|
2
|
+
require "colorize"
|
3
|
+
require "fileutils"
|
4
|
+
require "tmpdir"
|
7
5
|
|
8
6
|
module Lsd
|
9
7
|
class Error < StandardError; end
|
8
|
+
|
9
|
+
require_relative "lsd/version"
|
10
|
+
require_relative "lsd/directory_lister"
|
11
|
+
require_relative "lsd/entry"
|
12
|
+
require_relative "lsd/table_formatter"
|
10
13
|
end
|
metadata
CHANGED
@@ -1,112 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lsd-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aristóteles Coutinho
|
8
|
+
autorequire:
|
8
9
|
bindir: exe
|
9
10
|
cert_chain: []
|
10
|
-
date: 2025-
|
11
|
+
date: 2025-03-04 00:00:00.000000000 Z
|
11
12
|
dependencies:
|
12
13
|
- !ruby/object:Gem::Dependency
|
13
|
-
name:
|
14
|
+
name: optparse
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - "~>"
|
17
18
|
- !ruby/object:Gem::Version
|
18
|
-
version:
|
19
|
+
version: 0.6.0
|
19
20
|
type: :runtime
|
20
21
|
prerelease: false
|
21
22
|
version_requirements: !ruby/object:Gem::Requirement
|
22
23
|
requirements:
|
23
24
|
- - "~>"
|
24
25
|
- !ruby/object:Gem::Version
|
25
|
-
version:
|
26
|
+
version: 0.6.0
|
26
27
|
- !ruby/object:Gem::Dependency
|
27
|
-
name:
|
28
|
+
name: colorize
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
33
|
+
version: '1.1'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
36
|
version_requirements: !ruby/object:Gem::Requirement
|
36
37
|
requirements:
|
37
38
|
- - "~>"
|
38
39
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
40
|
+
version: '1.1'
|
40
41
|
- !ruby/object:Gem::Dependency
|
41
|
-
name:
|
42
|
+
name: terminal-table
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - "~>"
|
45
46
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
47
|
+
version: '3.0'
|
47
48
|
type: :runtime
|
48
49
|
prerelease: false
|
49
50
|
version_requirements: !ruby/object:Gem::Requirement
|
50
51
|
requirements:
|
51
52
|
- - "~>"
|
52
53
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
+
version: '3.0'
|
54
55
|
- !ruby/object:Gem::Dependency
|
55
56
|
name: bundler
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
|
-
- - "
|
59
|
+
- - ">="
|
59
60
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
61
|
+
version: '0'
|
61
62
|
type: :development
|
62
63
|
prerelease: false
|
63
64
|
version_requirements: !ruby/object:Gem::Requirement
|
64
65
|
requirements:
|
65
|
-
- - "
|
66
|
+
- - ">="
|
66
67
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
68
|
+
version: '0'
|
68
69
|
- !ruby/object:Gem::Dependency
|
69
70
|
name: rake
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
|
-
- - "
|
73
|
+
- - ">="
|
73
74
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
75
|
+
version: '0'
|
75
76
|
type: :development
|
76
77
|
prerelease: false
|
77
78
|
version_requirements: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
|
-
- - "
|
80
|
+
- - ">="
|
80
81
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
82
|
+
version: '0'
|
82
83
|
- !ruby/object:Gem::Dependency
|
83
84
|
name: rspec
|
84
85
|
requirement: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
|
-
- - "
|
87
|
+
- - ">="
|
87
88
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
89
|
+
version: '0'
|
89
90
|
type: :development
|
90
91
|
prerelease: false
|
91
92
|
version_requirements: !ruby/object:Gem::Requirement
|
92
93
|
requirements:
|
93
|
-
- - "
|
94
|
+
- - ">="
|
94
95
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
96
|
+
version: '0'
|
96
97
|
- !ruby/object:Gem::Dependency
|
97
98
|
name: standard
|
98
99
|
requirement: !ruby/object:Gem::Requirement
|
99
100
|
requirements:
|
100
|
-
- - "
|
101
|
+
- - ">="
|
101
102
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
103
|
+
version: '0'
|
103
104
|
type: :development
|
104
105
|
prerelease: false
|
105
106
|
version_requirements: !ruby/object:Gem::Requirement
|
106
107
|
requirements:
|
107
|
-
- - "
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: standard-custom
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: standard-performance
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: simplecov
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov-json
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
108
165
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
166
|
+
version: '0'
|
110
167
|
description: List directory contents with a modern, colorful interface
|
111
168
|
email:
|
112
169
|
- contato@aristoteles.dev
|
@@ -133,6 +190,7 @@ metadata:
|
|
133
190
|
source_code_uri: https://github.com/aristotelesbr/lsd
|
134
191
|
changelog_uri: https://github.com/aristotelesbr/lsd/blob/main/CHANGELOG.md
|
135
192
|
rubygems_mfa_required: 'true'
|
193
|
+
post_install_message:
|
136
194
|
rdoc_options: []
|
137
195
|
require_paths:
|
138
196
|
- lib
|
@@ -147,7 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
205
|
- !ruby/object:Gem::Version
|
148
206
|
version: '0'
|
149
207
|
requirements: []
|
150
|
-
rubygems_version: 3.
|
208
|
+
rubygems_version: 3.5.22
|
209
|
+
signing_key:
|
151
210
|
specification_version: 4
|
152
211
|
summary: A modern replacement for ls command
|
153
212
|
test_files: []
|