A supercharged AWS command line interface (CLI).

Overview

SAWS

Build Status Documentation Status Dependency Status

PyPI version PyPI License

Motivation

AWS CLI

Although the AWS CLI is a great resource to manage your AWS-powered services, it's tough to remember usage of:

  • 70+ top-level commands
  • 2000+ subcommands
  • Countless command-specific options
  • Resources such as instance tags and buckets

SAWS: A Supercharged AWS CLI

SAWS aims to supercharge the AWS CLI with features focusing on:

  • Improving ease-of-use
  • Increasing productivity

Under the hood, SAWS is powered by the AWS CLI and supports the same commands and command structure.

SAWS and AWS CLI Usage:

aws <command> <subcommand> [parameters] [options]

SAWS features:

  • Auto-completion of:
    • Commands
    • Subcommands
    • Options
  • Auto-completion of resources:
  • Customizable shortcuts
  • Fuzzy completion of resources and shortcuts
  • Fish-style auto-suggestions
  • Syntax and output highlighting
  • Execution of shell commands
  • Command history
  • Contextual help
  • Toolbar options

SAWS is available for Mac, Linux, Unix, and Windows.

Index

Features

Installation and Tests

Misc

Syntax and Output Highlighting

You can control which theme to load for syntax highlighting by updating your ~/.sawsrc file:

# Visual theme. Possible values: manni, igor, xcode, vim, autumn, vs, rrt,
# native, perldoc, borland, tango, emacs, friendly, monokai, paraiso-dark,
# colorful, murphy, bw, pastie, paraiso-light, trac, default, fruity
theme = vim

Auto-Completion of Commands, Subcommands, and Options

SAWS provides smart autocompletion as you type. Entering the following command will interactively list and auto-complete all subcommands specific only to ec2:

aws ec2

Auto-Completion of AWS Resources

In addition to the default commands, subcommands, and options the AWS CLI provides, SAWS supports auto-completion of your AWS resources. Currently, bucket names, instance ids, and instance tags are included, with additional support for more resources under development.

S3 Buckets

Option for s3api:

--bucket

Sample Usage:

aws s3api get-bucket-acl --bucket

Syntax for s3:

s3://

Sample Usage:

aws s3 ls s3://

Note: The example below demonstrates the use of fuzzy resource completion:

EC2 Instance Ids

Option for ec2:

--instance-ids

Sample Usage:

aws ec2 describe-instances --instance-ids
aws ec2 ls --instance-ids

Note: The ls command demonstrates the use of customizable shortcuts:

EC2 Instance Tags

Option for ec2:

--ec2-tag-key
--ec2-tag-value

Sample Usage:

aws ec2 ls --ec2-tag-key
aws ec2 ls --ec2-tag-value

Tags support wildcards with the * character.

Note: ls, --ec2-tag-value, and --ec2-tag-key demonstrate the use of customizable shortcuts:

TODO: Add More Resources

Feel free to submit an issue or a pull request if you'd like support for additional resources.

Customizable Shortcuts

The ~/.saws.shortcuts file contains shortcuts that you can modify. It comes pre-populated with several handy shortcuts out of the box. You can combine shortcuts with fuzzy completion for even less keystrokes. Below are a few examples.

List all EC2 instances:

aws ec2 ls

List all running EC2 instances:

aws ec2 ls --ec2-state running  # fuzzy shortcut: aws ecstate

List all EC2 instances with a matching tag (supports wildcards *):

aws ec2 ls --ec2-tag-key    # fuzzy shortcut: aws ectagk
aws ec2 ls --ec2-tag-value  # fuzzy shortcut: aws ectagv

List EC2 instance with matching id:

aws ec2 ls --instance-ids  # fuzzy shortcut: aws eclsi

List all DynamoDB tables:

aws dynamodb ls  # fuzzy shortcut: aws dls

List all EMR clusters:

aws emr ls  # fuzzy shortcut: aws emls

Add/remove/modify shortcuts in your ~/.saws.shortcuts file to suit your needs.

Feel free to submit:

  • An issue to request additional shortcuts
  • A pull request if you'd like to share your shortcuts (see contributing guidelines)

Fuzzy Resource and Shortcut Completion

To toggle fuzzy completion of AWS resources and shortcuts, use F3 key.

Sample fuzzy shortcuts to start and stop EC2 instances:

aws ecstop
aws ecstart

Note: Fuzzy completion currently only works with AWS resources and shortcuts.

Fish-Style Auto-Suggestions

SAWS supports Fish-style auto-suggestions. Use the right arrow key to complete a suggestion.

Executing Shell Commands

SAWS allows you to execute shell commands from the saws> prompt.

Command History

SAWS keeps track of commands you enter and stores them in ~/.saws-history. Use the up and down arrow keys to cycle through the command history.

Contextual Help

SAWS supports contextual command line help and contextual web docs.

Contextual Command Line Help

The help command is powered by the AWS CLI and outputs help within the command line.

Usage:

aws <command> <subcommand> help

Contextual Web Docs

Sometimes you're not quite sure what specific command/subcommand/option combination you need to use. In such cases, browsing through several combinations with the help command line is cumbersome versus browsing the online AWS CLI docs through a web browser.

SAWS supports contextual web docs with the docs command or the F9 key. SAWS will display the web docs specific to the currently entered command and subcommand.

Usage:

aws <command> <subcommand> docs

Toolbar Options

SAWS supports a number of toolbar options:

Windows Support

SAWS has been tested on Windows 7 and Windows 10.

On Windows, the .sawsrc file can be found in %userprofile%. For example:

C:\Users\dmartin\.sawsrc

Although you can use the standard Windows command prompt, you'll probably have a better experience with either cmder or conemu.

Installation

Pip Installation

PyPI version PyPI

SAWS is hosted on PyPI. The following command will install SAWS along with dependencies such as the AWS CLI:

$ pip install saws

You can also install the latest SAWS from GitHub source which can contain changes not yet pushed to PyPI:

$ pip install git+https://github.com/donnemartin/saws.git

If you are not installing in a virtualenv, run with sudo:

$ sudo pip install saws

Once installed, start SAWS:

$ saws

Virtual Environment and Docker Installation

It is recommended that you install Python packages in a virtualenv to avoid potential issues with dependencies or permissions.

To view SAWS virtualenv and Docker installation instructions, click here.

Mac OS X 10.11 El Capitan Users

There is a known issue with Apple and its included python package dependencies (more info at https://github.com/pypa/pip/issues/3165). We are investigating ways to fix this issue but in the meantime, to install saws, you can run:

$ sudo pip install saws --upgrade --ignore-installed six

AWS Credentials and Named Profiles

Configure your credentials with the AWS CLI:

$ aws configure

If you'd like to use a specific named profile with SAWS, run the following commands on OS X, Linux, or Unix:

$ export AWS_DEFAULT_PROFILE=user1
$ saws

Or as a one-liner:

$ AWS_DEFAULT_PROFILE=user1 saws

Windows users can run the following commands:

> set AWS_DEFAULT_PROFILE=user1
> saws

Command line options for starting SAWS with a specific profile are under development. For more details on how to install and configure the AWS CLI, refer to the following documentation.

Supported Python Versions

  • Python 2.6
  • Python 2.7
  • Python 3.3
  • Python 3.4
  • Pypy

Light testing indicates that SAWS also seems to be compatible with Python 3.5.

Pypy3 is not supported due to lack of support from boto.

Supported Platforms

  • Mac OS X
    • Tested on OS X 10.10
  • Linux, Unix
    • Tested on Ubuntu 14.04 LTS
  • Windows
    • Tested on Windows 7 and 10

Developer Installation

If you're interested in contributing to SAWS, run the following commands:

$ git clone https://github.com/donnemartin/saws.git
$ pip install -e .
$ pip install -r requirements-dev.txt
$ saws

Continuous Integration

Build Status

Continuous integration details are available on Travis CI.

Dependencies Management

Dependency Status

Dependencies management details are available on Gemnasium.

Unit Tests and Code Coverage

Run unit tests in your active Python environment:

$ python tests/run_tests.py

Run unit tests with tox on multiple Python environments:

$ tox

Documentation

Documentation Status

Source code documentation is available on Readthedocs.org.

Run the following to build the docs:

$ scripts/update_docs.sh

Contributing

Contributions are welcome!

Review the Contributing Guidelines for details on how to:

  • Submit issues
  • Submit pull requests

Credits

Contact Info

Feel free to contact me to discuss any issues, questions, or comments.

License

I am providing code and resources in this repository to you under an open source license. Because this is my personal repository, the license you receive to my code and resources is from me and not my employer (Facebook).

Copyright 2015 Donne Martin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Python 3.5 Issue

    Python 3.5 Issue

    Collecting configobj>=5.0.6 (from saws->-r requirements.txt (line 38))
      Using cached configobj-5.0.6.tar.gz
    Collecting enum34>=1.0.4 (from saws->-r requirements.txt (line 38))
      Using cached enum34-1.0.4.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "/private/var/folders/cb/cxxqz_g94jd1x5tjwrklxgd00000gn/T/pip-build-9jvu7ws4/enum34/enum/__init__.py", line 371, in __getattr__
            return cls._member_map_[name]
        KeyError: '_convert'
    
        During handling of the above exception, another exception occurred:
    
        Traceback (most recent call last):
          File "<string>", line 3, in <module>
          File "/Users/username/.pyenv/versions/aws/lib/python3.5/site-packages/setuptools/__init__.py", line 12, in <module>
            from setuptools.extension import Extension
          File "/Users/username/.pyenv/versions/aws/lib/python3.5/site-packages/setuptools/extension.py", line 8, in <module>
            from .dist import _get_unpatched
          File "/Users/username/.pyenv/versions/aws/lib/python3.5/site-packages/setuptools/dist.py", line 16, in <module>
            from setuptools.depends import Require
          File "/Users/username/.pyenv/versions/aws/lib/python3.5/site-packages/setuptools/depends.py", line 6, in <module>
            from setuptools import compat
          File "/Users/username/.pyenv/versions/aws/lib/python3.5/site-packages/setuptools/compat.py", line 45, in <module>
            import http.client as httplib
          File "/Users/username/.pyenv/versions/3.5.0/lib/python3.5/http/client.py", line 71, in <module>
            import email.parser
          File "/Users/username/.pyenv/versions/3.5.0/lib/python3.5/email/parser.py", line 12, in <module>
            from email.feedparser import FeedParser, BytesFeedParser
          File "/Users/username/.pyenv/versions/3.5.0/lib/python3.5/email/feedparser.py", line 27, in <module>
            from email import message
          File "/Users/username/.pyenv/versions/3.5.0/lib/python3.5/email/message.py", line 16, in <module>
            from email import utils
          File "/Users/username/.pyenv/versions/3.5.0/lib/python3.5/email/utils.py", line 29, in <module>
            import socket
          File "/Users/username/.pyenv/versions/3.5.0/lib/python3.5/socket.py", line 73, in <module>
            IntEnum._convert(
          File "/private/var/folders/cb/cxxqz_g94jd1x5tjwrklxgd00000gn/T/pip-build-9jvu7ws4/enum34/enum/__init__.py", line 373, in __getattr__
            raise AttributeError(name)
        AttributeError: _convert
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/cb/cxxqz_g94jd1x5tjwrklxgd00000gn/T/pip-build-9jvu7ws4/enum34
    
    question 
    opened by nikolay 12
  • Error after installing on Mac

    Error after installing on Mac

    Installed using sudo -H pip install saws, after seeing this comment:

    The directory '/Users/user/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    

    Running saws now yields this error:

    $ saws
    Traceback (most recent call last):
      File "/usr/local/bin/saws", line 5, in <module>
        from pkg_resources import load_entry_point
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
        working_set.require(__requires__)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
        needed = self.resolve(parse_requirements(requirements))
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
        raise DistributionNotFound(req)  # XXX put more info here
    pkg_resources.DistributionNotFound: pygments>=2.0.2
    

    Mac OS 10.9.5, Python 2.7.5

    question 
    opened by TravelingTechGuy 12
  • Cannot install on OSX 10.9.5

    Cannot install on OSX 10.9.5

    Hi, first of all, amazing idea, I hope I could try it soon!

    I'm getting an error when trying to install saws:

    $ pip install saws
    Collecting saws
      Using cached saws-0.2.1.tar.gz
    Collecting awscli>=1.7.46 (from saws)
      Using cached awscli-1.8.6-py2.py3-none-any.whl
    Collecting click>=4.0 (from saws)
      Using cached click-5.1-py2.py3-none-any.whl
    Collecting configobj>=5.0.6 (from saws)
      Using cached configobj-5.0.6.tar.gz
    Collecting enum34>=1.0.4 (from saws)
      Using cached enum34-1.0.4.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "/private/var/folders/f4/_lb074qs3f3cqgl3jnhsc1840000gn/T/pip-build-losha7bj/enum34/enum/__init__.py", line 371, in __getattr__
            return cls._member_map_[name]
        KeyError: '_convert'
    
        During handling of the above exception, another exception occurred:
    
        Traceback (most recent call last):
          File "<string>", line 3, in <module>
          File "/usr/local/lib/python3.5/site-packages/setuptools/__init__.py", line 12, in <module>
            from setuptools.extension import Extension
          File "/usr/local/lib/python3.5/site-packages/setuptools/extension.py", line 8, in <module>
            from .dist import _get_unpatched
          File "/usr/local/lib/python3.5/site-packages/setuptools/dist.py", line 16, in <module>
            from setuptools.depends import Require
          File "/usr/local/lib/python3.5/site-packages/setuptools/depends.py", line 6, in <module>
            from setuptools import compat
          File "/usr/local/lib/python3.5/site-packages/setuptools/compat.py", line 45, in <module>
            import http.client as httplib
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 71, in <module>
            import email.parser
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/parser.py", line 12, in <module>
            from email.feedparser import FeedParser, BytesFeedParser
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/feedparser.py", line 27, in <module>
            from email import message
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/message.py", line 16, in <module>
            from email import utils
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/utils.py", line 29, in <module>
            import socket
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/socket.py", line 73, in <module>
            IntEnum._convert(
          File "/private/var/folders/f4/_lb074qs3f3cqgl3jnhsc1840000gn/T/pip-build-losha7bj/enum34/enum/__init__.py", line 373, in __getattr__
            raise AttributeError(name)
        AttributeError: _convert
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/f4/_lb074qs3f3cqgl3jnhsc1840000gn/T/pip-build-losha7bj/enum34
    

    I'm running OSX 10.9.5, and I've tried with Python 2.7.5 and Python 3.5.0. Thanks.

    question 
    opened by inkel 10
  • Only add ordereddict on Python < 2.7

    Only add ordereddict on Python < 2.7

    Hey, I don't usually do Python so I might be wrong but shouldn't ordereddict be only added to the list of deps when the version of Python is below 2.7?:

    if sys.version_info < (2, 7):
        requirements.append('ordereddict')
    
    bug 
    opened by martinklepsch 10
  • Color scheme not good with white background

    Color scheme not good with white background

    Light gray on white is hard to read:

    image

    The documentation on the README.md does not mention any way of changing the color. I tried to access the in-app documentation with the F9 key, but that's already mapped to Exposé on my OS X machine (which I might file as a separate issue).

    enhancement 
    opened by ldcasillas-progreso 10
  • SAWS and AWS Collaboration

    SAWS and AWS Collaboration

    SAWS and AWS Collaboration

    SAWS and the AWS team behind aws-cli and boto will be collaborating to speed up development.

    Check out the announcement and upcoming features. Stay tuned for more info!

    [Edit] aws-shell is now live!

    SAWS: A Supercharged AWS CLI

    Build Status Documentation Status Dependency Status Codecov

    PyPI version PyPI License

    SAWS

    Motivation

    AWS CLI

    Although the AWS CLI is a great resource to manage your AWS-powered services, it's tough to remember usage of:

    • 50+ top-level commands
    • 1400+ subcommands
    • Countless command-specific options
    • Resources such as instance tags and buckets

    SAWS: A Supercharged AWS CLI

    SAWS aims to supercharge the AWS CLI with features focusing on:

    • Improving ease-of-use
    • Increasing productivity

    Under the hood, SAWS is powered by the AWS CLI and supports the same commands and command structure.

    SAWS and AWS CLI Usage:

    aws <command> <subcommand> [parameters] [options]
    

    SAWS features:

    • Auto-completion of:
      • Commands
      • Subcommands
      • Options
    • Auto-completion of resources:
    • Customizable shortcuts
    • Fuzzy completion of resources and shortcuts
    • Fish-style auto-suggestions
    • Syntax and output highlighting
    • Execution of shell commands
    • Command history
    • Contextual help
    • Toolbar options

    SAWS is available for Mac, Linux, Unix, and Windows.

    Check out the main SAWS page for more info.

    announcement 
    opened by donnemartin 9
  • Fix installation of groff and follow Dockerfile best practices

    Fix installation of groff and follow Dockerfile best practices

    The current Dockerfile does not install groff and doesn't follow Dockerfile best practice.

    This builds a fully working container. I've set up an automated build at https://hub.docker.com/r/stilvoid/saws/.

    opened by stilvoid 7
  • enum34 shouldn't be installed on Python 3.4+

    enum34 shouldn't be installed on Python 3.4+

    I am running OSX with Python 3.5.

    When I try to install saws using pip, I get:

    [email protected] ~> pip3 install saws
    Collecting saws
      Using cached saws-0.2.1.tar.gz
    Collecting awscli>=1.7.46 (from saws)
      Using cached awscli-1.8.12-py2.py3-none-any.whl
    Collecting click>=4.0 (from saws)
      Using cached click-5.1-py2.py3-none-any.whl
    Collecting configobj>=5.0.6 (from saws)
      Using cached configobj-5.0.6.tar.gz
    Collecting enum34>=1.0.4 (from saws)
      Using cached enum34-1.0.4.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "/private/var/folders/9l/r3dzz8551579drqy2j8d6gwm0000gn/T/pip-build-cdj3eth2/enum34/enum/__init__.py", line 371, in __getattr__
            return cls._member_map_[name]
        KeyError: '_convert'
    
        During handling of the above exception, another exception occurred:
    
        Traceback (most recent call last):
          File "<string>", line 3, in <module>
          File "/usr/local/lib/python3.5/site-packages/setuptools/__init__.py", line 12, in <module>
            from setuptools.extension import Extension
          File "/usr/local/lib/python3.5/site-packages/setuptools/extension.py", line 8, in <module>
            from .dist import _get_unpatched
          File "/usr/local/lib/python3.5/site-packages/setuptools/dist.py", line 16, in <module>
            from setuptools.depends import Require
          File "/usr/local/lib/python3.5/site-packages/setuptools/depends.py", line 6, in <module>
            from setuptools import compat
          File "/usr/local/lib/python3.5/site-packages/setuptools/compat.py", line 45, in <module>
            import http.client as httplib
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 71, in <module>
            import email.parser
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/parser.py", line 12, in <module>
            from email.feedparser import FeedParser, BytesFeedParser
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/feedparser.py", line 27, in <module>
            from email import message
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/message.py", line 16, in <module>
            from email import utils
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/email/utils.py", line 29, in <module>
            import socket
          File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/socket.py", line 73, in <module>
            IntEnum._convert(
          File "/private/var/folders/9l/r3dzz8551579drqy2j8d6gwm0000gn/T/pip-build-cdj3eth2/enum34/enum/__init__.py", line 373, in __getattr__
            raise AttributeError(name)
        AttributeError: _convert
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/9l/r3dzz8551579drqy2j8d6gwm0000gn/T/pip-build-cdj3eth2/enum34
    

    It seems that enum34 doesn't work on Python 3.5:

    https://bitbucket.org/stoneleaf/enum34/issues/5/enum34-incompatible-with-python-35

    In fact, I don't think it makes sense to install enum34 on Python 3.4+ anyway.

    Is there some way to resolve this so that saws will install on Python 3.4 and upwards?

    bug 
    opened by victorhooi 7
  • ImportError: No module named dateutil.parser

    ImportError: No module named dateutil.parser

    I installed saws using pip like the documentation states:

    pip install saws
    

    When I first try to run it I get this error:

    Traceback (most recent call last):
      File "/usr/local/bin/saws", line 7, in <module>
        from saws.main import cli
      File "/usr/local/lib/python2.7/site-packages/saws/main.py", line 20, in <module>
        from .saws import Saws
      File "/usr/local/lib/python2.7/site-packages/saws/saws.py", line 31, in <module>
        from awscli import completer as awscli_completer
      File "/usr/local/lib/python2.7/site-packages/awscli/completer.py", line 12, in <module>
        import awscli.clidriver
      File "/usr/local/lib/python2.7/site-packages/awscli/clidriver.py", line 16, in <module>
        import botocore.session
      File "/usr/local/lib/python2.7/site-packages/botocore/session.py", line 26, in <module>
        import botocore.credentials
      File "/usr/local/lib/python2.7/site-packages/botocore/credentials.py", line 22, in <module>
        from dateutil.parser import parse
    ImportError: No module named dateutil.parser
    

    I checked to see if dateutil was installed and pip thinks it is:

    $ pip install python-dateutil
    Requirement already satisfied (use --upgrade to upgrade): python-dateutil in /usr/local/lib/python2.7/site-packages
    Requirement already satisfied (use --upgrade to upgrade): six>=1.5 in /usr/local/lib/python2.7/site-packages (from python-dateutil)
    

    I then tried to upgrade it just in case and pip thinks it is up to date:

    $ pip install --upgrade python-dateutil
    Requirement already up-to-date: python-dateutil in /usr/local/lib/python2.7/site-packages
    Requirement already up-to-date: six>=1.5 in /usr/local/lib/python2.7/site-packages (from python-dateutil)
    

    Is this possibly a different dependency that is missing or is my environment borked?

    question 
    opened by timmattison 7
  • Support history manipulation through .bash_history

    Support history manipulation through .bash_history

    Feature request: use saws autocompletion but delegate execution of the command to bash or the underlining shell.

    For example, right now this cmd doesn't work:
    aws s3 ls | less

    There are use cases in which you would want to manipulate the output of an aws cmd.

    Also it would be nice if the cmds executed in saws were to end up in the history file so that they can be manipulated at a later time. Especially since that there's no way of getting the saws history.

    Thanks for this project.

    enhancement 
    opened by sesas 7
  • Add a deprecation notice to the top of the README

    Add a deprecation notice to the top of the README

    Per #68, and specifically this comment by @donnemartin, it would seem this project is, or means to, deprecate in favor of aws-shell

    I still see folks open issues & PRs for this, and perhaps the time has come to place a deprecation notice at the top of the README to discourage that.

    opened by jeffbyrnes 6
  • No Windows Console Found. Are ui running cmd.exe

    No Windows Console Found. Are ui running cmd.exe

    Hi Team,

    Looking for your help on this: image saws> aws iam list-users

    No Windows console found. Are you running cmd.exe?

    Refreshing resources... Refreshing instance ids...

    No Windows console found. Are you running cmd.exe? Refreshing instance tag keys...

    No Windows console found. Are you running cmd.exe? Refreshing instance tag values...

    No Windows console found. Are you running cmd.exe? Refreshing bucket names...

    No Windows console found. Are you running cmd.exe? Refreshing bucket uris...

    No Windows console found. Are you running cmd.exe? Done refreshing saws>

    opened by Debashish82 0
  • pipsi / pipx install on osx broken: aws: command not found

    pipsi / pipx install on osx broken: aws: command not found

    I've tried installing saws using pipsi as per the docs and after seeing that pipsi is deprecated I've tried installing via pipx. Both times I've got the errors below when running any command under saws. aws and pygmentize are installed in the virtualenv created by pipsi/pipx so my guess is that the saws interactive shell somehow doesn't start in the same virtualenv.

    osx version: 10.15.3 Python 2.7.16

    saws> aws ec2 ls --ec2-state
    /bin/sh: aws: command not found
    /bin/sh: pygmentize: command not found
    
    opened by Braynid 2
  • 'Namespace' object has no attribute 'cli_binary_format'

    'Namespace' object has no attribute 'cli_binary_format'

    I am running saws under py3.6 under virtualenv with aws CLI2 (which I need for sso). I am getting the following error for any aws command I try: 'Namespace' object has no attribute 'cli_binary_format'

    I tried explicitly setting that attribute in the default section of my .aws/config file but that doesn't help. Note that setting this attribute is a new feature of CLI2

    opened by aberezin-acertus 8
  • ERROR saws prompt-toolkit<1.1.0,>=1.0.0  conflicts with jupyter prompt-toolkit 3.0.4

    ERROR saws prompt-toolkit<1.1.0,>=1.0.0 conflicts with jupyter prompt-toolkit 3.0.4

    pip3 install jupyter
    ...
    Collecting prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0
    ...
    ERROR: saws 0.4.3 has requirement prompt-toolkit<1.1.0,>=1.0.0, but you'll have prompt-toolkit 3.0.4 which is incompatible.
    

    Macos Catalina python 3.7 installed via brew Jupyter installation conflicts with existing saws setup

    opened by den-is 0
Releases(0.4.2)
  • 0.4.2(Apr 9, 2017)

    Changelog

    0.4.2 (2017-04-08)

    Bug Fixes

    • #90 - Fix Sphinx document generation issues.

    Updates

    • Update list of commands.
    • #92 - Update feed_key to feed and process_keys forprompt-toolkit` v1.0.1+.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.1(May 31, 2016)

    Changelog

    0.4.1 (2015-05-31)

    Bug Fixes

    • #83 - Update to prompt-toolkit 1.0.0, which includes a number of performance improvements (especially noticeable on Windows) and bug fixes.

    Updates

    • #75, #76 - Fix groff install and follow Dockerfile best practices.
    • #85 - Update packaging dependencies based on semantic versioning.
    • #86 - Fix linter issues regarding imports.
    • Update list of commands.
    • Update INSTALLATION:
      • Add install from SOURCE.
      • Add note about OS X 10.11 pip issue (now also in README).
      • Update intro.
    • Update link to style guide in CONTRIBUTING.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Dec 8, 2015)

    Changelog

    0.4.0 (2015-12-08)

    Features

    • Implemented #67: Add Fish-style auto suggestions.

    Bug Fixes

    • Fixed #71: Disable color output for shell commands.
    • Fixed #72: Exiting with F10 does not clear the menu bar.

    Updates

    • Updated list of commands.
    • Updated repo README.
      • Added auto suggestions.
    • Fixed #66: Removed docs/build from source repo.
    Source code(tar.gz)
    Source code(zip)
  • 0.3.2(Oct 16, 2015)

    Changelog

    0.3.2 (2015-10-16)

    Features

    • Resolved #38: Added Docker installation support, by frosforever.
    • Resolved #39: Changed completion matching to ignore case.
    • Resolved #40: Added emr --cluster-states completions.
    • Resolved #52 and #58: Updated list of auto-completed commands and subcommands.
    • Resolved #53: Moved shortcuts out of ~/.sawsrc to a new file ~/.saws.shortcuts to simplify managing shortcuts.

    Bug Fixes

    • Fixed #22 and #26:
      • ordereddict is now only installed with Python 2.6.
      • enum34 is now only installed with Python 3.3 and below.
    • Fixed #29: SAWS is now compatible with prompt_toolkit version 0.52, by jonathanslenders.
    • Fixed #33: SAWS will no longer exit on keyboard interrupt such as Ctrl-C, which can be useful to terminate long-running aws-cli commands.
    • Fixed #35: Grep now works consistently with shortcuts, by mlimaloureiro.
    • Fixed #41: Blank entry is no longer shown in list of completion if there is no optional value set for a given tag's key.
    • Fixed #60: Running an empty command no longer results in a pygmentize syntax error.
    • Fixed #61: Refreshing resources multiple times no longer results in an exception.

    Updates

    • Added PyPI keywords for easier searching.
    • Updated PyPI README.
      • Added GitHub repo link, issue tracker, and repo gif.
    • Added INSTALLATION doc, with the following updates:
      • Added virtualenv installation section.
      • Added Pipsi installation section #44, by svieira.
      • Added Docker installation section #38, by frosforever.
    • Updated repo README.
      • Updated discussion of shortcuts with the new ~/.saws.shortcuts file.
      • Added Command History section.
      • Updated AWS Credentials and Named Profiles section.
      • Added command to run SAWS in the Developer Installation section.
      • Updated Motivation section to include fuzzy shortcut completion, toolbar options, execution and piping of shell commands. and history of commands.
      • Mentioned initial testing of Python 3.5 support.
      • Added install from GitHub source instructions to get the latest dev release
    • Updated docs.
    Source code(tar.gz)
    Source code(zip)
  • 0.2.1(Sep 24, 2015)

  • 0.2.0(Sep 24, 2015)

    Changelog

    0.2.0 (2015-09-22)

    Features

    • Added support for #18: Multiple syntax highlighting themes.
    • Added improved support for #17: Execute shell commands within SAWS, including piping.

    Bug Fixes

    • Fixed #21: Current command is overwritten on screen when refreshing resources with F5, by jonathanslenders.

    Updates

    • Updated README installation section with:
      • Virtualenv instructions.
      • Details on how to run AWS named profiles/credentials.
      • Supported/tested platforms.
    • Updated README developer installation section with a new command to build the docs.
    • Updated docs.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.1(Sep 24, 2015)

    Changelog

    0.1.1 (2015-09-21)

    Bug Fixes

    • Fixed #14: Fuzzy completions are sometimes showing incorrect completions for built-in commands and subcommands.

    Updates

    • Updated README installation section on how to run SAWS.
    • Updated docs.
    • Updated description, download url, license, and classifiers in setup.py.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Sep 24, 2015)

Owner
Donne Martin
Tech Lead @facebook
Donne Martin
inklayers is a command line program that exports layers from an SVG file.

inklayers is a command line program that exports layers from an SVG file. It can be used to create slide shows by editing a single SVG file.

11 Mar 29, 2022
A Python script for finding a food-truck based on latitude and longitude coordinates that you can run in your shell

Food Truck Finder Project Description This repository contains a Python script for finding a food-truck based on latitude and longitude coordinates th

1 Jan 22, 2022
A simple automation script that logs into your kra account and files your taxes with one command

EASY_TAX A simple automation script that logs into your kra account and files your taxes with one command Currently works for Chrome users. Will creat

leon koech 13 Sep 23, 2021
Quickly open any path on your terminal window in your $EDITOR of choice!

Tmux fpp Plugin wrapper around Facebook PathPicker. Quickly open any path on your terminal window in your $EDITOR of choice! Demo Dependencies fpp - F

257 Dec 28, 2022
Simple Terminal Styling for Python

escape Escape is a very simple terminal styling library largely inspired by the excellent javascript chalk library. There are other terminal styling l

Syed Abbas 8 Sep 03, 2019
Personal and work vim 8 configuration with submodules

vimfiles Windows Vim 8 configuration files based on the recommendations of Ruslan Osipov, Keep Your vimrc file clean and The musings of bluz71. :help

1 Aug 27, 2022
topalias - Linux alias generator from bash/zsh command history with statistics, written on Python.

topalias topalias - Linux alias generator from bash/zsh command history with statistics, written on Python. Features Generate short alias for popular

Sergey Chudakov 38 May 26, 2022
Analyzing the most strategic words to guess on Wordle, based on letter frequency distributions

wordle-analysis Evaluating different heuristics to determine the most effective solving strategy and building an AI-powered assistant tool to help you

Sejal Dua 9 Feb 27, 2022
GoogleFormSpammer - A simple CLI script to spam Google Forms used by Crypto Wallet scammers to collect stolen data

GoogleFormSpammer - A simple CLI script to spam Google Forms used by Crypto Wallet scammers to collect stolen data

14 Dec 17, 2022
Quo is a Python based toolkit for writing Command-Line Interface(CLI) applications.

Quo is a Python based toolkit for writing Command-Line Interface(CLI) applications. Quo is making headway towards composing speedy and orderly CLI applications while forestalling any disappointments

Secretum Inc. 16 Oct 15, 2022
A simple note taker CLI program written in python

note-taker A simple note taker program written in python This allows you to snip your todo's, notes, and your tasks easily without extra charges Requi

marcusz 4 Nov 02, 2021
ICMP Reverse Shell written in Python 3 and with Scapy (backdoor/rev shell)

icmpdoor - ICMP Reverse Shell icmpdoor is an ICMP rev shell written in Python3 and scapy. Tested on Ubuntu 20.04, Debian 10 (Kali Linux), and Windows

Jeroen van Kessel 206 Dec 29, 2022
The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks.

Prisma Cloud CLI The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks. Support This project has been developed by P

Palo Alto Networks 13 Oct 14, 2022
Python CLI utility and library for manipulating SQLite databases

sqlite-utils Python CLI utility and library for manipulating SQLite databases. Some feature highlights Pipe JSON (or CSV or TSV) directly into a new S

Simon Willison 1.1k Jan 04, 2023
⚙ A lightweight command line interface library for creating commands.

⚙ A lightweight command line interface library for creating cli commands. About | Installation | Usage | Features | Contributors | License About Next:

Serum 16 Sep 25, 2022
Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections.

code-connect Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections. Motivation VS Code supports opening

Christian Volkmann 56 Nov 19, 2022
A command-line based, minimal torrent streaming client made using Python and Webtorrent-cli. Stream your favorite shows straight from the command line.

A command-line based, minimal torrent streaming client made using Python and Webtorrent-cli. Installation pip install -r requirements.txt It use

Jonardon Hazarika 17 Dec 11, 2022
Colors in Terminal - Python Lang

🎨 Colorate - Python 🎨 About Colorate is an Open Source project that makes it easy to use Python color coding in your projects. After downloading the

0110 Henrique 1 Dec 01, 2021
A web shell client written in python.

Webshell client A webshell client written in python. Only works well for linux for the time being. Why? Because there are too many heavy webshells. So

tchar 1 Dec 07, 2021
A command line tool to hide and reveal information inside images (works for both PNGs and JPGs)

Imgrerite A command line tool to hide and reveal information inside images (works for both PNGs and JPGs) Dependencies Python 3 Git Most of the Linux

Jigyasu 10 Jul 27, 2022