Skip to main content

Upload content to your pastebin repo

Project description

SHBin

shbin turns a Github repo in a pastebin.

It's tiny command line tool to upload snippets, notebooks, images or any other file easily to a repository that works as your internal Pastebin, returning the url to share it with your team.

Why?

You want to share code snippets, images, notebooks, etc. with your team, probably privately. Gist is awesome, but it has a few limitation:

  • The content may be secret but it is not private: if you get the url, you have the access (and to err is human).
  • The ownership of the shared content is in the user's namespace, not the organization's. What happens if the user leaves the company?
  • You can't find a secret content shared by a teammate if the url is lost. Only the one who created it could find it, and it's not so easy if it doesn't have a name or a good description.
  • Content organization is difficult: in a gist you can upload several files but you can't create folders.
  • The default gist interface does not allow you to "paste" an image (you can paste it as part of a comment, but not as part of the gist content itself). Sharing screenshots is a frequent use case on computers.

Using a real repository has almost all the advantages of gist (rich content rendering like markdown or ipynb, every change is a git commit, etc) without these limitations.

The only disadvantage of a repository is that it is not as easy as "pasting", even if the editing is done from the github interface. But shbin solves this.

Usage

# upload 
$ shbin demo.py -m "my cool demo script"         

# upload any content in clipboard, discovering its format. e.g. an screenshot. 
# the name will be random but the extension will be based on the format detected.
$ shbin -x          

# upload content in the clipboard but giving it a name
$ shbin -x -f my_snippet.md 

# download a given file (inside the namespace)
$ shbin dl my_snippet.md     

# upgrade the content of a file that already exists
$ shbin my_snippet.md

# from clipboard with a given name to a directory in your user directory
$ shbin -x -f the_coolest_thing.py -d coolest_things/python

# upload several files in a directory
$ shbin *.ipynb *.csv -d notebooks/project -m "my new work"   

# Reformat the URL to link to Github pages
$ shbin demo.py -p

$ shbin -h   # show full options

How it works

It uses Github API to create or update files in the given repo. So there is not need to have the target repository fully cloned.

Install

The recommended way is to use pipx

pipx install shbin 

Alternatively, install directly with pip

pip install --user shbin

To install the latest development version from the repository:

pip install --user git+ssh://git@github.com/Shiphero/shbin.git

OSX

It can be issues with python-magic install

  • When using Homebrew:
brew install libmagic
  • When using macports:
port install file

Setup

  • Create a new personal token. Follow these instructions for details. Make sure of:

    • Enable Repo and User scopes
    • Enable SSO if your organization requires it.
  • Set the environment variables:

    export SHBIN_GITHUB_TOKEN = "<your personal token>"
    export SHBIN_REPO = "<your organization>/<the repo>"   # example "Shiphero/pastebin"   
    
  • By default shbin assigns a top-level folder to separate the content uploaded by each user. That could be changed with the SHBIN_NAMESPACE environment variable or --namespace argument from the command line.

    • export SHBIN_NAMESPACE="" # no namespace
    • `export SHBIN_NAMESPACE="pastebin_folder" # the full pastebin is inside pastebin_folder/"
    • `export SHBIN_NAMESPACE="pastebin_folder/{user}" # mix of both: each user has its own folder inside pastebin_folder/
  • [optionally] Install xclip to be able to copy from your clipboard. For example in Ubuntu/Debian

    $ sudo apt install xclip
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shbin-0.1.1.tar.gz (5.5 kB view hashes)

Uploaded Source

Built Distribution

shbin-0.1.1-py3-none-any.whl (6.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page