bashly 1.0.1 → 1.0.2

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: e17bc036331958bd9ff237d93e287c911bc00c85b33628a4b867dd2e69c818fe
4
- data.tar.gz: 236e3ba5f96e9f89fce4b77d95adf68a3030ef31d3d59a857ad0477aa871b171
3
+ metadata.gz: 67c0cd0da5f37edbad28313553ac30b878edae7d2255158d940af0deb8aa0a05
4
+ data.tar.gz: 6cf9bac796564e7730f3a55e6022d78a962506b418eb00cdecbe1111f3770ffb
5
5
  SHA512:
6
- metadata.gz: 55f3361b37d963fcd33ad97b9204ce201517b9249522e4d4fb501c4502e8ba31ef5049c629d6bf5e82d85854ca64de1435f2604a01e12913ba5a56de346994ee
7
- data.tar.gz: 23832fbbfbbaec41862b61eeb75ef0a34598db175192d09c3f1ea738bf1bd81aa11d855df7a6ba9ec8461a5daa0de835bc9343cb56e72e8867f5d7a15492f8d7
6
+ metadata.gz: 16eb355eb439bfc24457b184dd8255c091bb62dc1646c15e6d2842160f8848595de799cb453e54e43cdf5c2605906ed8f8c49ee21f5afda3999c9224b8d6fbc6
7
+ data.tar.gz: 889722479c576c8b30c3be1081911d0a7f61613664fc146fb4a2867b65d7199a5283464cc59eb40530e2c43f8270fbaa11e7f3a3d851cedc87a71515aef235b8
@@ -10,6 +10,7 @@ module Bashly
10
10
  @strings ||= MessageStrings.new
11
11
  end
12
12
 
13
+ # Outputs a comment that describes the view unless in production mode
13
14
  def view_marker(id = nil)
14
15
  id ||= ":#{caller_locations(1..1).first.path}"
15
16
  "# #{id}" unless Settings.production?
@@ -18,7 +19,7 @@ module Bashly
18
19
  # Reads a file from the userspace (Settings.source_dir) and returns
19
20
  # its contents. If the file is not found, returns a string with a hint.
20
21
  def load_user_file(file, placeholder: true)
21
- path = "#{Settings.source_dir}/#{file}"
22
+ path = user_file_path file
22
23
 
23
24
  content = if File.exist? path
24
25
  File.read(path).remove_front_matter
@@ -31,6 +32,22 @@ module Bashly
31
32
  Settings.production? ? content : "#{view_marker path}\n#{content}"
32
33
  end
33
34
 
35
+ # Returns a path to a file in the user's source_dir. The file argument
36
+ # should either be without exteneion, or with the user's configured
37
+ # partials_extension.
38
+ def user_file_path(file)
39
+ path = "#{Settings.source_dir}/#{file}"
40
+ ext = ".#{Settings.partials_extension}"
41
+ return path if path.end_with? ext
42
+
43
+ "#{path}#{ext}"
44
+ end
45
+
46
+ # Returns true if the user's source file exists
47
+ def user_file_exist?(file)
48
+ File.exist? user_file_path(file)
49
+ end
50
+
34
51
  private
35
52
 
36
53
  def view_path(view)
@@ -0,0 +1,7 @@
1
+ ## after hook
2
+ ##
3
+ ## Any code here will be placed inside an `after_hook()` function and called
4
+ ## after running any command.
5
+ ##
6
+ ## You can safely delete this file if you do not need it.
7
+ echo "==[ After Hook Called ]=="
@@ -0,0 +1,8 @@
1
+ ## before hook
2
+ ##
3
+ ## Any code here will be placed inside a `before_hook()` function and called
4
+ ## before running any command (but after processing its arguments).
5
+ ##
6
+ ## You can safely delete this file if you do not need it.
7
+ echo "==[ Before Hook Called ]=="
8
+ inspect_args
@@ -29,6 +29,14 @@ help:
29
29
  help: Add a help command, in addition to the standard --help flag.
30
30
  handler: Bashly::Libraries::Help
31
31
 
32
+ hooks:
33
+ help: Add placeholders for before/after hooks which are executed before/after any command.
34
+ files:
35
+ - source: "hooks/before.sh"
36
+ target: "%{user_source_dir}/before.%{user_ext}"
37
+ - source: "hooks/after.sh"
38
+ target: "%{user_source_dir}/after.%{user_ext}"
39
+
32
40
  lib:
33
41
  help: |-
34
42
  Create the lib directory for any additional user scripts.
@@ -1,3 +1,3 @@
1
1
  module Bashly
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
@@ -1,4 +1,4 @@
1
- if dependencies
1
+ if dependencies.any?
2
2
  = view_marker
3
3
 
4
4
  dependencies.each do |dependency|
@@ -10,7 +10,7 @@ if root_command?
10
10
  = render(:environment_variables_default).indent 2
11
11
  end
12
12
 
13
- = load_user_file("initialize.sh", placeholder: false).indent 2
13
+ = load_user_file("initialize", placeholder: false).indent 2
14
14
 
15
15
  > }
16
16
  >
@@ -8,6 +8,7 @@
8
8
  = render :user_lib if user_lib.any?
9
9
  = render :command_functions
10
10
  = render :parse_requirements
11
+ = render :user_hooks
11
12
  = render :initialize
12
13
  = render :run
13
14
 
@@ -7,26 +7,26 @@
7
7
  > declare -a input=()
8
8
  > normalize_input "$@"
9
9
  > parse_requirements "${input[@]}"
10
+ if user_file_exist?('before')
11
+ > before_hook
12
+ end
10
13
  >
11
14
  > case "$action" in
12
15
 
13
16
  deep_commands.each do |command|
14
- > "{{ command.action_name }}")
15
- > if [[ ${args['--help']:-} ]]; then
16
- > long_usage=yes
17
- > {{ command.function_name }}_usage
18
- > else
19
- > {{ command.function_name }}_command
20
- > fi
21
- > ;;
22
- >
17
+ > "{{ command.action_name }}") {{ command.function_name }}_command ;;
23
18
  end
24
19
 
25
20
  if commands.empty?
26
- > "root")
27
- > root_command
28
- > ;;
21
+ > "root") root_command ;;
29
22
  end
30
- >
31
23
  > esac
24
+
25
+ if user_file_exist?('after')
26
+ >
27
+ > after_hook
28
+ end
29
+
32
30
  > }
31
+
32
+
@@ -0,0 +1,17 @@
1
+ if user_file_exist?('before') || user_file_exist?('after')
2
+ = view_marker
3
+ end
4
+
5
+ if user_file_exist?('before')
6
+ > before_hook() {
7
+ = load_user_file("before").indent 2
8
+ > }
9
+ >
10
+ end
11
+
12
+ if user_file_exist?('after')
13
+ > after_hook() {
14
+ = load_user_file("after").indent 2
15
+ > }
16
+ >
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bashly
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-03 00:00:00.000000000 Z
11
+ date: 2023-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -155,6 +155,8 @@ files:
155
155
  - lib/bashly/libraries/config/config.sh
156
156
  - lib/bashly/libraries/help/help.rb
157
157
  - lib/bashly/libraries/help/help_command.sh
158
+ - lib/bashly/libraries/hooks/after.sh
159
+ - lib/bashly/libraries/hooks/before.sh
158
160
  - lib/bashly/libraries/lib/sample_function.sh
159
161
  - lib/bashly/libraries/libraries.yml
160
162
  - lib/bashly/libraries/settings/settings.yml
@@ -222,6 +224,7 @@ files:
222
224
  - lib/bashly/views/command/usage_fixed_flags.gtx
223
225
  - lib/bashly/views/command/usage_flags.gtx
224
226
  - lib/bashly/views/command/user_filter.gtx
227
+ - lib/bashly/views/command/user_hooks.gtx
225
228
  - lib/bashly/views/command/user_lib.gtx
226
229
  - lib/bashly/views/command/version_command.gtx
227
230
  - lib/bashly/views/command/whitelist_filter.gtx
@@ -259,7 +262,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
262
  - !ruby/object:Gem::Version
260
263
  version: '0'
261
264
  requirements: []
262
- rubygems_version: 3.4.7
265
+ rubygems_version: 3.4.8
263
266
  signing_key:
264
267
  specification_version: 4
265
268
  summary: Bash Command Line Tool Generator