markdown_exec 1.8.9 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -1
- data/CHANGELOG.md +18 -0
- data/Gemfile +3 -2
- data/Gemfile.lock +2 -8
- data/bin/tab_completion.sh +11 -3
- data/examples/colors.md +41 -19
- data/examples/document_options.md +8 -0
- data/examples/duplicate_block.md +5 -8
- data/examples/import0.md +3 -5
- data/examples/import1.md +1 -1
- data/examples/include.md +16 -10
- data/examples/indent.md +2 -0
- data/examples/index.md +68 -0
- data/examples/linked.md +31 -0
- data/examples/llm.md +54 -0
- data/lib/find_files.rb +1 -2
- data/lib/hash_delegator.rb +483 -207
- data/lib/input_sequencer.rb +229 -0
- data/lib/link_history.rb +11 -5
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +4 -6
- data/lib/mdoc.rb +7 -7
- data/lib/menu.src.yml +60 -11
- data/lib/menu.yml +56 -15
- metadata +6 -3
- data/examples/infile_config.md +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4a008bd8a59ebf3683d4f8690f94caff7fe6f39566ad32cb4aff6063e7fc51b
|
4
|
+
data.tar.gz: d54bd5737ec0d943c8a67999aab02428cdf86bab5250cf9a4897b59f1fa69cee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43b989b43f34c9cc2c3cbb331461e0f215757f453839a2127b318a3f03d78825b29264bb9c2cce89dba40ad8debd606504b59e4eaaa3a0d737c36f4bdf9429ec
|
7
|
+
data.tar.gz: 48e8bf62d6582f4c78bdc89aa81decf74e15d348c01d50a7a8eb1147b27bc445bc1d73b13c918fbd33c72e568e94693afebf7192e7c87717791463fefc2f8ea6
|
data/.rubocop.yml
CHANGED
@@ -13,7 +13,8 @@ Layout/LeadingCommentSpace:
|
|
13
13
|
Layout/LineContinuationLeadingSpace:
|
14
14
|
Enabled: false
|
15
15
|
|
16
|
-
Layout/LineLength:
|
16
|
+
Layout/LineLength: # 2024-01-21 temp disable
|
17
|
+
Enabled: false
|
17
18
|
Max: 96
|
18
19
|
|
19
20
|
Lint/Debugger:
|
@@ -58,6 +59,9 @@ Security/YAMLLoad:
|
|
58
59
|
Style/CommentedKeyword:
|
59
60
|
Enabled: false
|
60
61
|
|
62
|
+
Style/Documentation: # 2024-01-21 temp disable
|
63
|
+
Enabled: false
|
64
|
+
|
61
65
|
Style/DoubleNegation:
|
62
66
|
Enabled: false
|
63
67
|
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [2.0.1] - 2024-02-09
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
|
7
|
+
- Fix development requirement.
|
8
|
+
|
9
|
+
## [2.0.0] - 2024-02-07
|
10
|
+
|
11
|
+
### Added
|
12
|
+
|
13
|
+
- Process format and glob to load, save script code.
|
14
|
+
|
15
|
+
- Provide ENV and batch variables to formatting function.
|
16
|
+
|
17
|
+
- Find files matching glob and present for user selection.
|
18
|
+
|
19
|
+
- Allow for entry of new file name when saving.
|
20
|
+
|
3
21
|
## [1.8.9] - 2024-01-20
|
4
22
|
|
5
23
|
### Added
|
data/Gemfile
CHANGED
@@ -9,7 +9,7 @@ gemspec
|
|
9
9
|
gem 'clipboard'
|
10
10
|
gem 'debug'
|
11
11
|
gem 'erb'
|
12
|
-
gem 'httparty' # 2024-01-01 for ChatGPI API
|
12
|
+
# gem 'httparty' # 2024-01-01 for ChatGPI API
|
13
13
|
gem 'irb', '>= 1.8.0'
|
14
14
|
gem 'mocha', require: false
|
15
15
|
gem 'minitest', require: false
|
@@ -24,5 +24,6 @@ gem 'rubocop-minitest', require: false
|
|
24
24
|
gem 'rubocop-rake', require: false
|
25
25
|
gem 'rubocop-rspec', require: false
|
26
26
|
gem 'shellwords'
|
27
|
-
gem '
|
27
|
+
# gem 'tty-file'
|
28
|
+
gem 'uri', '0.12.2'
|
28
29
|
gem 'yaml', '~> 0.2.1'
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
markdown_exec (
|
4
|
+
markdown_exec (2.0.1)
|
5
5
|
clipboard (~> 1.3.6)
|
6
6
|
open3 (~> 0.1.1)
|
7
7
|
optparse (~> 0.1.1)
|
@@ -47,9 +47,6 @@ GEM
|
|
47
47
|
erb (4.0.3)
|
48
48
|
cgi (>= 0.3.3)
|
49
49
|
erubi (1.12.0)
|
50
|
-
httparty (0.21.0)
|
51
|
-
mini_mime (>= 1.0.0)
|
52
|
-
multi_xml (>= 0.5.2)
|
53
50
|
i18n (1.14.1)
|
54
51
|
concurrent-ruby (~> 1.0)
|
55
52
|
io-console (0.7.1)
|
@@ -63,11 +60,9 @@ GEM
|
|
63
60
|
crass (~> 1.0.2)
|
64
61
|
nokogiri (>= 1.12.0)
|
65
62
|
method_source (1.0.0)
|
66
|
-
mini_mime (1.1.5)
|
67
63
|
minitest (5.20.0)
|
68
64
|
mocha (2.1.0)
|
69
65
|
ruby2_keywords (>= 0.0.5)
|
70
|
-
multi_xml (0.6.0)
|
71
66
|
nokogiri (1.15.4-arm64-darwin)
|
72
67
|
racc (~> 1.4)
|
73
68
|
open3 (0.1.2)
|
@@ -187,7 +182,6 @@ DEPENDENCIES
|
|
187
182
|
clipboard
|
188
183
|
debug
|
189
184
|
erb
|
190
|
-
httparty
|
191
185
|
irb (>= 1.8.0)
|
192
186
|
markdown_exec!
|
193
187
|
minitest
|
@@ -203,7 +197,7 @@ DEPENDENCIES
|
|
203
197
|
rubocop-rake
|
204
198
|
rubocop-rspec
|
205
199
|
shellwords
|
206
|
-
uri
|
200
|
+
uri (= 0.12.2)
|
207
201
|
yaml (~> 0.2.1)
|
208
202
|
|
209
203
|
BUNDLED WITH
|
data/bin/tab_completion.sh
CHANGED
@@ -13,7 +13,7 @@ __filedirs_all()
|
|
13
13
|
}
|
14
14
|
|
15
15
|
_mde_echo_version() {
|
16
|
-
echo "
|
16
|
+
echo "2.0.1"
|
17
17
|
}
|
18
18
|
|
19
19
|
_mde() {
|
@@ -40,6 +40,10 @@ _mde() {
|
|
40
40
|
|
41
41
|
--dump-blocks-in-file) COMPREPLY="0"; return 0 ;;
|
42
42
|
|
43
|
+
--dump-dump-inherited-block_names) COMPREPLY="0"; return 0 ;;
|
44
|
+
|
45
|
+
--dump-dump-inherited-dependencies) COMPREPLY="0"; return 0 ;;
|
46
|
+
|
43
47
|
--dump-dump-inherited-lines) COMPREPLY="0"; return 0 ;;
|
44
48
|
|
45
49
|
--dump-menu-blocks) COMPREPLY="0"; return 0 ;;
|
@@ -94,7 +98,7 @@ _mde() {
|
|
94
98
|
# present matching option names
|
95
99
|
#
|
96
100
|
if [[ ${cur} == -* ]] ; then
|
97
|
-
opts=("--block-name" "--config" "--debug" "--dump-dump-delegate-object" "--dump-blocks-in-file" "--dump-dump-inherited-lines" "--dump-menu-blocks" "--dump-selected-block" "--exit" "--filename" "--find" "--find-path" "--help" "--how" "--list-blocks" "--list-count" "--list-default-env" "--list-default-yaml" "--list-docs" "--list-recent-output" "--list-recent-scripts" "--output-execution-summary" "--output-script" "--output-stdout" "--path" "--pwd" "--run-last-script" "--save-executed-script" "--save-execution-output" "--saved-script-folder" "--saved-stdout-folder" "--select-recent-output" "--select-recent-script" "--tab-completions" "--user-must-approve" "--version" "--display-level")
|
101
|
+
opts=("--block-name" "--config" "--debug" "--dump-dump-delegate-object" "--dump-blocks-in-file" "--dump-dump-inherited-block_names" "--dump-dump-inherited-dependencies" "--dump-dump-inherited-lines" "--dump-menu-blocks" "--dump-selected-block" "--exit" "--filename" "--find" "--find-path" "--help" "--how" "--list-blocks" "--list-count" "--list-default-env" "--list-default-yaml" "--list-docs" "--list-recent-output" "--list-recent-scripts" "--output-execution-summary" "--output-script" "--output-stdout" "--path" "--pwd" "--run-last-script" "--save-executed-script" "--save-execution-output" "--saved-script-folder" "--saved-stdout-folder" "--select-recent-output" "--select-recent-script" "--tab-completions" "--user-must-approve" "--version" "--display-level")
|
98
102
|
COMPREPLY=( $(compgen -W "$(printf "'%s' " "${opts[@]}")" -- "${cur}") )
|
99
103
|
|
100
104
|
return 0
|
@@ -121,6 +125,10 @@ _mde() {
|
|
121
125
|
|
122
126
|
--dump-blocks-in-file) COMPREPLY=".BOOL."; return 0 ;;
|
123
127
|
|
128
|
+
--dump-dump-inherited-block_names) COMPREPLY=".BOOL."; return 0 ;;
|
129
|
+
|
130
|
+
--dump-dump-inherited-dependencies) COMPREPLY=".BOOL."; return 0 ;;
|
131
|
+
|
124
132
|
--dump-dump-inherited-lines) COMPREPLY=".BOOL."; return 0 ;;
|
125
133
|
|
126
134
|
--dump-menu-blocks) COMPREPLY=".BOOL."; return 0 ;;
|
@@ -178,4 +186,4 @@ _mde() {
|
|
178
186
|
|
179
187
|
complete -o filenames -o nospace -F _mde mde
|
180
188
|
# _mde_echo_version
|
181
|
-
# echo "Updated: 2024-
|
189
|
+
# echo "Updated: 2024-02-09 19:17:33 UTC"
|
data/examples/colors.md
CHANGED
@@ -4,23 +4,45 @@
|
|
4
4
|
|
5
5
|
<https://en.wikipedia.org/wiki/Complementary_colors#/media/File:RGB_color_wheel.svg>
|
6
6
|
|
7
|
-
ff0000 red - exception text
|
8
|
-
ff7f00 orange - warning text
|
9
|
-
ffff00 yellow - notification text
|
10
|
-
7fff00 chartreuse green - output frame
|
11
|
-
00ff00 green - prompt
|
12
|
-
00ff7f spring green - input frame
|
13
|
-
00ffff cyan - menu text
|
14
|
-
007fff azure - menu frame
|
15
|
-
0000ff blue
|
16
|
-
7f00ff violet - opts frame
|
17
|
-
ff00ff magenta - opts text
|
18
|
-
ff007f rose - exception frame
|
7
|
+
/ ff0000 red - exception text
|
8
|
+
/ ff7f00 orange - warning text
|
9
|
+
/ ffff00 yellow - notification text
|
10
|
+
/ 7fff00 chartreuse green - output frame
|
11
|
+
/ 00ff00 green - prompt
|
12
|
+
/ 00ff7f spring green - input frame
|
13
|
+
/ 00ffff cyan - menu text
|
14
|
+
/ 007fff azure - menu frame
|
15
|
+
/ 0000ff blue
|
16
|
+
/ 7f00ff violet - opts frame
|
17
|
+
/ ff00ff magenta - opts text
|
18
|
+
/ ff007f rose - exception frame
|
19
19
|
|
20
20
|
```opts :(document_options)
|
21
21
|
```
|
22
22
|
|
23
23
|
```opts :load_colors
|
24
|
+
exception_color_detail: fg_rgbh_1f_00_7f
|
25
|
+
exception_color_name: fg_rgbh_1f_00_00
|
26
|
+
execution_report_preview_frame_color: fg_rgbh_7f_1f_00
|
27
|
+
menu_bash_color: fg_rgbh_00_c0_c0
|
28
|
+
menu_chrome_color: fg_rgbh_40_c0_c0
|
29
|
+
menu_divider_color: fg_rgbh_80_d0_c0
|
30
|
+
menu_link_color: fg_rgbh_e0_e0_20
|
31
|
+
menu_note_color: fg_rgbh_b0_b0_b0
|
32
|
+
menu_opts_color: fg_rgbh_1f_00_1f
|
33
|
+
menu_opts_set_color: fg_rgbh_7f_00_1f
|
34
|
+
menu_task_color: fg_rgbh_1f_1f_1f
|
35
|
+
menu_vars_color: fg_rgbh_1f_a0_1f
|
36
|
+
menu_vars_set_color: fg_rgbh_00_1f_1f
|
37
|
+
output_execution_label_name_color: fg_rgbh_00_1f_00
|
38
|
+
output_execution_label_value_color: fg_rgbh_00_1f_00
|
39
|
+
prompt_color_after_script_execution: fg_rgbh_00_1f_00
|
40
|
+
script_execution_frame_color: fg_rgbh_00_1f_7f
|
41
|
+
script_preview_frame_color: fg_rgbh_7f_1f_00
|
42
|
+
warning_color: fg_rgbh_1f_7f_00
|
43
|
+
```
|
44
|
+
|
45
|
+
```opts :load_colors2
|
24
46
|
exception_color_detail: fg_rgbh_ff_00_7f
|
25
47
|
exception_color_name: fg_rgbh_ff_00_00
|
26
48
|
execution_report_preview_frame_color: fg_rgbh_7f_ff_00
|
@@ -57,10 +79,10 @@ warning_color: fg_rgbh_ff_7f_00
|
|
57
79
|
```
|
58
80
|
[ ] Task1
|
59
81
|
|
60
|
-
blue; fg_rgbh_00_00_FF
|
61
|
-
green; fg_rgbh_00_FF_00
|
62
|
-
indigo; fg_rgbh_4B_00_82
|
63
|
-
orange; fg_rgbh_FF_7F_00
|
64
|
-
red; fg_rgbh_FF_00_00
|
65
|
-
violet; fg_rgbh_94_00_D3
|
66
|
-
yellow; fg_rgbh_FF_FF_00
|
82
|
+
/ blue; fg_rgbh_00_00_FF
|
83
|
+
/ green; fg_rgbh_00_FF_00
|
84
|
+
/ indigo; fg_rgbh_4B_00_82
|
85
|
+
/ orange; fg_rgbh_FF_7F_00
|
86
|
+
/ red; fg_rgbh_FF_00_00
|
87
|
+
/ violet; fg_rgbh_94_00_D3
|
88
|
+
/ yellow; fg_rgbh_FF_FF_00
|
@@ -0,0 +1,8 @@
|
|
1
|
+
This document demonstrates the automatic loading of options in a block with a reserved name.
|
2
|
+
|
3
|
+
```opts :(document_options)
|
4
|
+
menu_divider_format: "=> %{line} == %{line} <="
|
5
|
+
```
|
6
|
+
|
7
|
+
The divider below is named "Divider #1". Notice the "(document_options)" block sets the "menu_divider_format" option to duplicate the divider name when it is displayed.
|
8
|
+
::: Divider #1
|
data/examples/duplicate_block.md
CHANGED
@@ -1,10 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
Executing either of these blocks outputs the same two lines.
|
2
|
+
```bash :duplicate_name
|
3
|
+
echo from duplicate name, block 1
|
3
4
|
```
|
4
|
-
```bash :
|
5
|
-
|
5
|
+
```bash :duplicate_name
|
6
|
+
echo from duplicate name, block 2
|
6
7
|
```
|
7
|
-
```bash :a
|
8
|
-
03
|
9
|
-
```
|
10
|
-
|
data/examples/import0.md
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
This is Page 0
|
1
|
+
This is Page 0. It serves to demonstrate how options control the display of imported blocks and notes.
|
2
2
|
|
3
|
-
|
3
|
+
::: "import1.md" is imported here.
|
4
4
|
|
5
|
-
|
6
|
-
user_must_approve: true
|
7
|
-
```
|
5
|
+
@import import1.md
|
8
6
|
|
9
7
|
::: Page 0 code blocks
|
10
8
|
|
data/examples/import1.md
CHANGED
data/examples/include.md
CHANGED
@@ -1,19 +1,25 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
This document demonstrates blocks requiring other blocks.
|
2
|
+
|
3
|
+
Block "(Winter)" is hidden.
|
4
|
+
```bash :(Winter)
|
5
|
+
echo It is now Winter
|
3
6
|
```
|
4
7
|
|
5
|
-
|
6
|
-
|
8
|
+
Block "Spring" is visible. It requires "(Winter)".
|
9
|
+
```bash :Spring +(Winter)
|
10
|
+
echo It is now Spring
|
7
11
|
```
|
8
12
|
|
9
|
-
|
10
|
-
|
13
|
+
Block "(Summer)" is hidden. It requires "(Winter)" and "Spring"
|
14
|
+
```bash :(Summer) +Spring +(Winter)
|
15
|
+
echo It is now Summer
|
11
16
|
```
|
12
17
|
|
13
|
-
|
14
|
-
|
18
|
+
Block "Fall" is visible. It requires "(Summer)" which itself requires the rest.
|
19
|
+
```bash :Fall +(Summer)
|
20
|
+
echo It is now Fall
|
15
21
|
```
|
16
22
|
|
17
|
-
|
18
|
-
|
23
|
+
Block "Sunsear" is visible. It requires "Frostfall" which does not exist and triggers an unmet dependency error.
|
24
|
+
```bash :Sunsear +Frostfall
|
19
25
|
```
|
data/examples/indent.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
This document demonstrates content is indented to match the source.
|
2
|
+
|
1
3
|
This is a concise guide for using Bash commands to find and list recent files in a Linux system. The commands are safe to use and can help you quickly locate recently modified or accessed files.
|
2
4
|
|
3
5
|
1. **List Recently Modified Files**:
|
data/examples/index.md
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
v2024-02-06
|
2
|
+
|
3
|
+
```link
|
4
|
+
file: examples/colors.md
|
5
|
+
```
|
6
|
+
```link
|
7
|
+
file: examples/document_options.md
|
8
|
+
```
|
9
|
+
```link
|
10
|
+
file: examples/duplicate_block.md
|
11
|
+
```
|
12
|
+
```link
|
13
|
+
file: examples/import0.md
|
14
|
+
```
|
15
|
+
```link
|
16
|
+
file: examples/import1.md
|
17
|
+
```
|
18
|
+
```link
|
19
|
+
file: examples/include.md
|
20
|
+
```
|
21
|
+
```link
|
22
|
+
file: examples/indent.md
|
23
|
+
```
|
24
|
+
```link
|
25
|
+
file: examples/linked.md
|
26
|
+
```
|
27
|
+
```link
|
28
|
+
file: examples/linked1.md
|
29
|
+
```
|
30
|
+
```link
|
31
|
+
file: examples/linked2.md
|
32
|
+
```
|
33
|
+
```link
|
34
|
+
file: examples/linked3.md
|
35
|
+
```
|
36
|
+
```link
|
37
|
+
file: examples/llm.md
|
38
|
+
```
|
39
|
+
```link
|
40
|
+
file: examples/load1.sh
|
41
|
+
```
|
42
|
+
```link
|
43
|
+
file: examples/load2.sh
|
44
|
+
```
|
45
|
+
```link
|
46
|
+
file: examples/nickname.md
|
47
|
+
```
|
48
|
+
```link
|
49
|
+
file: examples/opts.md
|
50
|
+
```
|
51
|
+
```link
|
52
|
+
file: examples/pass-through.md
|
53
|
+
```
|
54
|
+
```link
|
55
|
+
file: examples/plant.md
|
56
|
+
```
|
57
|
+
```link
|
58
|
+
file: examples/port.md
|
59
|
+
```
|
60
|
+
```link
|
61
|
+
file: examples/title.md
|
62
|
+
```
|
63
|
+
```link
|
64
|
+
file: examples/vars.md
|
65
|
+
```
|
66
|
+
```link
|
67
|
+
file: examples/wrap.md
|
68
|
+
```
|
data/examples/linked.md
CHANGED
@@ -5,6 +5,11 @@ pause_after_script_execution: false
|
|
5
5
|
user_must_approve: false
|
6
6
|
```
|
7
7
|
|
8
|
+
```link :link_with_vars_with_spaces
|
9
|
+
vars:
|
10
|
+
test: "1 2 3"
|
11
|
+
```
|
12
|
+
|
8
13
|
::: Set variable ALPHA in a Vars block
|
9
14
|
For each environment variable named in block,
|
10
15
|
append an inherited line that assigns the variable the specified value.
|
@@ -99,3 +104,29 @@ block: display_TIMESTAMP
|
|
99
104
|
source bin/colorize_env_vars.sh
|
100
105
|
colorize_env_vars '' TIMESTAMP
|
101
106
|
```
|
107
|
+
|
108
|
+
::: Load file matching glob pattern into inherited lines
|
109
|
+
Load (do not evaluate) and append to inherited lines.
|
110
|
+
```link :load_glob_load1*
|
111
|
+
load: examples/load1*.sh
|
112
|
+
```
|
113
|
+
```link :load_glob_load*
|
114
|
+
load: examples/load*.sh
|
115
|
+
```
|
116
|
+
```link :load_glob_fail
|
117
|
+
load: examples/fail*
|
118
|
+
```
|
119
|
+
```link :load_glob_with_format
|
120
|
+
load: "%{home}/examples/load*.sh"
|
121
|
+
```
|
122
|
+
|
123
|
+
```link :save_glob_load*
|
124
|
+
save: examples/*.sh
|
125
|
+
```
|
126
|
+
|
127
|
+
```link :save_glob_*
|
128
|
+
save: examples/*.sh
|
129
|
+
```
|
130
|
+
```link :load_glob_*
|
131
|
+
load: examples/*.sh
|
132
|
+
```
|
data/examples/llm.md
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
1. show practical examples for three important Bash commands.
|
2
|
+
2. the commands must rely only on resources created and deleted in the example
|
3
|
+
|
4
|
+
Let's create practical examples for three important Bash commands where all resources are created and deleted within the examples. The commands we'll use are `touch` (to create a file), `echo` (to write to a file), and `rm` (to delete a file).
|
5
|
+
|
6
|
+
### 1. `touch` - Create an Empty File
|
7
|
+
|
8
|
+
**Purpose**: `touch` is used to create an empty file or update the timestamp of an existing file.
|
9
|
+
|
10
|
+
**Example**: Create an empty file named `example.txt`.
|
11
|
+
|
12
|
+
```bash
|
13
|
+
touch example.txt
|
14
|
+
```
|
15
|
+
|
16
|
+
### 2. `echo` - Write to a File
|
17
|
+
|
18
|
+
**Purpose**: `echo` is used to display a line of text. Combined with redirection, it can write text to a file.
|
19
|
+
|
20
|
+
**Example**: Write "Hello, world!" to `example.txt`.
|
21
|
+
|
22
|
+
```bash
|
23
|
+
echo "Hello, world!" > example.txt
|
24
|
+
```
|
25
|
+
|
26
|
+
### 3. `rm` - Remove a File
|
27
|
+
|
28
|
+
**Purpose**: `rm` is used to remove files or directories.
|
29
|
+
|
30
|
+
**Example**: Delete the `example.txt` file.
|
31
|
+
|
32
|
+
```bash
|
33
|
+
rm example.txt
|
34
|
+
```
|
35
|
+
|
36
|
+
**Combined Script**: To see all these commands in action, you can create a script that executes them sequentially:
|
37
|
+
|
38
|
+
```bash
|
39
|
+
#!/bin/bash
|
40
|
+
|
41
|
+
# Create an empty file
|
42
|
+
touch example.txt
|
43
|
+
|
44
|
+
# Write text to the file
|
45
|
+
echo "Hello, world!" > example.txt
|
46
|
+
|
47
|
+
# Display the file content
|
48
|
+
cat example.txt
|
49
|
+
|
50
|
+
# Remove the file
|
51
|
+
rm example.txt
|
52
|
+
```
|
53
|
+
|
54
|
+
**Note**: After this script runs, `example.txt` is created, written to, displayed, and then deleted, ensuring that no external resources are used or left behind.
|
data/lib/find_files.rb
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
# Example:
|
23
23
|
# find_files('version.rb', ['lib/**', 'spec'])
|
24
24
|
# # This might return file paths like ['lib/markdown_exec/version.rb', 'spec/version_spec.rb'].
|
25
|
-
def find_files(pattern, paths)
|
25
|
+
def find_files(pattern, paths = ['', Dir.pwd])
|
26
26
|
matched_files = []
|
27
27
|
|
28
28
|
paths.each do |path_with_wildcard|
|
@@ -65,7 +65,6 @@ class TestFindFiles < Minitest::Test
|
|
65
65
|
expected_files = [
|
66
66
|
'lib/cli.rb',
|
67
67
|
'lib/colorize.rb',
|
68
|
-
'lib/dev/llm.rb',
|
69
68
|
'lib/dev/watchfile.sh',
|
70
69
|
'lib/markdown_exec.rb',
|
71
70
|
'lib/markdown_exec/version.rb'
|