require 'colored2' require 'sym/app/commands/base_command' module Sym module App module Commands class ShowExamples < BaseCommand required_options :examples try_after :show_version def execute output = [] output << example(comment: 'generate a new private key into an environment variable:', command: 'export mykey=$(sym -g)', echo: 'echo $mykey', result: '75ngenJpB6zL47/8Wo7Ne6JN1pnOsqNEcIqblItpfg4='.green) output << example(comment: 'generate a new key with a cached password & save to the default key file', command: "sym -gcpqo #{Sym.default_key_file}", echo: "New Password : #{'••••••••••'.green}", result: "Confirm Password : #{'••••••••••'.green}") output << example(comment: 'encrypt a plain text string with default key file, and immediately decrypt it', command: "sym -es #{'"secret string"'.bold.yellow} | sym -d", result: 'secret string'.green) output << example(comment: 'encrypt secrets file using key in the environment, and --negate option:', command: 'export PRIVATE_KEY="75ngenJpB6zL47/8Wo7Ne6JN1pnOsqNEcIqblItpfg4="', echo: 'sym -ck PRIVATE_KEY -n secrets.yml', result: ''.green) output << example(comment: 'encrypt a secrets file using the key in the keychain:', command: 'sym -gqx keychain.key', echo: 'sym -ck keychain.key -n secrets.yml', result: 'secret string'.green) output << example(comment: 'encrypt/decrypt sym.yml using the default key file', command: "sym -gcq > #{Sym.default_key_file}", echo: 'sym -n secrets.yml', result: 'sym -df secrets.yml.enc', ) output << example(comment: 'decrypt an encrypted file and print it to STDOUT:', command: 'sym -ck production.key -df secrets.yml.enc') output << example(comment: 'edit an encrypted file in $EDITOR, use default key file, create a backup', command: 'sym -bt secrets.enc', result: ' Private Key: •••••••••••••••••••••••••••••••••••••••••••• Saved encrypted content to sym.enc. Diff: 3c3 '.white.dark + '# (c) 2015 Konstantin Gredeskoul. All rights reserved.'.red.bold + ' ---' + ' # (c) 2016 Konstantin Gredeskoul. All rights reserved.'.green.bold) if Sym::App.osx? output << example(comment: 'generate a new password-encrypted key, save it to your Keychain:', command: 'sym -gpcx staging.key') output << example(comment: 'use the new key to encrypt a file:', command: 'sym -e -c -k staging.key -n etc/passwords.enc') output << example(comment: 'use the new key to inline-edit the encrypted file:', command: 'sym -k mykey -t sym.yml.enc') end output.flatten.compact.join("\n") end def example(comment: nil, command: nil, echo: nil, result: nil) out = [] out << "# #{comment}".white.dark.italic if comment out << command if command out << echo if echo out << result if result out << '—'*80 end end end end end