thor-validations 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ff22a39235a36fde79684aadb15fa502d5148c53b720c88997995af023293940
4
+ data.tar.gz: e9303579d55681beee89b7ff52a64b134c09dc8fa0db1543a15008785db28d85
5
+ SHA512:
6
+ metadata.gz: 0b74b03bf1ff3a208db87645811d808937f2d2045d7de52965143de16616e291d28bad8d0bf647a10ffc692dbae8ce166884e04319ccba14d5e849d48c50023c
7
+ data.tar.gz: bbdaf8f4564ba02ad3da82c837512356bb8fe463983b41b42378c6c877d53f133f9be3b500be2628f0cd990ea0731ff660007df1ad6ca2f29906968ca3f6cf96
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Thor::Validations
2
+
3
+ Thor::Validations adds a `validate_before` method to Thor, allowing you to perform validations before executing commands.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'thor-validations'
11
+ ```
12
+
13
+ ## Inspiration
14
+
15
+ Thanks to https://github.com/kddnewton/thor-hollaback for the original idea.
16
+
17
+
18
+ ## Usage
19
+
20
+ ```ruby
21
+ class MyCommand < Thor
22
+ include Thor::Validations
23
+
24
+ validate_before, :deploy, :rollback do
25
+ check_permissions
26
+ end
27
+
28
+ desc "deploy", "Deploy app"
29
+ def deploy
30
+ sleep(1)
31
+ puts "Deploying..."
32
+ end
33
+
34
+ desc "rollback", "Rollback app"
35
+ def rollback
36
+ sleep(1)
37
+ puts "Rolling back..."
38
+ end
39
+
40
+ private
41
+
42
+ def check_permissions
43
+ puts "Checking permissions..."
44
+ end
45
+
46
+ end
47
+ ```
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Thor
4
+ module Validations
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ require_relative 'validations/version
5
+
6
+ class Thor
7
+ module Validations
8
+ def self.included(base)
9
+ base.extend(ClassMethods)
10
+ base.prepend(InstanceMethods)
11
+ end
12
+
13
+ module ClassMethods
14
+ def validations
15
+ @validations ||= {}
16
+ end
17
+
18
+ def validate_before(*method_names, &validation)
19
+ method_names.each do |method_name|
20
+ validations[method_name.to_sym] ||= []
21
+ validations[method_name.to_sym] << validation
22
+ end
23
+ end
24
+ end
25
+
26
+ module InstanceMethods
27
+ def invoke_command(command, *args)
28
+ run_validations(command)
29
+ super
30
+ end
31
+
32
+ private
33
+
34
+ def run_validations(command)
35
+ return unless command && self.class.validations.key?(command.name.to_sym)
36
+
37
+ self.class.validations[command.name.to_sym].each do |validation|
38
+ result = instance_exec(&validation)
39
+ raise Thor::Error, "Validation failed for #{command.name}" unless result
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: thor-validations
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Benoit Tigeot
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-07-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.1
33
+ description: A simple gem that adds a validate_before method to Thor, allowing pre-command
34
+ validations
35
+ email:
36
+ - benoit.tigeot@gmail.com
37
+ executables: []
38
+ extensions: []
39
+ extra_rdoc_files: []
40
+ files:
41
+ - README.md
42
+ - lib/thor/validations.rb
43
+ - lib/thor/validations/version.rb
44
+ homepage: https://github.com/benoittgt/thor-validations
45
+ licenses:
46
+ - MIT
47
+ metadata:
48
+ allowed_push_host: https://rubygems.org
49
+ homepage_uri: https://github.com/benoittgt/thor-validations
50
+ source_code_uri: https://github.com/benoittgt/thor-validations
51
+ changelog_uri: https://github.com/benoittgt/thor-validations/blob/main/CHANGELOG.md
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 2.6.0
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubygems_version: 3.5.11
68
+ signing_key:
69
+ specification_version: 4
70
+ summary: Adds validate_before functionality to Thor commands
71
+ test_files: []