bashly 0.4.0 → 0.4.1rc1

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: 14ee3d9cf49b4497ffbb7e374894cc0cfe18e1a1493a58c638cf4fd8896f30e2
4
- data.tar.gz: 18dd37e6cfc3efd1f3c3d103f943e5ba8db4b414b2b26bed1bb096728c40cd1d
3
+ metadata.gz: e31810f90eb5199f74dd9fd0dc0aedfb4bfd5dd4f38bc4e36473ab6c3e4f10d2
4
+ data.tar.gz: 5de458e2eea4ec796e44a67cddeabaf848ef069ec2d37ad7ddb1f3cc660bad27
5
5
  SHA512:
6
- metadata.gz: 2564fbacc1cd7584e6a0a4da943a25fa70bb51e01a935e18e1c15cb98f3a95e75147f404f858f294df26e18499233e1f82d99f3b344a8464e8ecfccd90c5a0e2
7
- data.tar.gz: d638eff5ef4a4d407b558ba153e199ede105fe34b23ee00b7c8961c843cd8e5ef23e21de1396c92b6f3742f9ec7585f02ac182ccd19329b0008f5c2f5b702cc7
6
+ metadata.gz: 72a03554e17b648efda96ac0208bd4ee8223680717933a71907994ca3a3db3ffd629ea3572fc27143babb6634a65ad2f0b83fdeaeea2ab01d0c4755ea630f674
7
+ data.tar.gz: eb955f344c428e92b82150b95256f3c9d90e3461353bb6b13cad68eeb17bf5e6220991590aa1d797b447ee5c92f414ef9b5042b13569a284595dac0cadd7babd
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  <div align='center'>
2
2
  <img src='logo.svg' width=280>
3
3
 
4
- Bashly - Bash CLI Framework and Generator
5
- ==================================================
4
+ # Bashly - Bash CLI Framework and Generator
6
5
 
7
6
  Create beautiful bash scripts from simple YAML configuration
8
7
 
@@ -16,10 +15,28 @@ Create beautiful bash scripts from simple YAML configuration
16
15
 
17
16
  </div>
18
17
 
18
+ ## Table of Contents
19
+
20
+ - [Table of Contents](#table-of-contents)
21
+ - [Installation](#installation)
22
+ - [Prerequisites](#prerequisites)
23
+ - [What is Bashly](#what-is-bashly)
24
+ - [Usage](#usage)
25
+ - [Using the input arguemnts in your code](#using-the-input-arguemnts-in-your-code)
26
+ - [Examples](#examples)
27
+ - [Sample configuraiton for a script without commands](#sample-configuraiton-for-a-script-without-commands)
28
+ - [Sample configuraiton for a script with commands](#sample-configuraiton-for-a-script-with-commands)
29
+ - [Configuration Reference](#configuration-reference)
30
+ - [Command options](#command-options)
31
+ - [Argument options](#argument-options)
32
+ - [Flag options](#flag-options)
33
+ - [Environment Variable options](#environment-variable-options)
34
+ - [Real World Examples](#real-world-examples)
35
+ - [Contributing / Support](#contributing--support)
36
+
19
37
  ---
20
38
 
21
- Installation
22
- --------------------------------------------------
39
+ ## Installation
23
40
 
24
41
  ```shell
25
42
  $ gem install bashly
@@ -31,15 +48,13 @@ or with Docker:
31
48
  $ alias bashly='docker run --rm -it --volume "$PWD:/app" dannyben/bashly'
32
49
  ```
33
50
 
34
- Prerequisites
35
- --------------------------------------------------
51
+ ## Prerequisites
36
52
 
37
53
  The bash scripts generated by bashly require bash 4 or higher due to heavy
38
54
  use of associative arrays.
39
55
 
40
56
 
41
- What is Bashly
42
- --------------------------------------------------
57
+ ## What is Bashly
43
58
 
44
59
  Bashly is a command line application (written in Ruby) that lets you generate
45
60
  feature-rich bash command line tools.
@@ -68,8 +83,7 @@ Bahsly is responsible for:
68
83
  - **YAML parsing**.
69
84
  - and more.
70
85
 
71
- Usage
72
- --------------------------------------------------
86
+ ## Usage
73
87
 
74
88
  In an empty directory, create a sample configuration file by running
75
89
 
@@ -99,9 +113,46 @@ Finally, edit the files in the `src` folder. Each of your script's commands
99
113
  get their own file. Once you edit, run `bashly generate` again to merge the
100
114
  content from your functions back into the script.
101
115
 
116
+ ### Using the input arguemnts in your code
117
+
118
+ In order to access the parsed arguments in any of your partial scripts, you
119
+ may simply access the `$args` associative array.
120
+
121
+ For example:
122
+
123
+ 1. Generate a minimal configuration with `bashly init --minimal`
124
+ 2. Generate the bash script with `bashly generate`
125
+ 3. Run the script with `./download hello --force`
126
+
127
+ You will notice that all the arguments of the associative array are printed
128
+ on screen. This is done by the `inspect_args` function that was inserted into
129
+ the generated partial script `src/root_command.sh`.
130
+
131
+ You can now access these variables by modifying `sec/root_command.sh` like
132
+ this:
133
+
134
+
135
+ ```bash
136
+ # src/root_command.sh
137
+ source_url=${args[source]}
138
+ force=${args[--force]}
139
+
140
+ if [[ $force ]]; then
141
+ echo "downloading $source_url with --force"
142
+ else
143
+ echo "downloading $source_url"
144
+ fi
145
+ ```
146
+
147
+ After editing the file, run `bashly generate` (or `bashly g` for short) and
148
+ run:
149
+
150
+ ```
151
+ $ ./download a --force
152
+ downloading a with --force
153
+ ```
102
154
 
103
- Examples
104
- --------------------------------------------------
155
+ ## Examples
105
156
 
106
157
  The `bashly.yml` file can be set up to generate two types of scripts:
107
158
 
@@ -129,8 +180,7 @@ See the [examples](examples) folder for more examples.
129
180
 
130
181
 
131
182
 
132
- Configuration Reference
133
- --------------------------------------------------
183
+ ## Configuration Reference
134
184
 
135
185
  The `bashly.yml` configuration file consists of these types:
136
186
 
@@ -210,16 +260,14 @@ set.
210
260
  `required` | Specify if this variable is required.
211
261
 
212
262
 
213
- Real World Examples
214
- --------------------------------------------------
263
+ ## Real World Examples
215
264
 
216
265
  - [Rush][rush] - a Personal Package Manager
217
266
  - [Alf][alf] - a generator for bash aliases and sub-aliases
218
267
  - [git-changelog][git-changelog] - a change log generator
219
268
 
220
269
 
221
- Contributing / Support
222
- --------------------------------------------------
270
+ ## Contributing / Support
223
271
 
224
272
  If you experience any issue, have a question or a suggestion, or if you wish
225
273
  to contribute, feel free to [open an issue][issues].
@@ -1,3 +1,3 @@
1
1
  module Bashly
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1rc1"
3
3
  end
@@ -1,5 +1,10 @@
1
1
  # :command.inspect_args
2
2
  inspect_args() {
3
- echo args:
4
- for k in "${!args[@]}"; do echo "- \${args[$k]} = ${args[$k]}"; done
3
+ readarray -t sorted_keys < <(printf '%s\n' "${!args[@]}" | sort)
4
+ if (( ${#args[@]} )); then
5
+ echo args:
6
+ for k in "${sorted_keys[@]}"; do echo "- \${args[$k]} = ${args[$k]}"; done
7
+ else
8
+ echo args: none
9
+ fi
5
10
  }
@@ -1,7 +1,7 @@
1
1
  # :flag.case
2
2
  <%= aliases.join " | " %> )
3
3
  <%- if arg -%>
4
- if [[ $2 && $2 != -* ]]; then
4
+ if [[ $2 ]]; then
5
5
  args[<%= name %>]="$2"
6
6
  shift
7
7
  shift
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: 0.4.0
4
+ version: 0.4.1rc1
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: 2020-10-21 00:00:00.000000000 Z
11
+ date: 2021-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -138,11 +138,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
138
  version: 2.3.0
139
139
  required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - ">="
141
+ - - ">"
142
142
  - !ruby/object:Gem::Version
143
- version: '0'
143
+ version: 1.3.1
144
144
  requirements: []
145
- rubygems_version: 3.1.4
145
+ rubygems_version: 3.2.3
146
146
  signing_key:
147
147
  specification_version: 4
148
148
  summary: Bash Command Line Tool Generator