cmdlet 0.0.7 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.templates/cmdlet.rb +26 -0
  3. data/.builders/.templates/{command_spec.rb → cmdlet_spec.rb} +4 -4
  4. data/.builders/.templates/require_all_cmdlets.rb +5 -0
  5. data/.builders/_.rb +7 -1
  6. data/.builders/boot.rb +2 -0
  7. data/.builders/data/categories.json +2 -10
  8. data/.builders/data/cmdlets/array.json +121 -0
  9. data/.builders/data/cmdlets/comparison.json +245 -0
  10. data/.builders/director/category_builder.rb +26 -0
  11. data/.builders/director/category_dao.rb +38 -0
  12. data/.builders/director/category_director.rb +24 -10
  13. data/.builders/director/cmdlet_builder.rb +27 -34
  14. data/.builders/director/cmdlet_child.rb +16 -44
  15. data/.builders/director/cmdlet_dao.rb +29 -0
  16. data/.builders/director/cmdlet_director.rb +37 -13
  17. data/.builders/director/dao.rb +16 -0
  18. data/.builders/documents/commands.rb +15 -16
  19. data/.builders/documents/use_cases.rb +32 -34
  20. data/.builders/documents/x_functions.rb +7 -10
  21. data/.builders/generators/01-bootstrap.rb +112 -112
  22. data/.builders/generators/20-categories.rb +16 -0
  23. data/.builders/generators/30-commands-bak.rb +53 -0
  24. data/.builders/generators/cmdlets/array.rb +109 -0
  25. data/.builders/generators/cmdlets/comparison.rb +164 -0
  26. data/CHANGELOG.md +22 -0
  27. data/Guardfile +1 -1
  28. data/lib/cmdlet/_.rb +14 -0
  29. data/lib/cmdlet/array/join.rb +8 -10
  30. data/lib/cmdlet/array/join_post.rb +22 -0
  31. data/lib/cmdlet/array/join_pre.rb +22 -0
  32. data/lib/cmdlet/base_cmdlet.rb +17 -0
  33. data/lib/cmdlet/comparison/and.rb +16 -0
  34. data/lib/cmdlet/comparison/default.rb +20 -0
  35. data/lib/cmdlet/comparison/eq.rb +20 -0
  36. data/lib/cmdlet/comparison/gt.rb +17 -0
  37. data/lib/cmdlet/comparison/gte.rb +17 -0
  38. data/lib/cmdlet/comparison/lt.rb +17 -0
  39. data/lib/cmdlet/comparison/lte.rb +17 -0
  40. data/lib/cmdlet/comparison/ne.rb +20 -0
  41. data/lib/cmdlet/comparison/or.rb +16 -0
  42. data/lib/cmdlet/version.rb +1 -1
  43. data/lib/cmdlet.rb +3 -0
  44. data/package-lock.json +2 -2
  45. data/package.json +1 -1
  46. metadata +28 -9
  47. data/.builders/.templates/all_commands.rb +0 -5
  48. data/.builders/.templates/command.rb +0 -26
  49. data/.builders/documents/categories.rb +0 -24
  50. data/.builders/documents/cmdlets.rb +0 -30
  51. data/.builders/generators/20-commands.rb +0 -54
  52. data/.builders/generators/25-categories.rb +0 -20
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Array handling routines, eg. join, join_prefix, join_post
5
+ module Array
6
+ # JoinPost: join an array of values with separator as a string and using the separator at the end of string
7
+ class JoinPost < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [String|Int] values - array of values to join
10
+ # @param [String] separator - separator between values, defaults to comma
11
+ # @return [String]
12
+ def call(values, separator = ',')
13
+ return '' if values.nil? || !values.is_a?(::Array)
14
+
15
+ values = values.reject(&:blank?)
16
+ return '' if values.length.zero?
17
+
18
+ "#{values.join(separator)}#{separator}"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Array handling routines, eg. join, join_prefix, join_post
5
+ module Array
6
+ # JoinPre: join an array of values with separator as a string and using the separator at the beginning of string
7
+ class JoinPre < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [String|Int] values - array of values to join
10
+ # @param [String] separator - separator between values, defaults to comma
11
+ # @return [String]
12
+ def call(values, separator = ',')
13
+ return '' if values.nil? || !values.is_a?(::Array)
14
+
15
+ values = values.reject(&:blank?)
16
+ return '' if values.length.zero?
17
+
18
+ "#{separator}#{values.join(separator)}"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # base cmdlet provides an interface for cmdlets
5
+ class BaseCmdlet
6
+ def call(value)
7
+ value
8
+ end
9
+
10
+ # String tokenizer will clean up a string so that
11
+ # all sorts of case formatted strings can be
12
+ # represented in a consistent fashion
13
+ def tokenizer
14
+ @_tokenizer ||= Funcky.configuration.tokenizer
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # And: Return true if **all of** the given values are truthy.
7
+ class And < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] values - list of values (via *splat) to be checked via AND condition
10
+ # @return [String] return true when every value is truthy
11
+ def call(*values)
12
+ values.all? { |value| value }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Default: Return true if **all of** the given values are truthy.
7
+ class Default < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] values - one or more paramaters that may or may not contain nil
10
+ # @return [String] return true when every value is truthy
11
+ def call(*values)
12
+ default_value = values[-1]
13
+
14
+ find_value = values[0..-2].find { |value| !value.nil? }
15
+
16
+ find_value || default_value
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Eq: Return true if two values are equal
7
+ class Eq < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] lhs - lhs - left hand side value
10
+ # @param [Object] rhs - rhs - right hand side value
11
+ # @return [String] return truthy value if left hand side equals right hand side
12
+ def call(lhs, rhs)
13
+ lhs = lhs.to_s if lhs.is_a?(Symbol)
14
+ rhs = rhs.to_s if rhs.is_a?(Symbol)
15
+
16
+ lhs == rhs
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Gt: Return true if left hand side GREATER THAN right hand side
7
+ class Gt < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] lhs - lhs - left hand side value
10
+ # @param [Object] rhs - rhs - right hand side value
11
+ # @return [String] truthy value if left hand side GREATER THAN right hand side
12
+ def call(lhs, rhs)
13
+ lhs > rhs
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Gte: Return true if left hand side GREATER THAN or EQUAL TO right hand side
7
+ class Gte < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] lhs - lhs - left hand side value
10
+ # @param [Object] rhs - rhs - right hand side value
11
+ # @return [String] truthy value if left hand side GREATER THAN or EQUAL TO right hand side
12
+ def call(lhs, rhs)
13
+ lhs >= rhs
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Lt: Return true if left hand side LESS THAN right hand side
7
+ class Lt < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] lhs - lhs - left hand side value
10
+ # @param [Object] rhs - rhs - right hand side value
11
+ # @return [String] truthy value if left hand side LESS THAN right hand side
12
+ def call(lhs, rhs)
13
+ lhs < rhs
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Lte: Return true if left hand side LESS THAN or EQUAL TO right hand side
7
+ class Lte < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] lhs - lhs - left hand side value
10
+ # @param [Object] rhs - rhs - right hand side value
11
+ # @return [String] truthy value if left hand side LESS THAN or EQUAL TO right hand side
12
+ def call(lhs, rhs)
13
+ lhs <= rhs
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Ne: Return true if left hand side is NOT equal to right hand side
7
+ class Ne < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] lhs - lhs - left hand side value
10
+ # @param [Object] rhs - rhs - right hand side value
11
+ # @return [String] truthy value if left hand side is NOT equal to right hand side
12
+ def call(lhs, rhs)
13
+ lhs = lhs.to_s if lhs.is_a?(Symbol)
14
+ rhs = rhs.to_s if rhs.is_a?(Symbol)
15
+
16
+ lhs != rhs
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cmdlet
4
+ # Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.
5
+ module Comparison
6
+ # Or: Return true if any value is truthy.
7
+ class Or < Cmdlet::BaseCmdlet
8
+ #
9
+ # @param [Object] values - list of values (via *splat) to be checked via AND condition
10
+ # @return [String] return true when first value is truthy
11
+ def call(*values)
12
+ values.any? { |value| value }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cmdlet
4
- VERSION = '0.0.7'
4
+ VERSION = '0.1.2'
5
5
  end
data/lib/cmdlet.rb CHANGED
@@ -4,8 +4,11 @@
4
4
  require 'k_config'
5
5
  require_relative 'cmdlet/version'
6
6
  require_relative 'cmdlet/configuration'
7
+ require_relative 'cmdlet/base_cmdlet'
7
8
  require_relative 'cmdlet/string_tokenizer'
8
9
 
10
+ require_relative 'cmdlet/_'
11
+
9
12
  module Cmdlet
10
13
  # raise Cmdlet::Error, 'Sample message'
11
14
  Error = Class.new(StandardError)
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "cmdlet",
3
- "version": "0.0.7",
3
+ "version": "0.1.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "cmdlet",
9
- "version": "0.0.7",
9
+ "version": "0.1.2",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmdlet",
3
- "version": "0.0.7",
3
+ "version": "0.1.2",
4
4
  "description": "Cmdlet provides a set of functions (wrapped in the command pattern) that perform simple actions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmdlet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-09 00:00:00.000000000 Z
11
+ date: 2022-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -47,24 +47,30 @@ extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
49
  - ".builders/.templates/FUNCTIONS.MD"
50
- - ".builders/.templates/all_commands.rb"
51
- - ".builders/.templates/command.rb"
52
- - ".builders/.templates/command_spec.rb"
50
+ - ".builders/.templates/cmdlet.rb"
51
+ - ".builders/.templates/cmdlet_spec.rb"
52
+ - ".builders/.templates/require_all_cmdlets.rb"
53
53
  - ".builders/_.rb"
54
54
  - ".builders/boot.rb"
55
55
  - ".builders/data/categories.json"
56
+ - ".builders/data/cmdlets/array.json"
57
+ - ".builders/data/cmdlets/comparison.json"
58
+ - ".builders/director/category_builder.rb"
59
+ - ".builders/director/category_dao.rb"
56
60
  - ".builders/director/category_director.rb"
57
61
  - ".builders/director/cmdlet_builder.rb"
58
62
  - ".builders/director/cmdlet_child.rb"
63
+ - ".builders/director/cmdlet_dao.rb"
59
64
  - ".builders/director/cmdlet_director.rb"
60
- - ".builders/documents/categories.rb"
61
- - ".builders/documents/cmdlets.rb"
65
+ - ".builders/director/dao.rb"
62
66
  - ".builders/documents/commands.rb"
63
67
  - ".builders/documents/use_cases.rb"
64
68
  - ".builders/documents/x_functions.rb"
65
69
  - ".builders/generators/01-bootstrap.rb"
66
- - ".builders/generators/20-commands.rb"
67
- - ".builders/generators/25-categories.rb"
70
+ - ".builders/generators/20-categories.rb"
71
+ - ".builders/generators/30-commands-bak.rb"
72
+ - ".builders/generators/cmdlets/array.rb"
73
+ - ".builders/generators/cmdlets/comparison.rb"
68
74
  - ".releaserc.json"
69
75
  - ".rspec"
70
76
  - ".rubocop.yml"
@@ -78,8 +84,21 @@ files:
78
84
  - bin/console
79
85
  - bin/setup
80
86
  - lib/cmdlet.rb
87
+ - lib/cmdlet/_.rb
81
88
  - lib/cmdlet/all_commands.rb
82
89
  - lib/cmdlet/array/join.rb
90
+ - lib/cmdlet/array/join_post.rb
91
+ - lib/cmdlet/array/join_pre.rb
92
+ - lib/cmdlet/base_cmdlet.rb
93
+ - lib/cmdlet/comparison/and.rb
94
+ - lib/cmdlet/comparison/default.rb
95
+ - lib/cmdlet/comparison/eq.rb
96
+ - lib/cmdlet/comparison/gt.rb
97
+ - lib/cmdlet/comparison/gte.rb
98
+ - lib/cmdlet/comparison/lt.rb
99
+ - lib/cmdlet/comparison/lte.rb
100
+ - lib/cmdlet/comparison/ne.rb
101
+ - lib/cmdlet/comparison/or.rb
83
102
  - lib/cmdlet/configuration.rb
84
103
  - lib/cmdlet/string_tokenizer.rb
85
104
  - lib/cmdlet/version.rb
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- {{#each commands}}
4
- require 'cmdlet/{{category}}/{{name}}'
5
- {{/each}}
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # reference: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflector/methods.rb
4
-
5
- module Cmdlet
6
- # {{cmdlet.category_description}}
7
- module {{camel cmdlet.category}}
8
- # {{camel cmdlet.name}}: {{cmdlet.command_description}}
9
- class {{camel cmdlet.name}} < Funcky::BaseFunction
10
- {{#each cmdlet.usecases}}
11
- # @example
12
- #
13
- # puts {{camel ./function}}.new.parse({{{nice_inputs}}})
14
- #
15
- # {{expected_output}}
16
- #
17
- {{/each}}
18
- #
19
- # @param [String|Int] value - numeric value
20
- # @return [String] ordinal suffix that would be required for a number
21
- def parse(value)
22
- {{{cmdlet.ruby}}}
23
- end
24
- end
25
- end
26
- end
@@ -1,24 +0,0 @@
1
- def categories
2
- return @categories unless @categories.nil?
3
-
4
-
5
- result = KDoc.model :document do
6
- table :rows do
7
- fields :name, :description
8
-
9
- row :case , "Tokenize and apply case and/or separator"
10
- row :comparison , "Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc."
11
- row :inflection , "Inflection handling routines, eg. pluralize, singular, ordinalize"
12
- row :string , "String handling helpers"
13
-
14
- row :array , "Array handling routines, eg. join, join_prefix, join_post"
15
- row :a_transform , "Tokenize and apply case and/or separator"
16
- row :a_comparison , "Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc."
17
- row :a_inflection , "Inflection handling routines, eg. pluralize, singular, ordinalize"
18
- end
19
- end
20
-
21
- @categories = result.raw_data_struct.rows
22
- end
23
- @categories = nil
24
-
@@ -1,30 +0,0 @@
1
- def cmdlets
2
- commands.map do |command|
3
- category = categories.find { |c| c.name == command.category }
4
-
5
- log.error("Category '#{command.category}' not found") unless category
6
-
7
- OpenStruct.new(
8
- category: command.category,
9
- name: command.name,
10
- category_description: category.description,
11
- command_description: command.description,
12
- ruby: command.ruby,
13
- usecases: use_cases
14
- .select { |uc| uc.category == command.category && uc.command == command.name }
15
- .map { |uc|
16
- OpenStruct.new({
17
- category: uc.category,
18
- command: uc.command,
19
- inputs: uc.inputs,
20
- nice_inputs: nice_inputs(uc.inputs),
21
- expected_output: uc.expected_output
22
- })
23
- }
24
- )
25
- end
26
- end
27
-
28
- def nice_inputs(values)
29
- values.map { |value| value.is_a?(String) ? "'#{value}'" : value }.join(', ')
30
- end
@@ -1,54 +0,0 @@
1
- KManager.action :commands do
2
- action do
3
-
4
- puts commands.first.function_description
5
- # Ruby Gem Bootstrap
6
- director = KDirector::Dsls::BasicDsl
7
- .init(k_builder,
8
- template_base_folder: '',
9
- on_exist: :skip, # %i[skip write compare]
10
- on_action: :queue # %i[queue execute]
11
- )
12
- .blueprint(
13
- active: true,
14
- name: :build_commands,
15
- description: 'Build Commandlets',
16
- on_exist: :write) do
17
-
18
- cd(:lib)
19
-
20
- # builder
21
- # .add_file('FUNCTIONS.md',
22
- # template_file: 'FUNCTIONS.md',
23
- # categories: categories.sort_by { |r| r.name },
24
- # functions: functions.sort_by { |r| [r.category, r.name] },
25
- # on_exist: :write)
26
-
27
- add('all_commands.rb',
28
- template_file: 'all_commands.rb',
29
- commands: commands.sort_by { |r| [r.category, r.name] },
30
- on_exist: :write)
31
-
32
- cmdlets.each do |cmdlet|
33
-
34
- add("#{cmdlet.category}/#{cmdlet.name}.rb",
35
- cmdlet: cmdlet,
36
- template_file: 'command.rb',
37
- on_exist: :write)
38
- end
39
-
40
- end
41
-
42
- director.play_actions
43
- # director.builder.logit
44
- end
45
- end
46
-
47
- KManager.opts.app_name = 'commands'
48
- KManager.opts.sleep = 2
49
- KManager.opts.reboot_on_kill = 0
50
- KManager.opts.reboot_sleep = 4
51
- KManager.opts.exception_style = :short
52
- KManager.opts.show.time_taken = true
53
- KManager.opts.show.finished = true
54
- KManager.opts.show.finished_message = 'FINISHED :)'
@@ -1,20 +0,0 @@
1
- KManager.action :categories do
2
- action do
3
-
4
- CategoryDirector
5
- .init(k_builder,
6
- on_exist: :write, # %i[skip write compare]
7
- on_action: :execute # %i[queue execute]
8
- )
9
- .category(:case , "Tokenize and apply case and/or separator")
10
- .category(:comparison , "Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.")
11
- .category(:inflection , "Inflection handling routines, eg. pluralize, singular, ordinalize")
12
- .category(:string , "String handling helpers")
13
- .category(:a_array , "Array handling routines, eg. join, join_prefix, join_post")
14
- .category(:a_transform , "Tokenize and apply case and/or separator")
15
- .category(:a_comparison , "Comparison helpers, eg. or, and, equal, not equal, less than, greater than etc.")
16
- .category(:a_inflection , "Inflection handling routines, eg. pluralize, singular, ordinalize")
17
- .save_categories
18
- .category_file
19
- end
20
- end