bashly 0.2.3 → 0.2.4

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: d40ad6e14ab17c88a939cea3be81f4b72fe8383021478d94c93328c4842fb395
4
- data.tar.gz: 4cb84c229411360da7633dd4ad4a15bb53bfdf49fba81e82aecbf88ec3422d72
3
+ metadata.gz: 30efdcbeb1d466ddb9a273e1faee68a2f2a2d4290d75e6ea405e594c60cf029d
4
+ data.tar.gz: 637e95e22f679ade3483129a473c3cb912c16db6c976a6eb49d47921ab2fd4c9
5
5
  SHA512:
6
- metadata.gz: cb14645de6f614ce24393820591f6917bd92a7c41c48f14456b789183648c8031653c0304f8e59a2c43fecd7a4f0ed0e9ab4cf6a5092f0e5bd742de157af7b0c
7
- data.tar.gz: b1b9fca567512ade4957a9b484d853b871f2c2edbefb267fc0c8fdbea8e5c2b1c5792cc011e04b60d07dc9e09b62996e18c826fd67902d28549e505bce8c30ce
6
+ metadata.gz: 6bfd470d14131da08363c8b2f65412c09487927213a1ce2afdef0d1ebf06f3c655718d55275baed2502bd6a4f7f9c5ed723f1970e56d196b5d42585d0e84dd63
7
+ data.tar.gz: b203ffe70e063a58f0e0fd3a0bfd4d5fff42ac4a9e23aaaa18ea68a89c2fd204a4aafb06fc13b23bf21084283b487fb207c84f46610242056be582e456283f41
data/README.md CHANGED
@@ -39,12 +39,13 @@ programming language.
39
39
 
40
40
  Bahsly is responsible for:
41
41
 
42
+ - Generating a **single, standalone bash script**.
42
43
  - Generating **usage texts** and help screens, showing your tool's arguments,
43
44
  flags and subcommands (works for subcommands also).
44
45
  - Parsing the user's command line and extracting:
45
46
  - Optional or required **positional arguments**.
46
47
  - Optional or required **option flags** (with or without flag arguments).
47
- - **Subcommands**.
48
+ - **Subcommands** (and sub-subcommands).
48
49
  - Standard flags (like **--help** and **--version**).
49
50
  - Providing you with a place to input your code for each of the functions
50
51
  your tool performs, and merging it back to the final script.
@@ -52,6 +53,7 @@ Bahsly is responsible for:
52
53
  library functions:
53
54
  - **Color output**.
54
55
  - **Config file management** (INI format).
56
+ - **YAML parsing**.
55
57
 
56
58
  Usage
57
59
  --------------------------------------------------
@@ -126,10 +128,11 @@ command and subcommands (under the `commands` definition).
126
128
  # The name of the script or subcommand
127
129
  name: myscript
128
130
 
129
- # An additional, optional name - usually used to denote a one letter
130
- # variation of the command name
131
+ # An additional, optional pattern - usually used to denote a one letter
132
+ # variation of the command name.
133
+ # You can add '*' as suffix, to denote a "starts with" pattern.
131
134
  # Applicable only in subcommands
132
- short: m
135
+ short: m*
133
136
 
134
137
  # The header text to display when using --help
135
138
  # This can have multiple lines. In this case, the first line will be used as
@@ -154,17 +157,17 @@ environment_variable:
154
157
 
155
158
  # Specify the array of subcommands to generate.
156
159
  # Each subcommand will have its own args and flags.
157
- # If this is provided, you cannot provide flags or args for the main script.
160
+ # If this is provided, you cannot specify flags or args.
158
161
  commands:
159
162
  - ...
160
163
 
161
164
  # Specify the array of positional arguments this script needs.
162
- # If this is provided, then you cannot provide commands for the main script.
165
+ # If this is provided, then you cannot specify commands.
163
166
  args:
164
167
  - ...
165
168
 
166
169
  # Specify the array of option flags this script needs.
167
- # If this is provided, then you cannot provide commands for the main script.
170
+ # If this is provided, then you cannot specify commands.
168
171
  flags:
169
172
  - ...
170
173
  ```
@@ -7,6 +7,7 @@ module Bashly
7
7
  usage "bashly add lib [--force]"
8
8
  usage "bashly add config [--force]"
9
9
  usage "bashly add colors [--force]"
10
+ usage "bashly add yaml [--force]"
10
11
  usage "bashly add (-h|--help)"
11
12
 
12
13
  option "-f --force", "Overwrite existing files"
@@ -15,6 +16,7 @@ module Bashly
15
16
  command "lib", "Create the additional lib directory for additional user scripts. All *.sh scripts in this folder will be included in the final bash script."
16
17
  command "config", "Add standard functions for handling INI files to the lib directory."
17
18
  command "colors", "Add standard functions for printing colorful and formatted text to the lib directory."
19
+ command "yaml", "Add standard functions for reading YAML files to the lib directory."
18
20
 
19
21
  environment "BASHLY_SOURCE_DIR", "The path to use for creating the configuration file [default: src]"
20
22
 
@@ -34,6 +36,10 @@ module Bashly
34
36
  safe_copy_lib "colors.sh"
35
37
  end
36
38
 
39
+ def yaml_command
40
+ safe_copy_lib "yaml.sh"
41
+ end
42
+
37
43
  private
38
44
  def safe_copy_lib(libfile)
39
45
  safe_copy asset("templates/lib/#{libfile}"), "#{Settings.source_dir}/lib/#{libfile}"
@@ -54,7 +54,7 @@ module Bashly
54
54
  end
55
55
 
56
56
  def create_master_script
57
- master_script = command.render 'master_script'
57
+ master_script = command.render('master_script').lint
58
58
  File.write master_script_path, master_script
59
59
  FileUtils.chmod "+x", master_script_path
60
60
  say "created !txtgrn!#{master_script_path}"
@@ -24,4 +24,8 @@ class String
24
24
  end * "\n"
25
25
  end
26
26
 
27
+ def lint
28
+ gsub(/\n{2,}/, "\n\n")
29
+ end
30
+
27
31
  end
@@ -5,8 +5,8 @@
5
5
  # Usage:
6
6
  # Use any of the functions below to color or format a portion of a string.
7
7
  #
8
- # echo "before $(red this is red) after"
9
- # echo "before $(green_bold this is green_bold) after"
8
+ # echo "before $(red this is red) after"
9
+ # echo "before $(green_bold this is green_bold) after"
10
10
  #
11
11
  # ---
12
12
 
@@ -10,8 +10,8 @@
10
10
  # ---
11
11
 
12
12
  # Create a new config file.
13
- # There is normally no need to use this fucntion, it is used by othe rfunctions
14
- # as needed.
13
+ # There is normally no need to use this fucntion, it is used by other
14
+ # functions as needed.
15
15
  config_init() {
16
16
  CONFIG_FILE=${CONFIG_FILE:=config.ini}
17
17
  [[ -f "$CONFIG_FILE" ]] || touch "$CONFIG_FILE"
@@ -0,0 +1,35 @@
1
+ # ---
2
+ # YAML parser
3
+ # This file is a part of Bashly standard library
4
+ # Does not support arrays, only hashes
5
+ #
6
+ # Source: https://stackoverflow.com/a/21189044/413924
7
+ #
8
+ # Usage:
9
+ #
10
+ # yaml_load "settings.yml" # print variables
11
+ # yaml_load "settings.yml" "config_" # use prefix
12
+ # eval $(yaml_load "settings.yml") # create variables in scope
13
+ #
14
+ # ---
15
+
16
+ yaml_load() {
17
+ local prefix=$2
18
+ local s='[[:space:]]*' w='[a-zA-Z0-9_]*'
19
+ local fs
20
+
21
+ fs=$(echo @|tr @ '\034')
22
+
23
+ sed -ne "s|^\($s\):|\1|" \
24
+ -e "s|^\($s\)\($w\)$s:${s}[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
25
+ -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" "$1" |
26
+ awk -F"$fs" '{
27
+ indent = length($1)/2;
28
+ vname[indent] = $2;
29
+ for (i in vname) {if (i > indent) {delete vname[i]}}
30
+ if (length($3) > 0) {
31
+ vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
32
+ printf("%s%s%s=\"%s\"\n", "'"$prefix"'",vn, $2, $3);
33
+ }
34
+ }'
35
+ }
@@ -1,3 +1,3 @@
1
1
  module Bashly
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  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: 0.2.3
4
+ version: 0.2.4
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: 2019-11-24 00:00:00.000000000 Z
11
+ date: 2019-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -85,6 +85,7 @@ files:
85
85
  - lib/bashly/templates/lib/colors.sh
86
86
  - lib/bashly/templates/lib/config.sh
87
87
  - lib/bashly/templates/lib/sample_function.sh
88
+ - lib/bashly/templates/lib/yaml.sh
88
89
  - lib/bashly/templates/minimal.yml
89
90
  - lib/bashly/templates/strings.yml
90
91
  - lib/bashly/version.rb