sym 2.2.0 → 2.2.1

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
  SHA1:
3
- metadata.gz: d0d5e823703d09fb437c0b9f8e11b55dd1a0e204
4
- data.tar.gz: 42f5145f34d3d0779422e3c2511d35580d85c033
3
+ metadata.gz: dba3a8013e135db50a8294dd619302d1c10b8109
4
+ data.tar.gz: 28cc2c0edbff0ecec89e265109c11e3c9c67da01
5
5
  SHA512:
6
- metadata.gz: 3b007deff2a49f8a31d451fd433eebc7cca83e8ff28a733b8d37a2b34ca5288460e93aa3e8b078442e6c680296fc19b1152f5deac81c2775acc57f79710478b1
7
- data.tar.gz: 1c89daa41bbf54b754e203a65720f452e96546e79825924f8d670f11ef392e8c04ca34a85a706b3aba4c6f081870f08189239b3a5fdf7c2a473fec1e51ca47bc
6
+ metadata.gz: f78ca029db09962c423fb57e38c86e03b8417977714c6e087a80b31f0b9f6392ec7c6f2f8ebd1c41d9b7d75c82e0755f4ac37fd68393090c2a2eb17a81909d25
7
+ data.tar.gz: 1d6c15f15761ceb1187e45455408a27b371a15a798d139a840614427fd52ac0a4574c5475d83a7d483e2b3f4d6e4c321cdc5beddbd89d6e943066f9972d9c984
@@ -1,28 +1,90 @@
1
- **2.1.0** (January 22, 2017)
1
+ # Change Log
2
2
 
3
- * Added two sub-commands to handle updating and moving existing keys:
4
- - adding a password to an existing key
5
- - adding an existing key to the keychain.
6
-
7
- To add a password to an existing key:
3
+ ## [HEAD](https://github.com/kigster/sym/tree/HEAD)
8
4
 
9
- > `sym [ -k key | -K keyfile | -i | -x <name> ] -p `
5
+ [Changes since the last tag](https://github.com/kigster/sym/compare/v2.2.1...HEAD)
10
6
 
11
- To add existing key to a keychain:
12
-
13
- > `sym [ -k key | -K keyfile | -i ] -x <name> `
7
+ ## [v2.2.1](https://github.com/kigster/sym/tree/v2.2.1) (2017-02-15)
8
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.2.0...v2.2.1)
14
9
 
15
- **2.0.3** (January 22, 2017)
10
+ * [`53bb95f`](https://github.com/kigster/sym/commit/53bb95f) Ability to read flags from SYM_ARGS environment
11
+ * [`c3d0b86`] (https://github.com/kigster/sym/commit/c3d0b86) Switched to using bash-completion-style syntax
12
+ * [`9368bf5`] (https://github.com/kigster/sym/commit/9368bf5) Adding CHANGELOG.md
16
13
 
17
- * Removed clipboard copy functionality, as it's easy to achieve with `pbcopy`.
18
- * Removed natural language processing stuff
19
- * Removed `keychain-del` feature
20
- * Refactored bash-completion to install a separate ~/.sym.completion file
21
- * Updated README
14
+ ## [v2.2.0](https://github.com/kigster/sym/tree/v2.2.0) (2017-02-14)
15
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.1.2...v2.2.0)
22
16
 
23
- **2.0.2** (January 20, 2017)
17
+ **API CHANGE**:
24
18
 
25
- * Added bash-completion installation
26
- * Fixed a bug where a newline was added to file redirects, making
27
- redirecting encrypted data or keys unusable.
19
+ * Turn off password caching by default, enable with `-C`
20
+ * `-P < memcached | drb >` specifies caching mechanism
21
+
22
+ **Changes:**
23
+
24
+ * [`b470245`](https://github.com/kigster/sym/commit/b470245/) Turn off password caching by default, enable with `-C`, timeout with `-T`
25
+ * [`ca3a903`](https://github.com/kigster/sym/commit/ca3a903/) Adding -C flag
26
+ * [`949b2ae`](https://github.com/kigster/sym/commit/949b2ae/) Updating README
27
+ * [`513f849`](https://github.com/kigster/sym/commit/513f849/) Adding MemCached provider; ability to specify provider with `-P`
28
+ * [`571e668`](https://github.com/kigster/sym/commit/571e668/) Split up Coin off to a cache provider
29
+ * [`7afeccc`](https://github.com/kigster/sym/commit/7afeccc/) Better messaging when password server times out
30
+ * [`cf226f9`](https://github.com/kigster/sym/commit/cf226f9/) Implement fast timeout for password caching providers, fixes [\#3](https://github.com/kigster/sym/issues/3)
31
+
32
+ **Closed Issues:**
33
+
34
+ - make sure drb is not already running/handle exception [\#3](https://github.com/kigster/sym/issues/3)
35
+
36
+
37
+
38
+ ## [v2.1.2](https://github.com/kigster/sym/tree/v2.1.2) (2017-02-11)
39
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.1.1...v2.1.2)
40
+
41
+ * [`dce9b05`](https://github.com/kigster/sym/commit/dce9b05/) Updating gems summary/desription; bump version 2.1.2
42
+ * [`ba60592`](https://github.com/kigster/sym/commit/ba60592/) Adding TOC
43
+ * [`7b04ea9`](https://github.com/kigster/sym/commit/7b04ea9/) Updating README for the gem;
44
+ * [`52efdb4`](https://github.com/kigster/sym/commit/52efdb4/) Updating the 3.0 usage
45
+
46
+ ## [v2.1.1](https://github.com/kigster/sym/tree/v2.1.1) (2017-02-05)
47
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.1.0...v2.1.1)
48
+
49
+ * [`d503c1c`](https://github.com/kigster/sym/commit/d503c1c/) Fix bug with -E flag exploding; version 2.1.1
50
+
51
+ ## [v2.1.0](https://github.com/kigster/sym/tree/v2.1.0) (2017-01-23)
52
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.0.3...v2.1.0)
53
+
54
+ * [`a7f3239`](https://github.com/kigster/sym/commit/a7f3239/) Proposed CLI for version 3.0
55
+ * [`3a706ce`](https://github.com/kigster/sym/commit/3a706ce/) Rename Command to BaseCommand; use require
56
+ * [`77936ee`](https://github.com/kigster/sym/commit/77936ee/) Existing keys can be password-prot, and keychained
57
+
58
+ ## [v2.0.3](https://github.com/kigster/sym/tree/v2.0.3) (2017-01-22)
59
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.0.2...v2.0.3)
60
+
61
+ * [`342ecb7`](https://github.com/kigster/sym/commit/342ecb7/) Disable some checks.
62
+ * [`984ec27`](https://github.com/kigster/sym/commit/984ec27/) Adding CHANGELOG.
63
+ * [`4fc7983`](https://github.com/kigster/sym/commit/4fc7983/) Removing clipboard copy feature: its easy enough.
64
+ * [`4f38aa5`](https://github.com/kigster/sym/commit/4f38aa5/) Removing unnecessary file.
65
+ * [`4ff0412`](https://github.com/kigster/sym/commit/4ff0412/) Updating README with latest help
66
+ * [`787116c`](https://github.com/kigster/sym/commit/787116c/) rm NLP module, rm keychain del, add bash-comp.
67
+ * [`bf70e30`](https://github.com/kigster/sym/commit/bf70e30/) Update repo token
68
+
69
+ ## [v2.0.2](https://github.com/kigster/sym/tree/v2.0.2) (2017-01-21)
70
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.0.1...v2.0.2)
71
+
72
+ * [`c586299`](https://github.com/kigster/sym/commit/c586299/) Better gem description; Bump version
73
+
74
+ ## [v2.0.1](https://github.com/kigster/sym/tree/v2.0.1) (2017-01-20)
75
+ [Full Changelog](https://github.com/kigster/sym/compare/v2.0.0...v2.0.1)
76
+
77
+ * [`96add73`](https://github.com/kigster/sym/commit/96add73/) Travis teset coverage, etc
78
+ * [`8f0209e`](https://github.com/kigster/sym/commit/8f0209e/) Updating README badges
79
+ * [`0c6a612`](https://github.com/kigster/sym/commit/0c6a612/) Only use github for coin on OSX
80
+ * [`3afe846`](https://github.com/kigster/sym/commit/3afe846/) Fixed a bug with >> redirects adding newline
81
+ * [`9409cdb`](https://github.com/kigster/sym/commit/9409cdb/) Fixing bash completion for sym.
82
+ * [`7cdb062`](https://github.com/kigster/sym/commit/7cdb062/) Add .ruby-version to gitignore
83
+ * [`488cd73`](https://github.com/kigster/sym/commit/488cd73/) Using a fork of coin from github
84
+ * [`a13eb55`](https://github.com/kigster/sym/commit/a13eb55/) Adding .DS_Store to .gitignore
85
+
86
+ ## [v2.0.0](https://github.com/kigster/sym/tree/v2.0.0) (2016-11-11)
87
+ [Full Changelog](https://github.com/kigster/sym/compare/v1.1.2...v2.0.0)
88
+
89
+ Commits between version 1.1.2 and 2.0.0 were not tracked in the changelog.
28
90
 
data/README.md CHANGED
@@ -68,13 +68,18 @@ BAhTOh1TeW06OkRhdGE6OldyYXBFefDFFD.....
68
68
 
69
69
  ❯ sym -dx my-new-key -f secret.enc -C
70
70
  My secret data
71
+
72
+ # Lets now save common flags in the SYM_ARGS bash variable:
73
+ ❯ export SYM_ARGS="-x my-new-key -C"
74
+ ❯ sym -d -f secret.enc
75
+ My secret data
71
76
  ```
72
77
 
73
78
  The line that says `Coin::Vault listening at: druby://127.0.0.1:24924` is the indication that the local dRB server used for caching passwords has been started. Password caching is off by default, but is enabled with `-C` flag. In the example above, the decryption step fetched the password from the cache, and so the user was not required to re-enter the password.
74
79
 
75
80
  __Direct Editing Encrypted Files__
76
81
 
77
- Instead of decrypting data anytime you need to change it, you can use the shortcut flag `-t` (for "edi__T__"), which decrypts your data into a temporary file, automatically opening it with an `$EDITOR`.
82
+ Instead of decrypting data anytime you need to change it, you can use the shortcut flag `-t` (for "edi**t**"), which decrypts your data into a temporary file, automatically opening it with an `$EDITOR`.
78
83
 
79
84
  Example:
80
85
 
@@ -209,27 +214,56 @@ In order to control password caching, the following flags are available:
209
214
  * `-T seconds` sets the expiration for cached passwords
210
215
  * `-P memcached | drb` controls which of the providers is used. Without this flag, *sym* auto-detects caching provider by first checking for `memcached`, and then starting the `dRB` server.
211
216
 
212
- #### Encryption and Decryption
217
+ #### Saving Common Flags in an Environment Variable
218
+
219
+ You can optionally store frequently used flags for `sym` in the `SYM_ARGS` environment variable. For example, to always cache passwords, and to always use the same encryption key from the keychain named "production", set the following in your `~/.bashrc`:
220
+
221
+ ```
222
+ export SYM_ARGS="-x production -C"
223
+ ```
224
+
225
+ This will always be appended to the command line, and so to encrypt/decrypt anything with password caching enabled and using that particular key, you would simply type:
226
+
227
+ ```bash
228
+ # -x production -C are added from SYM_ARGS
229
+ sym -ef file -o file.enc
230
+
231
+ # And to decrypt:
232
+ sym -df file.enc -o file.original
233
+
234
+ # Or edit the encrypted file:
235
+ sym -tf file.enc
236
+ ```
237
+
238
+ #### Complete CLI Usage
213
239
 
214
240
  This may be a good time to take a look at the full help message for the `sym` tool, shown naturally with a `-h` or `--help` option.
215
241
 
216
242
  ```
217
- Sym (2.2.0) – encrypt/decrypt data with a private key
243
+ Sym (2.2.1) – encrypt/decrypt data with a private key
218
244
 
219
245
  Usage:
220
- # Generate a new key:
246
+ # Generate a new key...
221
247
  sym -g [ -p ] [ -x keychain | -o keyfile | -q | ]
222
248
 
223
- # To specify a key for an operation use any one of:
249
+ # To specify a key for an operation use one of...
224
250
  <key-spec> = -k key | -K file | -x keychain | -i
225
251
 
226
- # Encrypt/Decrypt to STDOUT or output file
252
+ # Encrypt/Decrypt to STDOUT or an output file
227
253
  sym -e <key-spec> [-f <file> | -s <string>] [-o <file>]
228
254
  sym -d <key-spec> [-f <file> | -s <string>] [-o <file>]
229
255
 
230
256
  # Edit an encrypted file in $EDITOR
231
257
  sym -t <key-spec> -f <file> [ -b ]
232
258
 
259
+ # Specify any common flags in the BASH variable:
260
+ export SYM_ARGS="-x staging -C"
261
+
262
+ # And now encrypt without having to specify key location:
263
+ sym -e -f <file>
264
+ # May need to disable SYM_ARGS with -M, eg for help:
265
+ sym -h -M
266
+
233
267
  Modes:
234
268
  -e, --encrypt encrypt mode
235
269
  -d, --decrypt decrypt mode
@@ -248,8 +282,7 @@ Read existing private key from:
248
282
  Password Cache:
249
283
  -C, --cache-password enable the cache (off by default)
250
284
  -T, --cache-for [seconds] to cache the password for
251
- -P, --cache-provider [provider] type of cache, one of:
252
- [ memcached, drb ]
285
+ -P, --cache-provider [provider] type of cache, one of memcached, drb
253
286
 
254
287
  Data to Encrypt/Decrypt:
255
288
  -s, --string [string] specify a string to encrypt/decrypt
@@ -264,6 +297,7 @@ Flags:
264
297
  -q, --quiet do not print to STDOUT
265
298
  -V, --version print library version
266
299
  -N, --no-color disable color output
300
+ -M, --no-environment disable reading flags from SYM_ARGS
267
301
 
268
302
  Utility:
269
303
  -a, --bash-completion [file] append shell completion to a file
@@ -271,7 +305,6 @@ Utility:
271
305
  Help & Examples:
272
306
  -E, --examples show several examples
273
307
  -h, --help show help
274
-
275
308
  ```
276
309
 
277
310
  ### CLI Usage Examples
@@ -5,28 +5,75 @@
5
5
  # © 2015-2016, Konstantin Gredeskoul, https://github.com/kigster/sym
6
6
  # MIT LICENSE
7
7
  #
8
+ [[ -z "$(type _filedir 2>/dev/null)" ]] && {
9
+ _filedir ()
10
+ {
11
+ local i IFS='
12
+ ' xspec;
13
+ _tilde "$cur" || return 0;
14
+ local -a toks;
15
+ local quoted tmp;
16
+ _quote_readline_by_ref "$cur" quoted;
17
+ toks=(${toks[@]-} $(
18
+ compgen -d -- "$cur" | {
19
+ while read -r tmp; do
20
+ # TODO: I have removed a "[ -n $tmp ] &&" before 'printf ..',
21
+ # and everything works again. If this bug suddenly
22
+ # appears again (i.e. "cd /b<TAB>" becomes "cd /"),
23
+ # remember to check for other similar conditionals (here
24
+ # and _filedir_xspec()). --David
25
+ printf '%s\n' $tmp
26
+ done
27
+ }
28
+ ));
29
+ if [[ "$1" != -d ]]; then
30
+ [[ ${BASH_VERSINFO[0]} -ge 4 ]] && xspec=${1:+"!*.@($1|${1^^})"} || xspec=${1:+"!*.@($1|$(printf %s $1 | tr '[:lower:]' '[:upper:]'))"};
31
+ toks=(${toks[@]-} $( compgen -f -X "$xspec" -- $quoted));
32
+ fi;
33
+ [ ${#toks[@]} -ne 0 ] && _compopt_o_filenames;
34
+ COMPREPLY=("${COMPREPLY[@]}" "${toks[@]}")
35
+ }
36
+ }
8
37
 
9
- _sym() {
10
- local SYM_OPTS SYM_POINTS cur prev
11
-
12
- cur="${COMP_WORDS[COMP_CWORD]}"
13
- prev="${COMP_WORDS[COMP_CWORD-1]}"
38
+ _sym()
39
+ {
40
+ local cur prev shell i path
14
41
 
15
42
  COMPREPLY=()
43
+ cur=`_get_cword`
44
+ prev=${COMP_WORDS[COMP_CWORD-1]}
16
45
 
17
- #[[ $COMP_CWORD == 1 ]] && SYM_COMP_OPTIONS="${SYM_COMP_OPTIONS} ${SYM_COMMANDS}"
18
- if [[ $prev =~ "-f" || $prev =~ "-o" || $prev =~ "-K" || $prev == "--keyfile" ]] ; then
19
- SYM_COMP_OPTIONS="$(find . -type f -depth 1 | sed 's#^.\/##g')"
20
- elif [[ "${cur}" == '-' || "${cur}" == -* ]] ; then
21
- export DICT_SYM_COMP_OPTIONS=${DICT_SYM_COMP_OPTIONS:-$(sym --dictionary | sed -E 's/ /\n/g')}
22
- SYM_COMP_OPTIONS=${DICT_SYM_COMP_OPTIONS}
23
- else
24
- SYM_COMP_OPTIONS="$(find . -type f -depth 1 -name "${prev}*" | sed 's#^.\/##g')"
25
- fi
46
+ _expand || return 0
26
47
 
27
- COMPREPLY=( $(compgen -W "${SYM_COMP_OPTIONS}" -- ${cur}) )
28
- return 0
29
- }
48
+ case "$prev" in
49
+ --@(key-file|file|output|))
50
+ _filedir
51
+ return 0
52
+ ;;
53
+ -@(f|K|o))
54
+ _filedir
55
+ return 0
56
+ ;;
57
+ esac
58
+
59
+ case "$cur" in
60
+ -*)
61
+ export DICT_SYM_COMP_OPTIONS=${DICT_SYM_COMP_OPTIONS:-$(sym --dictionary | sed -E 's/ /\n/g')}
62
+ COMPREPLY=( $( compgen -W "$DICT_SYM_COMP_OPTIONS" -- "$cur" ))
63
+ ;;
64
+ *)
65
+ _filedir
66
+ ;;
67
+ esac
30
68
 
31
- complete -F _sym sym
69
+ return 0
70
+ } &&
71
+ complete -F _sym $nospace $filenames sym
32
72
 
73
+ # Local variables:
74
+ # mode: shell-script
75
+ # sh-basic-offset: 4
76
+ # sh-indent-comment: t
77
+ # indent-tabs-mode: nil
78
+ # End:
79
+ # ex: ts=4 sw=4 et filetype=sh
data/lib/sym.rb CHANGED
@@ -11,7 +11,7 @@ Sym::Configuration.configure do |config|
11
11
  config.compression_enabled = true
12
12
  config.compression_level = Zlib::BEST_COMPRESSION
13
13
 
14
- config.password_cache_timeout = 300
14
+ config.password_cache_timeout = 300
15
15
 
16
16
  # When nil is selected, providers are auto-detected.
17
17
  config.password_cache_default_provider = nil
@@ -131,14 +131,14 @@ module Sym
131
131
  end
132
132
  end
133
133
 
134
- COMPLETION_FILE = '.sym.completion'
135
- COMPLETION_PATH = "#{ENV['HOME']}/#{COMPLETION_FILE}"
134
+ COMPLETION_FILE = '.sym.completion'.freeze
135
+ COMPLETION_PATH = "#{ENV['HOME']}/#{COMPLETION_FILE}".freeze
136
+ LOGGER = Logger.new(nil).freeze # empty logger
137
+ ENV_ARGS_VARIABLE_NAME = 'SYM_ARGS'.freeze
136
138
 
137
- BASH_COMPLETION = {
139
+ BASH_COMPLETION = {
138
140
  file: File.expand_path('../../bin/sym.completion', __FILE__),
139
141
  script: "[[ -f '#{COMPLETION_PATH}' ]] && source '#{COMPLETION_PATH}'",
140
- }
141
-
142
- LOGGER = Logger.new(nil) # empty logger
142
+ }.freeze
143
143
  end
144
144
 
@@ -61,8 +61,11 @@ module Sym
61
61
  attr_accessor :opts, :application, :outputs, :output_proc
62
62
 
63
63
  def initialize(argv_original)
64
+ env_args = ENV[ENV_ARGS_VARIABLE_NAME]
64
65
  begin
65
- argv = argv_original.dup
66
+ argv = argv_original.dup
67
+ argv << env_args.split(' ') if env_args && !(argv.include?('-M') or argv.include?('--no-environment'))
68
+ argv.flatten!
66
69
  dict = argv.delete('--dictionary')
67
70
  self.opts = parse(argv)
68
71
  command_dictionary if dict
@@ -6,19 +6,28 @@ module Sym
6
6
 
7
7
  o.banner = "Sym (#{Sym::VERSION}) – encrypt/decrypt data with a private key\n".bold.white
8
8
  o.separator 'Usage:'.yellow
9
- o.separator ' # Generate a new key:'.dark
9
+ o.separator ' # Generate a new key...'.dark
10
10
  o.separator ' sym -g '.green.bold + '[ -p ] [ -x keychain | -o keyfile | -q | ] '.green
11
11
  o.separator ''
12
- o.separator ' # To specify a key for an operation use any one of:'.dark
12
+ o.separator ' # To specify a key for an operation use one of...'.dark
13
13
  o.separator ' ' + key_spec + ' = -k key | -K file | -x keychain | -i '.green.bold
14
14
  o.separator ''
15
- o.separator ' # Encrypt/Decrypt to STDOUT or output file '.dark
15
+ o.separator ' # Encrypt/Decrypt to STDOUT or an output file '.dark
16
16
  o.separator ' sym -e '.green.bold + key_spec + ' [-f <file> | -s <string>] [-o <file>] '.green
17
17
  o.separator ' sym -d '.green.bold + key_spec + ' [-f <file> | -s <string>] [-o <file>] '.green
18
18
  o.separator ' '
19
19
  o.separator ' # Edit an encrypted file in $EDITOR '.dark
20
20
  o.separator ' sym -t '.green.bold + key_spec + ' -f <file> [ -b ]'.green.bold
21
21
 
22
+ o.separator ' '
23
+ o.separator ' # Specify any common flags in the BASH variable:'.dark
24
+ o.separator ' export SYM_ARGS="'.green + '-x staging -C'.bold.green + '"'.green
25
+ o.separator ' '
26
+ o.separator ' # And now encrypt without having to specify key location:'.dark
27
+ o.separator ' sym -e '.green.bold '-f <file>'.green.bold
28
+ o.separator ' # May need to disable SYM_ARGS with -M, eg for help:'.dark
29
+ o.separator ' sym -h -M '.green.bold
30
+
22
31
  o.separator ' '
23
32
  o.separator 'Modes:'.yellow
24
33
  o.bool '-e', '--encrypt', ' encrypt mode'
@@ -61,6 +70,7 @@ module Sym
61
70
  o.bool '-q', '--quiet', ' do not print to STDOUT'
62
71
  o.bool '-V', '--version', ' print library version'
63
72
  o.bool '-N', '--no-color', ' disable color output'
73
+ o.bool '-M', '--no-environment', ' disable reading flags from SYM_ARGS'
64
74
 
65
75
  o.separator ' '
66
76
  o.separator 'Utility:'.yellow
@@ -1,5 +1,5 @@
1
1
  module Sym
2
- VERSION = '2.2.0'
2
+ VERSION = '2.2.1'
3
3
  DESCRIPTION = <<-eof
4
4
  Sym is a command line utility and a Ruby API that makes it trivial to encrypt and decrypt
5
5
  sensitive data. Unlike many other existing encryption tools, sym focuses on usability and
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sym
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Gredeskoul
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-14 00:00:00.000000000 Z
11
+ date: 2017-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2