Coder Social home page Coder Social logo

sman's Introduction

Sman

Build Status


A command-line snippet manager in Go

asciicast

Install

bash -c "$(curl https://raw.githubusercontent.com/tokozedg/sman/master/install.sh)"

Building

  • Build with Go
go get -v github.com/tokozedg/sman
  • Add to your rc:
[ -f $GOPATH/src/github.com/tokozedg/sman/sman.rc  ] && source $GOPATH/src/github.com/tokozedg/sman/sman.rc
  • Optionally copy demo snippets dir or create yours:
cp -r $GOPATH/src/github.com/tokozedg/sman/snippets ~/

Snippets Examples

#~/snippets/shell.yml

smtp:server: # snippet name
  do: exec # copy or exec
  desc: smtp server in python. Prints mails to stdout
  command: python -m smtpd -n -c DebuggingServer localhost:1025
#~/snippets/shell.yml
# Sman will ask input for placeholder <<port>>
tcpdump:port:
  do: copy
  desc: listen traffic on port
  command: tcpdump -nqt -s 0 -A -i eth0 port <<port>>
#~/snippets/shell.yml
# To execute multiline commands, separate lines by semi-colon
curl:upload:
  do: exec
  command: >
    gpg -c <<file>>;
    curl --upload-file <<file>>.gpg https://transfer.sh/<<file>>.gpg
  • You can export command to a separate file located at: SMAN_SNIPPET_DIR/<Snippet File Name>/<Snippet Name>

Placeholders

<<name(option1,option2)#Description>>
  • Include placeholder anywhere within snippet command
  • Name is the only mandatory field
  • You can have multiple placeholders with the same name. After input all of them will be replaced
  • Use \ to escape comma in options

Usage Examples

Run snippet

s run [-f <FILE>]  [-t <TAG>] <SNIPPET> [placeholder values...] [-cxyp]
~|⇒ s run -f shell curl:upload test.tar.gz -x
----
gpg -c test.tar.gz; curl --upload-file test.tar.gz.gpg https://transfer.sh/test.tar.gz.gpg
----
Execute Snippet? [Y/n]:
~|⇒ s run curl:ip
----
curl canhazip.com
----
Execute Snippet? [Y/n]:

Show snippet

s show [-f <FILE>] [-t <TAG>] <SNIPPET>

List and search snippets

s ls [-f <FILE>] [-t <TAG>] [<PATTERN>]
  • Pattern is matched against snippet name, command and description

List and search snippets for scripts

  • Use the --porcelain flag to produce machine-readable output for scripting.
$ s ls service:disable --porcelain
shell	service:disable	ubuntu	disable service on ubuntu

$ s ls add --porcelain | cut -f 2 | xargs echo
vhost:add user:add alias:add sshconfig:add user:group
  • The output is \t-separated. The colums are:
  1. Snippet file
  2. Snippet name
  3. Tags (,-separated)
  4. Description

Fuzzy search file and snippet name:

# `r` is alias for `run`
# matches file `mysql` and snippet `database:dump`

~|⇒ s r -f sql dmp
----
mysqldump -u[user] --lock-tables=[lock] -p[pass] -h [host] [database] > [database].sql
----
[user]:

Config

# Append history can be useful to avoid re-entering all placeholders when you need to change single parameter.
export SMAN_APPEND_HISTORY=false
# Snippet directory
export SMAN_SNIPPET_DIR="~/snippets"
# Ask confirmation before executing
export SMAN_EXEC_CONFIRM=true
# Set shell color of groups in ls, see https://misc.flogisoft.com/bash/tip_colors_and_formatting
export SMAN_LS_COLOR_FILES=1,4,35

vim-sman

Install vim plugin for better snippets colors:

  • Pathogen
  • git clone https://github.com/tokozedg/vim-sman.git ~/.vim/bundle/vim-sman
  • vim-plug
  • Plug 'tokozedg/vim-sman'
  • NeoBundle
  • NeoBundle 'tokozedg/vim-sman'
  • Vundle
  • Plugin 'tokozedg/vim-sman'

Contributing

If you'd like to contribute, please fork the repository and make changes as you'd like. Pull requests are warmly welcome, especially if you make a good snippet file.

sman's People

Contributors

tokozedg avatar dhhyi avatar antham avatar ickc avatar readmecritic avatar ryanschulze avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.