Giter Site home page Giter Site logo

azure-cli-shell's Introduction

azure-cli-shell's People

Contributors

berndverst avatar dchapdelaine avatar microsoftopensource avatar msftgits avatar sendhil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azure-cli-shell's Issues

There isn't indicator of how many pages one command's documentation has.

When a command is typed, its documentation shows up in the bottom of the screen. Ctrl+N and Ctrl+Y are used to scroll the documentation. However there isn't any indicator of how many pages of documentation left.

az vm>> create                            
                      
                   
                   




-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Create an Azure Virtual Machine.                                                         *
                                                                                         *                                                                                         
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[1] Create a simple Ubuntu VM with automatic SSH authentication.                          
az vm create -n MyVm -g MyResourceGroup --image UbuntuLTS                                                                                                                          
                                                                                                                                                                         
[2] Create a simple Windows Server VM with a private IP address.
az vm create -n MyVm -g MyResourceGroup                  
 --public-ip-address "" --image Win2012R2Datacenter                                                                                                       
                                                                                                                                                                                   
[3] Create a VM from a custom managed image (see `az image create` for generation information).
az vm create -g MyResourceGroup -n MyVm --image MyImage                                   
                                                                                          
[4] Create a VM by attaching to a specialized managed operating system disk.              
az vm create -g MyResourceGroup -n MyVm --attach-os-disk MyOsDisk --os-type linux                                                                                                 
                                                                                                                                                                                   
[5] Create an Ubuntu Linux VM and provide a cloud-init script (https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init).
az vm create -g MyResourceGroup -n MyVm --image debian --custom_data MyCloudInitScript.yml
                                      
[6] Create a Linux VM with SSH key authentication, add a public DNS entry, and then add it to an existing virtual network and availability set.
az vm create -n MyVm -g MyResourceGroup --image <linux image from 'az vm image list'> --vnet-name MyVnet --subnet subnet1 --availability-set MyAvailabilitySet --public-i          
p-address-dns-name MyUniqueDnsName --ssh-key-value "<ssh-rsa-key, key-file-path or not specified for default-key-path>"
                                                          
[7] Create a simple Ubuntu Linux VM with a public IP address, DNS entry, 2 data disk(10GB, 20GB), and then generate ssh key pairs under ~/.ssh.
                                                                                                                                                                                   
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
?[path]            : query previous command using jmespath syntax
[cmd] :: [num]     : do a step by step tutorial of example
#[cmd]             : use commands outside the application
^^                 : undefault a scope                        
$                  : get the exit code of the previous command
%%                 : default a scope              
Crtl+N             : Scroll down the documentation                                                                                                                                
Crtl+Y             : Scroll up the documentation

Ctrl - D is probably a better quit command than Ctrl -Q

...and if you disagree, then you have to handle Ctrl-D more gracefully..

At the moment, you get:

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/Users/JohanSte/temp/azshell/env/lib/python2.7/site-packages/azclishell/main.py", line 71, in
main(sys.argv[1:])
File "/Users/JohanSte/temp/azshell/env/lib/python2.7/site-packages/azclishell/main.py", line 67, in main
shell_app.run()
File "/Users/JohanSte/temp/azshell/env/lib/python2.7/site-packages/azclishell/app.py", line 529, in run
document = self.cli.run(reset_current_buffer=True)
File "/Users/JohanSte/temp/azshell/env/lib/python2.7/site-packages/prompt_toolkit/interface.py", line 432, in run
return self.return_value()
File "/Users/JohanSte/temp/azshell/env/lib/python2.7/site-packages/prompt_toolkit/interface.py", line 820, in return_value
return self._return_value()
File "/Users/JohanSte/temp/azshell/env/lib/python2.7/site-packages/prompt_toolkit/interface.py", line 563, in eof_error
raise EOFError()

az-shell command isn't executable by default

I've installed azure-cli-shell-0.1.1rc2 in my linux box and noticed that az-shell command isn't executable by default.

 $ az-shell
zsh: permission denied: az-shell
 $ ls -la $HOME/.local/bin/az-shell
-rw-rw-r-- 1 yoichika yoichika 494 Apr 11 08:40 /home/yoichika/.local/bin/az-shell

Of course i can run az-shell after I added executable permission but it would be better if it's executable by default
My environment is:

module: azure-cli-shell-0.1.1rc2
OS:

 $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.10
Release:        15.10
Codename:       wily

Pythonv version:

 $ python --version
Python 2.7.10

Problem getting filtered partial completions

OS: Mac
Install method: pip install in a virtualenv
Python version: 2.7.12
Shell: bash

When I type: group create -l the completions appear in blue. If I then start to type we, my completions completely disappear and never come back. Also, if I [tab][tab] it does not complete (though it would outside the shell).

Feedback on History Suggestion

OS: Mac
Install method: pip install in a virtualenv
Python version: 2.7.12
Shell: bash

When I type: group create -l westus -n myrg and then group create I get the rest of my previous command as a suggestion. It wasn't clear to me how to use that suggestion. I tried just pressing Enter and of course that didn't work. I tried Tab and that didn't work. It wasn't obvious to me that I needed to press the right arrow key.

Since the suggestion appears in largely the same color (dark grey) as a manually typed command (where the values are dark grey) that may have contributed to the confusion.

Two suggestions:

  • Use a light grey for the history suggestion
  • Instead of making the right arrow take the entire suggestion to the end, consider making it use the "next" item. So, if I had foo -a a -b b -c c, when I type foo[right] I would get foo -a a instead of foo -a a -b b -c c.

Install failed from fresh Windows Subsystem for Linux installation

This is an extremely long issue report; however, I wanted to capture everything done to install Python and the azure-cli-shell from a fresh WSL installation which then failed.

Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\Users\thfalgou>bash
-- Beta feature --
This will install Ubuntu on Windows, distributed by Canonical
and licensed under its terms available here:
https://aka.ms/uowterms

Type "y" to continue: y
Downloading from the Windows Store... 100%
Extracting filesystem, this will take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Installation successful!
The environment will start momentarily...
Documentation is available at:  https://aka.ms/wsldocs
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ apt-get install python
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ sudo apt-get install python
sudo: unable to resolve host THOMASFALGO24B2
[sudo] password for thfalgou:
Reading package lists... Done
Building dependency tree
Reading state information... Done
python is already the newest version.
The following packages were automatically installed and are no longer required:
  libfreetype6 os-prober
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ pip -h
The program 'pip' is currently not installed. You can install it by typing:
sudo apt-get install python-pip
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ sudo apt-get install pip
sudo: unable to resolve host THOMASFALGO24B2
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package pip
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ sudo apt-get install python-setuptools python-dev build-essential
sudo: unable to resolve host THOMASFALGO24B2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libfreetype6 os-prober
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  binutils cpp cpp-4.8 dpkg-dev fakeroot g++ g++-4.8 gcc gcc-4.8
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libasan0 libatomic1 libc-dev-bin libc6 libc6-dev libcloog-isl4 libdpkg-perl
  libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-4.8-dev libgmp10
  libgomp1 libisl10 libitm1 libmpc3 libmpfr4 libpython-dev libpython2.7-dev
  libquadmath0 libstdc++-4.8-dev libtsan0 linux-libc-dev make manpages-dev
  python2.7-dev
Suggested packages:
  binutils-doc cpp-doc gcc-4.8-locales debian-keyring g++-multilib
  g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg gcc-multilib autoconf
  automake1.9 libtool flex bison gdb gcc-doc gcc-4.8-multilib libgcc1-dbg
  libgomp1-dbg libitm1-dbg libatomic1-dbg libasan0-dbg libtsan0-dbg
  libquadmath0-dbg glibc-doc libstdc++-4.8-doc make-doc
The following NEW packages will be installed:
  binutils build-essential cpp cpp-4.8 dpkg-dev fakeroot g++ g++-4.8 gcc
  gcc-4.8 libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libasan0 libatomic1 libc-dev-bin libc6-dev
  libcloog-isl4 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl
  libgcc-4.8-dev libgmp10 libgomp1 libisl10 libitm1 libmpc3 libmpfr4
  libpython-dev libpython2.7-dev libquadmath0 libstdc++-4.8-dev libtsan0
  linux-libc-dev make manpages-dev python-dev python-setuptools python2.7-dev
The following packages will be upgraded:
  libc6
1 upgraded, 40 newly installed, 0 to remove and 49 not upgraded.
Need to get 67.0 MB of archives.
After this operation, 151 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libc6 amd64 2.19-0ubuntu6.11 [4,734 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libasan0 amd64 4.8.4-2ubuntu1~14.04.3 [63.1 kB]
Get:3 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libatomic1 amd64 4.8.4-2ubuntu1~14.04.3 [8,636 B]
Get:4 http://archive.ubuntu.com/ubuntu/ trusty/main libgmp10 amd64 2:5.1.3+dfsg-1ubuntu1 [218 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ trusty/main libisl10 amd64 0.12.2-1 [419 kB]
Get:6 http://archive.ubuntu.com/ubuntu/ trusty/main libcloog-isl4 amd64 0.18.2-1 [57.5 kB]
Get:7 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libgomp1 amd64 4.8.4-2ubuntu1~14.04.3 [23.1 kB]
Get:8 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libitm1 amd64 4.8.4-2ubuntu1~14.04.3 [28.5 kB]
Get:9 http://archive.ubuntu.com/ubuntu/ trusty/main libmpfr4 amd64 3.1.2-1 [203 kB]
Get:10 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libc-dev-bin amd64 2.19-0ubuntu6.11 [69.0 kB]
Get:11 http://archive.ubuntu.com/ubuntu/ trusty-updates/main linux-libc-dev amd64 3.13.0-116.163 [767 kB]
Get:12 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libc6-dev amd64 2.19-0ubuntu6.11 [1,912 kB]
Get:13 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libexpat1-dev amd64 2.1.0-4ubuntu1.3 [115 kB]
Get:14 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libpython2.7-dev amd64 2.7.6-8ubuntu0.3 [22.0 MB]
Get:15 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libquadmath0 amd64 4.8.4-2ubuntu1~14.04.3 [126 kB]
Get:16 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libtsan0 amd64 4.8.4-2ubuntu1~14.04.3 [94.9 kB]
Get:17 http://archive.ubuntu.com/ubuntu/ trusty/main libmpc3 amd64 1.0.1-1ubuntu1 [38.4 kB]
Get:18 http://archive.ubuntu.com/ubuntu/ trusty-updates/main binutils amd64 2.24-5ubuntu14.1 [2,081 kB]
Get:19 http://archive.ubuntu.com/ubuntu/ trusty-updates/main cpp-4.8 amd64 4.8.4-2ubuntu1~14.04.3 [4,595 kB]
Get:20 http://archive.ubuntu.com/ubuntu/ trusty/main cpp amd64 4:4.8.2-1ubuntu6 [27.5 kB]
Get:21 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libgcc-4.8-dev amd64 4.8.4-2ubuntu1~14.04.3 [1,688 kB]
Get:22 http://archive.ubuntu.com/ubuntu/ trusty-updates/main gcc-4.8 amd64 4.8.4-2ubuntu1~14.04.3 [5,047 kB]
Get:23 http://archive.ubuntu.com/ubuntu/ trusty/main gcc amd64 4:4.8.2-1ubuntu6 [5,098 B]
Get:24 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libstdc++-4.8-dev amd64 4.8.4-2ubuntu1~14.04.3 [1,053 kB]
Get:25 http://archive.ubuntu.com/ubuntu/ trusty-updates/main g++-4.8 amd64 4.8.4-2ubuntu1~14.04.3 [18.1 MB]
Get:26 http://archive.ubuntu.com/ubuntu/ trusty/main g++ amd64 4:4.8.2-1ubuntu6 [1,490 B]
Get:27 http://archive.ubuntu.com/ubuntu/ trusty/main make amd64 3.81-8.2ubuntu3 [119 kB]
Get:28 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libdpkg-perl all 1.17.5ubuntu5.7 [179 kB]
Get:29 http://archive.ubuntu.com/ubuntu/ trusty-updates/main dpkg-dev all 1.17.5ubuntu5.7 [726 kB]
Get:30 http://archive.ubuntu.com/ubuntu/ trusty/main build-essential amd64 11.6ubuntu6 [4,838 B]
Get:31 http://archive.ubuntu.com/ubuntu/ trusty/main libfakeroot amd64 1.20-3ubuntu2 [25.4 kB]
Get:32 http://archive.ubuntu.com/ubuntu/ trusty/main fakeroot amd64 1.20-3ubuntu2 [55.0 kB]
Get:33 http://archive.ubuntu.com/ubuntu/ trusty/main libalgorithm-diff-perl all 1.19.02-3 [50.0 kB]
Get:34 http://archive.ubuntu.com/ubuntu/ trusty/main libalgorithm-diff-xs-perl amd64 0.04-2build4 [12.6 kB]
Get:35 http://archive.ubuntu.com/ubuntu/ trusty/main libalgorithm-merge-perl all 0.08-2 [12.7 kB]
Get:36 http://archive.ubuntu.com/ubuntu/ trusty/main libfile-fcntllock-perl amd64 0.14-2build1 [15.9 kB]
Get:37 http://archive.ubuntu.com/ubuntu/ trusty/main libpython-dev amd64 2.7.5-5ubuntu3 [7,078 B]
Get:38 http://archive.ubuntu.com/ubuntu/ trusty/main manpages-dev all 3.54-1ubuntu1 [1,820 kB]
Get:39 http://archive.ubuntu.com/ubuntu/ trusty-updates/main python2.7-dev amd64 2.7.6-8ubuntu0.3 [269 kB]
Get:40 http://archive.ubuntu.com/ubuntu/ trusty/main python-dev amd64 2.7.5-5ubuntu3 [1,166 B]
Get:41 http://archive.ubuntu.com/ubuntu/ trusty-updates/main python-setuptools all 3.3-1ubuntu2 [230 kB]
Fetched 67.0 MB in 30s (2,192 kB/s)
Extracting templates from packages: 100%
Preconfiguring packages ...
(Reading database ... 25663 files and directories currently installed.)
Preparing to unpack .../libc6_2.19-0ubuntu6.11_amd64.deb ...
Unpacking libc6:amd64 (2.19-0ubuntu6.11) over (2.19-0ubuntu6.9) ...
Setting up libc6:amd64 (2.19-0ubuntu6.11) ...
Processing triggers for libc-bin (2.19-0ubuntu6.9) ...
Selecting previously unselected package libasan0:amd64.
(Reading database ... 25663 files and directories currently installed.)
Preparing to unpack .../libasan0_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libasan0:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package libatomic1:amd64.
Preparing to unpack .../libatomic1_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libatomic1:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package libgmp10:amd64.
Preparing to unpack .../libgmp10_2%3a5.1.3+dfsg-1ubuntu1_amd64.deb ...
Unpacking libgmp10:amd64 (2:5.1.3+dfsg-1ubuntu1) ...
Selecting previously unselected package libisl10:amd64.
Preparing to unpack .../libisl10_0.12.2-1_amd64.deb ...
Unpacking libisl10:amd64 (0.12.2-1) ...
Selecting previously unselected package libcloog-isl4:amd64.
Preparing to unpack .../libcloog-isl4_0.18.2-1_amd64.deb ...
Unpacking libcloog-isl4:amd64 (0.18.2-1) ...
Selecting previously unselected package libgomp1:amd64.
Preparing to unpack .../libgomp1_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libgomp1:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package libitm1:amd64.
Preparing to unpack .../libitm1_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libitm1:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package libmpfr4:amd64.
Preparing to unpack .../libmpfr4_3.1.2-1_amd64.deb ...
Unpacking libmpfr4:amd64 (3.1.2-1) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../libc-dev-bin_2.19-0ubuntu6.11_amd64.deb ...
Unpacking libc-dev-bin (2.19-0ubuntu6.11) ...
Selecting previously unselected package linux-libc-dev:amd64.
Preparing to unpack .../linux-libc-dev_3.13.0-116.163_amd64.deb ...
Unpacking linux-libc-dev:amd64 (3.13.0-116.163) ...
Selecting previously unselected package libc6-dev:amd64.
Preparing to unpack .../libc6-dev_2.19-0ubuntu6.11_amd64.deb ...
Unpacking libc6-dev:amd64 (2.19-0ubuntu6.11) ...
Selecting previously unselected package libexpat1-dev:amd64.
Preparing to unpack .../libexpat1-dev_2.1.0-4ubuntu1.3_amd64.deb ...
Unpacking libexpat1-dev:amd64 (2.1.0-4ubuntu1.3) ...
Selecting previously unselected package libpython2.7-dev:amd64.
Preparing to unpack .../libpython2.7-dev_2.7.6-8ubuntu0.3_amd64.deb ...
Unpacking libpython2.7-dev:amd64 (2.7.6-8ubuntu0.3) ...
Selecting previously unselected package libquadmath0:amd64.
Preparing to unpack .../libquadmath0_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libquadmath0:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package libtsan0:amd64.
Preparing to unpack .../libtsan0_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libtsan0:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package libmpc3:amd64.
Preparing to unpack .../libmpc3_1.0.1-1ubuntu1_amd64.deb ...
Unpacking libmpc3:amd64 (1.0.1-1ubuntu1) ...
Selecting previously unselected package binutils.
Preparing to unpack .../binutils_2.24-5ubuntu14.1_amd64.deb ...
Unpacking binutils (2.24-5ubuntu14.1) ...
Selecting previously unselected package cpp-4.8.
Preparing to unpack .../cpp-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking cpp-4.8 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package cpp.
Preparing to unpack .../cpp_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking cpp (4:4.8.2-1ubuntu6) ...
Selecting previously unselected package libgcc-4.8-dev:amd64.
Preparing to unpack .../libgcc-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libgcc-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package gcc-4.8.
Preparing to unpack .../gcc-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking gcc-4.8 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package gcc.
Preparing to unpack .../gcc_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking gcc (4:4.8.2-1ubuntu6) ...
Selecting previously unselected package libstdc++-4.8-dev:amd64.
Preparing to unpack .../libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking libstdc++-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package g++-4.8.
Preparing to unpack .../g++-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb ...
Unpacking g++-4.8 (4.8.4-2ubuntu1~14.04.3) ...
Selecting previously unselected package g++.
Preparing to unpack .../g++_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking g++ (4:4.8.2-1ubuntu6) ...
Selecting previously unselected package make.
Preparing to unpack .../make_3.81-8.2ubuntu3_amd64.deb ...
Unpacking make (3.81-8.2ubuntu3) ...
Selecting previously unselected package libdpkg-perl.
Preparing to unpack .../libdpkg-perl_1.17.5ubuntu5.7_all.deb ...
Unpacking libdpkg-perl (1.17.5ubuntu5.7) ...
Selecting previously unselected package dpkg-dev.
Preparing to unpack .../dpkg-dev_1.17.5ubuntu5.7_all.deb ...
Unpacking dpkg-dev (1.17.5ubuntu5.7) ...
Selecting previously unselected package build-essential.
Preparing to unpack .../build-essential_11.6ubuntu6_amd64.deb ...
Unpacking build-essential (11.6ubuntu6) ...
Selecting previously unselected package libfakeroot:amd64.
Preparing to unpack .../libfakeroot_1.20-3ubuntu2_amd64.deb ...
Unpacking libfakeroot:amd64 (1.20-3ubuntu2) ...
Selecting previously unselected package fakeroot.
Preparing to unpack .../fakeroot_1.20-3ubuntu2_amd64.deb ...
Unpacking fakeroot (1.20-3ubuntu2) ...
Selecting previously unselected package libalgorithm-diff-perl.
Preparing to unpack .../libalgorithm-diff-perl_1.19.02-3_all.deb ...
Unpacking libalgorithm-diff-perl (1.19.02-3) ...
Selecting previously unselected package libalgorithm-diff-xs-perl.
Preparing to unpack .../libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb ...
Unpacking libalgorithm-diff-xs-perl (0.04-2build4) ...
Selecting previously unselected package libalgorithm-merge-perl.
Preparing to unpack .../libalgorithm-merge-perl_0.08-2_all.deb ...
Unpacking libalgorithm-merge-perl (0.08-2) ...
Selecting previously unselected package libfile-fcntllock-perl.
Preparing to unpack .../libfile-fcntllock-perl_0.14-2build1_amd64.deb ...
Unpacking libfile-fcntllock-perl (0.14-2build1) ...
Selecting previously unselected package libpython-dev:amd64.
Preparing to unpack .../libpython-dev_2.7.5-5ubuntu3_amd64.deb ...
Unpacking libpython-dev:amd64 (2.7.5-5ubuntu3) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../manpages-dev_3.54-1ubuntu1_all.deb ...
Unpacking manpages-dev (3.54-1ubuntu1) ...
Selecting previously unselected package python2.7-dev.
Preparing to unpack .../python2.7-dev_2.7.6-8ubuntu0.3_amd64.deb ...
Unpacking python2.7-dev (2.7.6-8ubuntu0.3) ...
Selecting previously unselected package python-dev.
Preparing to unpack .../python-dev_2.7.5-5ubuntu3_amd64.deb ...
Unpacking python-dev (2.7.5-5ubuntu3) ...
Selecting previously unselected package python-setuptools.
Preparing to unpack .../python-setuptools_3.3-1ubuntu2_all.deb ...
Unpacking python-setuptools (3.3-1ubuntu2) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up libasan0:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up libatomic1:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up libgmp10:amd64 (2:5.1.3+dfsg-1ubuntu1) ...
Setting up libisl10:amd64 (0.12.2-1) ...
Setting up libcloog-isl4:amd64 (0.18.2-1) ...
Setting up libgomp1:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up libitm1:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up libmpfr4:amd64 (3.1.2-1) ...
Setting up libc-dev-bin (2.19-0ubuntu6.11) ...
Setting up linux-libc-dev:amd64 (3.13.0-116.163) ...
Setting up libc6-dev:amd64 (2.19-0ubuntu6.11) ...
Setting up libexpat1-dev:amd64 (2.1.0-4ubuntu1.3) ...
Setting up libpython2.7-dev:amd64 (2.7.6-8ubuntu0.3) ...
Setting up libquadmath0:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up libtsan0:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up libmpc3:amd64 (1.0.1-1ubuntu1) ...
Setting up binutils (2.24-5ubuntu14.1) ...
Setting up cpp-4.8 (4.8.4-2ubuntu1~14.04.3) ...
Setting up cpp (4:4.8.2-1ubuntu6) ...
Setting up libgcc-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up gcc-4.8 (4.8.4-2ubuntu1~14.04.3) ...
Setting up gcc (4:4.8.2-1ubuntu6) ...
Setting up libstdc++-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.3) ...
Setting up g++-4.8 (4.8.4-2ubuntu1~14.04.3) ...
Setting up g++ (4:4.8.2-1ubuntu6) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
Setting up make (3.81-8.2ubuntu3) ...
Setting up libdpkg-perl (1.17.5ubuntu5.7) ...
Setting up dpkg-dev (1.17.5ubuntu5.7) ...
Setting up build-essential (11.6ubuntu6) ...
Setting up libfakeroot:amd64 (1.20-3ubuntu2) ...
Setting up fakeroot (1.20-3ubuntu2) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
Setting up libalgorithm-diff-perl (1.19.02-3) ...
Setting up libalgorithm-diff-xs-perl (0.04-2build4) ...
Setting up libalgorithm-merge-perl (0.08-2) ...
Setting up libfile-fcntllock-perl (0.14-2build1) ...
Setting up libpython-dev:amd64 (2.7.5-5ubuntu3) ...
Setting up manpages-dev (3.54-1ubuntu1) ...
Setting up python2.7-dev (2.7.6-8ubuntu0.3) ...
Setting up python-dev (2.7.5-5ubuntu3) ...
Setting up python-setuptools (3.3-1ubuntu2) ...
Processing triggers for libc-bin (2.19-0ubuntu6.9) ...
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ sudo easy_install pip
sudo: unable to resolve host THOMASFALGO24B2
Searching for pip
Reading https://pypi.python.org/simple/pip/
Best match: pip 9.0.1
Downloading https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
Processing pip-9.0.1.tar.gz
Writing /tmp/easy_install-Fdh51V/pip-9.0.1/setup.cfg
Running pip-9.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Fdh51V/pip-9.0.1/egg-dist-tmp-deTuWP
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'python_requires'
  warnings.warn(msg)
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.landscape.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
warning: no previously-included files found matching 'appveyor.yml'
no previously-included directories found matching '.github'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
Adding pip 9.0.1 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip2.7 script to /usr/local/bin
Installing pip2 script to /usr/local/bin

Installed /usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ pip install --user azure-cli-shell
Collecting azure-cli-shell
/usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.
  SNIMissingWarning
/usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
  Downloading azure-cli-shell-0.2.0.tar.gz
Collecting applicationinsights (from azure-cli-shell)
  Downloading applicationinsights-0.10.0.tar.gz
Collecting azure-cli (from azure-cli-shell)
  Downloading azure_cli-2.0.2-py2.py3-none-any.whl
Collecting jmespath (from azure-cli-shell)
  Downloading jmespath-0.9.2-py2.py3-none-any.whl
Collecting prompt_toolkit (from azure-cli-shell)
  Downloading prompt_toolkit-1.0.14-py2-none-any.whl (248kB)
    100% |████████████████████████████████| 256kB 3.2MB/s
Requirement already satisfied: pyyaml in /usr/lib/python2.7/dist-packages (from azure-cli-shell)
Requirement already satisfied: six in /usr/lib/python2.7/dist-packages (from azure-cli-shell)
Collecting azure-cli-acr (from azure-cli->azure-cli-shell)
  Downloading azure_cli_acr-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-sql (from azure-cli->azure-cli-shell)
  Downloading azure_cli_sql-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-keyvault (from azure-cli->azure-cli-shell)
  Downloading azure_cli_keyvault-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-cloud (from azure-cli->azure-cli-shell)
  Downloading azure_cli_cloud-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-acs (from azure-cli->azure-cli-shell)
  Downloading azure_cli_acs-2.0.2-py2.py3-none-any.whl (42kB)
    100% |████████████████████████████████| 51kB 3.4MB/s
Collecting azure-cli-core (from azure-cli->azure-cli-shell)
  Downloading azure_cli_core-2.0.2-py2.py3-none-any.whl (74kB)
    100% |████████████████████████████████| 81kB 2.7MB/s
Collecting azure-cli-redis (from azure-cli->azure-cli-shell)
  Downloading azure_cli_redis-0.1.1b3-py2.py3-none-any.whl
Collecting azure-cli-feedback (from azure-cli->azure-cli-shell)
  Downloading azure_cli_feedback-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-lab (from azure-cli->azure-cli-shell)
  Downloading azure_cli_lab-0.0.1-py2.py3-none-any.whl (161kB)
    100% |████████████████████████████████| 163kB 3.3MB/s
Collecting azure-cli-find (from azure-cli->azure-cli-shell)
  Downloading azure_cli_find-0.0.1b1-py2.py3-none-any.whl
Collecting azure-cli-profile (from azure-cli->azure-cli-shell)
  Downloading azure_cli_profile-2.0.2-py2.py3-none-any.whl
Collecting azure-cli-vm (from azure-cli->azure-cli-shell)
  Downloading azure_cli_vm-2.0.2-py2.py3-none-any.whl (64kB)
    100% |████████████████████████████████| 71kB 4.7MB/s
Collecting azure-cli-resource (from azure-cli->azure-cli-shell)
  Downloading azure_cli_resource-2.0.2-py2.py3-none-any.whl
Collecting azure-cli-role (from azure-cli->azure-cli-shell)
  Downloading azure_cli_role-2.0.1-py2.py3-none-any.whl
Collecting azure-cli-batch (from azure-cli->azure-cli-shell)
  Downloading azure_cli_batch-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-component (from azure-cli->azure-cli-shell)
  Downloading azure_cli_component-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-documentdb (from azure-cli->azure-cli-shell)
  Downloading azure_cli_documentdb-0.1.2-py2.py3-none-any.whl
Collecting azure-cli-storage (from azure-cli->azure-cli-shell)
  Downloading azure_cli_storage-2.0.2-py2.py3-none-any.whl (43kB)
    100% |████████████████████████████████| 51kB 3.4MB/s
Collecting azure-cli-appservice (from azure-cli->azure-cli-shell)
  Downloading azure_cli_appservice-0.1.2-py2.py3-none-any.whl
Collecting azure-cli-nspkg (from azure-cli->azure-cli-shell)
  Downloading azure_cli_nspkg-2.0.0-py2.py3-none-any.whl
Collecting azure-cli-monitor (from azure-cli->azure-cli-shell)
  Downloading azure_cli_monitor-0.0.1-py2.py3-none-any.whl
Collecting azure-cli-iot (from azure-cli->azure-cli-shell)
  Downloading azure_cli_iot-0.1.2-py2.py3-none-any.whl
Collecting azure-cli-network (from azure-cli->azure-cli-shell)
  Downloading azure_cli_network-2.0.2-py2.py3-none-any.whl (65kB)
    100% |████████████████████████████████| 71kB 4.6MB/s
Collecting azure-cli-configure (from azure-cli->azure-cli-shell)
  Downloading azure_cli_configure-2.0.2-py2.py3-none-any.whl
Collecting azure-cli-container (from azure-cli->azure-cli-shell)
  Downloading azure_cli_container-0.1.2-py2.py3-none-any.whl
Collecting wcwidth (from prompt_toolkit->azure-cli-shell)
  Downloading wcwidth-0.1.7-py2.py3-none-any.whl
Collecting azure-mgmt-storage==0.31.0 (from azure-cli-acr->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_storage-0.31.0-py2.py3-none-any.whl
Collecting azure-mgmt-containerregistry==0.2.0 (from azure-cli-acr->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_containerregistry-0.2.0-py2.py3-none-any.whl
Collecting azure-mgmt-resource==0.30.2 (from azure-cli-acr->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_resource-0.30.2-py2.py3-none-any.whl (110kB)
    100% |████████████████████████████████| 112kB 3.3MB/s
Collecting azure-mgmt-sql==0.4.0 (from azure-cli-sql->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_sql-0.4.0-py2.py3-none-any.whl (80kB)
    100% |████████████████████████████████| 81kB 5.2MB/s
Collecting azure-mgmt-keyvault==0.30.0 (from azure-cli-keyvault->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_keyvault-0.30.0-py2.py3-none-any.whl
Requirement already satisfied: pyOpenSSL in /usr/lib/python2.7/dist-packages (from azure-cli-keyvault->azure-cli->azure-cli-shell)
Collecting azure-keyvault==0.1.0 (from azure-cli-keyvault->azure-cli->azure-cli-shell)
  Downloading azure_keyvault-0.1.0-py2.py3-none-any.whl (68kB)
    100% |████████████████████████████████| 71kB 4.6MB/s
Collecting azure-mgmt-authorization==0.30.0rc6 (from azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_authorization-0.30.0rc6-py2.py3-none-any.whl
Collecting paramiko (from azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading paramiko-2.1.2-py2.py3-none-any.whl (172kB)
    100% |████████████████████████████████| 174kB 3.3MB/s
Collecting sshtunnel (from azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading sshtunnel-0.1.2.tar.gz
Collecting azure-mgmt-compute==0.33.1rc1 (from azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_compute-0.33.1rc1-py2.py3-none-any.whl (148kB)
    100% |████████████████████████████████| 153kB 3.3MB/s
Collecting azure-graphrbac==0.30.0rc6 (from azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading azure_graphrbac-0.30.0rc6-py2.py3-none-any.whl (43kB)
    100% |████████████████████████████████| 51kB 3.3MB/s
Collecting scp (from azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading scp-0.10.2-py2.py3-none-any.whl
Collecting adal>=0.4.3 (from azure-cli-core->azure-cli->azure-cli-shell)
  Downloading adal-0.4.5-py2.py3-none-any.whl (49kB)
    100% |████████████████████████████████| 51kB 3.3MB/s
Collecting msrestazure>=0.4.7 (from azure-cli-core->azure-cli->azure-cli-shell)
  Downloading msrestazure-0.4.7-py2.py3-none-any.whl
Collecting colorama (from azure-cli-core->azure-cli->azure-cli-shell)
  Downloading colorama-0.3.7-py2.py3-none-any.whl
Collecting tabulate (from azure-cli-core->azure-cli->azure-cli-shell)
  Downloading tabulate-0.7.7-py2.py3-none-any.whl
Collecting argcomplete>=1.8.0 (from azure-cli-core->azure-cli->azure-cli-shell)
  Downloading argcomplete-1.8.2-py2.py3-none-any.whl
Requirement already satisfied: requests in /usr/lib/python2.7/dist-packages (from azure-cli-core->azure-cli->azure-cli-shell)
Collecting msrest>=0.4.4 (from azure-cli-core->azure-cli->azure-cli-shell)
  Downloading msrest-0.4.7-py2.py3-none-any.whl
Requirement already satisfied: pip in /usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg (from azure-cli-core->azure-cli->azure-cli-shell)
Collecting pygments (from azure-cli-core->azure-cli->azure-cli-shell)
  Downloading Pygments-2.2.0-py2.py3-none-any.whl (841kB)
    100% |████████████████████████████████| 849kB 1.3MB/s
Collecting azure-mgmt-redis==1.0.0 (from azure-cli-redis->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_redis-1.0.0-py2.py3-none-any.whl
Collecting whoosh (from azure-cli-find->azure-cli->azure-cli-shell)
  Downloading Whoosh-2.7.4-py2.py3-none-any.whl (468kB)
    100% |████████████████████████████████| 471kB 2.1MB/s
Collecting azure-mgmt-network==0.30.0 (from azure-cli-vm->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_network-0.30.0-py2.py3-none-any.whl (167kB)
    100% |████████████████████████████████| 174kB 3.3MB/s
Collecting azure-storage==0.34.0 (from azure-cli-vm->azure-cli->azure-cli-shell)
  Downloading azure_storage-0.34.0-py2-none-any.whl (187kB)
    100% |████████████████████████████████| 194kB 3.3MB/s
Collecting azure-batch==2.0.0 (from azure-cli-batch->azure-cli->azure-cli-shell)
  Downloading azure_batch-2.0.0-py2.py3-none-any.whl (272kB)
    100% |████████████████████████████████| 276kB 2.2MB/s
Collecting azure-mgmt-batch==3.0.0 (from azure-cli-batch->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_batch-3.0.0-py2.py3-none-any.whl
Collecting azure-mgmt-documentdb==0.1.1 (from azure-cli-documentdb->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_documentdb-0.1.1-py2.py3-none-any.whl
Collecting xmltodict (from azure-cli-appservice->azure-cli->azure-cli-shell)
  Downloading xmltodict-0.10.2.tar.gz
Collecting urllib3[secure]==1.16 (from azure-cli-appservice->azure-cli->azure-cli-shell)
  Downloading urllib3-1.16-py2.py3-none-any.whl (98kB)
    100% |████████████████████████████████| 102kB 3.3MB/s
Collecting azure-mgmt-web==0.31.0 (from azure-cli-appservice->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_web-0.31.0-py2.py3-none-any.whl (244kB)
    100% |████████████████████████████████| 245kB 3.3MB/s
Collecting azure-mgmt-monitor==0.1.0 (from azure-cli-monitor->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_monitor-0.1.0-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 4.0MB/s
Collecting azure-monitor==0.2.0 (from azure-cli-monitor->azure-cli->azure-cli-shell)
  Downloading azure_monitor-0.2.0-py2.py3-none-any.whl
Collecting azure-mgmt-iothub==0.2.1 (from azure-cli-iot->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_iothub-0.2.1-py2.py3-none-any.whl
Collecting azure-mgmt-dns==1.0.0 (from azure-cli-network->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_dns-1.0.0-py2.py3-none-any.whl
Collecting azure-mgmt-trafficmanager==0.30.0rc6 (from azure-cli-network->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_trafficmanager-0.30.0rc6-py2.py3-none-any.whl
Collecting azure-common~=1.1.4 (from azure-mgmt-storage==0.31.0->azure-cli-acr->azure-cli->azure-cli-shell)
  Downloading azure_common-1.1.5-py2.py3-none-any.whl
Collecting azure-mgmt-nspkg (from azure-mgmt-storage==0.31.0->azure-cli-acr->azure-cli->azure-cli-shell)
  Downloading azure_mgmt_nspkg-2.0.0-py2.py3-none-any.whl
Collecting pyasn1>=0.1.7 (from paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading pyasn1-0.2.3-py2.py3-none-any.whl (53kB)
    100% |████████████████████████████████| 61kB 4.0MB/s
Collecting cryptography>=1.1 (from paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading cryptography-1.8.1.tar.gz (423kB)
    100% |████████████████████████████████| 430kB 1.6MB/s
Collecting python-dateutil>=2.1.0 (from adal>=0.4.3->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading python_dateutil-2.6.0-py2.py3-none-any.whl (194kB)
    100% |████████████████████████████████| 194kB 3.2MB/s
Collecting PyJWT>=1.0.0 (from adal>=0.4.3->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading PyJWT-1.4.2-py2.py3-none-any.whl
Collecting keyring>=5.6 (from msrestazure>=0.4.7->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading keyring-10.3.2-py2.py3-none-any.whl
Collecting requests-oauthlib>=0.5.0 (from msrest>=0.4.4->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading requests_oauthlib-0.8.0-py2.py3-none-any.whl
Collecting certifi>=2015.9.6.2 (from msrest>=0.4.4->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading certifi-2017.1.23-py2.py3-none-any.whl (382kB)
    100% |████████████████████████████████| 389kB 2.2MB/s
Collecting enum34>=1.0.4; python_version < "3.4" (from msrest>=0.4.4->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading enum34-1.1.6-py2-none-any.whl
Collecting isodate>=0.5.4 (from msrest>=0.4.4->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading isodate-0.5.4.tar.gz
Collecting azure-nspkg (from azure-storage==0.34.0->azure-cli-vm->azure-cli->azure-cli-shell)
  Downloading azure_nspkg-2.0.0-py2.py3-none-any.whl
Collecting futures (from azure-storage==0.34.0->azure-cli-vm->azure-cli->azure-cli-shell)
  Downloading futures-3.1.1-py2-none-any.whl
Collecting ndg-httpsclient; python_version <= "2.7" and extra == "secure" (from urllib3[secure]==1.16->azure-cli-appservice->azure-cli->azure-cli-shell)
  Downloading ndg_httpsclient-0.4.2.tar.gz
Collecting idna>=2.1 (from cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading idna-2.5-py2.py3-none-any.whl (55kB)
    100% |████████████████████████████████| 61kB 4.1MB/s
Collecting asn1crypto>=0.21.0 (from cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading asn1crypto-0.22.0-py2.py3-none-any.whl (97kB)
    100% |████████████████████████████████| 102kB 6.5MB/s
Collecting packaging (from cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading packaging-16.8-py2.py3-none-any.whl
Collecting setuptools>=11.3 (from cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading setuptools-34.4.1-py2.py3-none-any.whl (390kB)
    100% |████████████████████████████████| 399kB 1.3MB/s
Collecting ipaddress (from cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading ipaddress-1.0.18-py2-none-any.whl
Collecting cffi>=1.4.1 (from cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading cffi-1.10.0-cp27-cp27mu-manylinux1_x86_64.whl (392kB)
    100% |████████████████████████████████| 399kB 2.2MB/s
Collecting secretstorage; sys_platform == "linux2" or sys_platform == "linux" (from keyring>=5.6->msrestazure>=0.4.7->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading SecretStorage-2.3.1.tar.gz
Collecting oauthlib>=0.6.2 (from requests-oauthlib>=0.5.0->msrest>=0.4.4->azure-cli-core->azure-cli->azure-cli-shell)
  Downloading oauthlib-2.0.2.tar.gz (125kB)
    100% |████████████████████████████████| 133kB 3.3MB/s
Collecting pyparsing (from packaging->cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading pyparsing-2.2.0-py2.py3-none-any.whl (56kB)
    100% |████████████████████████████████| 61kB 4.0MB/s
Collecting appdirs>=1.4.0 (from setuptools>=11.3->cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading appdirs-1.4.3-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.4.1->cryptography>=1.1->paramiko->azure-cli-acs->azure-cli->azure-cli-shell)
  Downloading pycparser-2.17.tar.gz (231kB)
    100% |████████████████████████████████| 235kB 3.3MB/s
Installing collected packages: applicationinsights, azure-cli-nspkg, python-dateutil, idna, asn1crypto, pyparsing, packaging, appdirs, setuptools, enum34, ipaddress, pycparser, cffi, cryptography, PyJWT, adal, secretstorage, keyring, oauthlib, requests-oauthlib, certifi, isodate, msrest, msrestazure, colorama, tabulate, jmespath, argcomplete, pygments, azure-cli-core, azure-nspkg, azure-common, azure-mgmt-nspkg, azure-mgmt-storage, azure-mgmt-containerregistry, azure-mgmt-resource, azure-cli-acr, azure-mgmt-sql, azure-cli-sql, azure-mgmt-keyvault, azure-keyvault, azure-cli-keyvault, azure-cli-cloud, azure-mgmt-authorization, pyasn1, paramiko, sshtunnel, azure-mgmt-compute, azure-graphrbac, scp, azure-cli-acs, azure-mgmt-redis, azure-cli-redis, azure-cli-feedback, azure-cli-lab, whoosh, azure-cli-find, azure-cli-profile, azure-mgmt-network, futures, azure-storage, azure-cli-vm, azure-cli-resource, azure-cli-role, azure-batch, azure-mgmt-batch, azure-cli-batch, azure-cli-component, azure-mgmt-documentdb, azure-cli-documentdb, azure-cli-storage, xmltodict, ndg-httpsclient, urllib3, azure-mgmt-web, azure-cli-appservice, azure-mgmt-monitor, azure-monitor, azure-cli-monitor, azure-mgmt-iothub, azure-cli-iot, azure-mgmt-dns, azure-mgmt-trafficmanager, azure-cli-network, azure-cli-configure, azure-cli-container, azure-cli, wcwidth, prompt-toolkit, azure-cli-shell
  Running setup.py install for applicationinsights ... done
  Running setup.py install for pycparser ... error
    Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-GFsNVa/pycparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-GuMLAu-record/install-record.txt --single-version-externally-managed --compile --user --prefix=:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-GFsNVa/pycparser/setup.py", line 54, in <module>
        cmdclass={'install': install, 'sdist': sdist},
      File "/usr/lib/python2.7/distutils/core.py", line 111, in setup
        _setup_distribution = dist = klass(attrs)
      File "/home/thfalgou/.local/lib/python2.7/site-packages/setuptools/dist.py", line 321, in __init__
        _Distribution.__init__(self, attrs)
      File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__
        self.finalize_options()
      File "/home/thfalgou/.local/lib/python2.7/site-packages/setuptools/dist.py", line 389, in finalize_options
        ep.require(installer=self.fetch_build_egg)
      File "/home/thfalgou/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2324, in require
        items = working_set.resolve(reqs, env, installer, extras=self.extras)
      File "/home/thfalgou/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 859, in resolve
        raise VersionConflict(dist, req).with_context(dependent_req)
    pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python2.7/dist-packages), Requirement.parse('six>=1.6.0'))

    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-GFsNVa/pycparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-GuMLAu-record/install-record.txt --single-version-externally-managed --compile --user --prefix=" failed with error code 1 in /tmp/pip-build-GFsNVa/pycparser/
/usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning

Issues with spacing after completion

OS: Mac
Install method: pip install in a virtualenv
Python version: 2.7.12
Shell: bash

When I type group cre[tab][tab] it completes to group create and doesn't insert a space. So you have to type group cre[tab][tab][space] for it to work. If the completion only matches a single thing, it would be nice to add the space.

Similarly, when I type --location and immediately get the list of completions, when I select one, it mushes it together as --locationwestus which then results in an error. It should add the space for you.

Arbitrary value can be set to default scope

az>> %%st
defaulting: st
az: error: argument _command_package: invalid choice: 'st' (choose from 'network', 'appservice', 'batch', 'keyvault', 'vmss', 'sql', 'storage', 'vm', 'iot', 'acs', 'resource', 'policy', 'find', 'container', 'snapshot', 'group', 'provider', 'disk', 'redis', 'documentdb', 'ad', 'cloud', 'component', 'login', 'lock', 'role', 'account', 'feedback', 'logout', 'image', 'feature', 'tag', 'configure')
usage: az [-h] [--output {json,tsv,table,jsonc}] [--verbose] [--debug]
          [--query JMESPATH]
          {network,appservice,batch,keyvault,vmss,sql,storage,vm,iot,acs,resource,policy,find,container,snapshot,group,provider,disk,redis,documentdb,ad,cloud,component,login,lock,role,account,feedback,logout,image,feature,tag,configure}
          ...

st is not a valid subcommand, nevertheless it is set to be a scope.

Can't set environment variable

az>> #export AZURE_STORAGE_ACCOUNT=trdaitest02
az>> #export
export AZURE_HTTP_USER_AGENT="AZURECLISHELL/0.1.1a31"
export AZURE_STORAGE_ACCOUNT="trdaitest01"

Is the external command executed in separate session?

Parameters not syntax highlighted

As far as I can see, the following parameters are not syntax highlighted:

--verbose
--output -o
--debug
--query
--help -h

Not sure if there are any other parameters not syntax highlighted but it will be resolved if these are registered in custom lexer of azure-cli-shell

Unknown locale error "ValueError: unknown locale: UTF-8” with default locale set in MacOSX and Ubuntu

Got unknown locale error "ValueError: unknown locale: UTF-8” with default locale set in MacOSX and Ubuntu (15.10, 16.10, at least):

 $ az-shell
Traceback (most recent call last):
  File "/Users/yoichika/.pyenv/versions/3.5.1/lib/python3.5/runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "/Users/yoichika/.pyenv/versions/3.5.1/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/Users/yoichika/.local/lib/python3.5/site-packages/azclishell/__main__.py", line 18, in <module>
    from azclishell.app import Shell
  File "/Users/yoichika/.local/lib/python3.5/site-packages/azclishell/app.py", line 20, in <module>
    from azclishell.key_bindings import registry, get_section, sub_section
  File "/Users/yoichika/.local/lib/python3.5/site-packages/azclishell/key_bindings.py", line 9, in <module>
    from azclishell.telemetry import TC as telemetry
  File "/Users/yoichika/.local/lib/python3.5/site-packages/azclishell/telemetry.py", line 69, in <module>
    TC = Telemetry(INSTRUMENTATION_KEY)
  File "/Users/yoichika/.local/lib/python3.5/site-packages/applicationinsights/TelemetryClient.py", line 27, in __init__
    self._context = channel.TelemetryContext()
  File "/Users/yoichika/.local/lib/python3.5/site-packages/applicationinsights/channel/TelemetryContext.py", line 39, in __init__
    self.device = contracts.Device()
  File "/Users/yoichika/.local/lib/python3.5/site-packages/applicationinsights/channel/contracts/Device.py", line 30, in __init__
    self._initialize()
  File "/Users/yoichika/.local/lib/python3.5/site-packages/applicationinsights/channel/TelemetryContext.py", line 14, in device_initialize
    self.locale = locale.getdefaultlocale()[0]
  File "/Users/yoichika/.pyenv/versions/3.5.1/lib/python3.5/locale.py", line 559, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/yoichika/.pyenv/versions/3.5.1/lib/python3.5/locale.py", line 487, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

This is actually an error from ApplicationInsight package, NOT from azure-cli-shell. However there should be some error handling placed in azure-cli-shell as long as it depends on ApplicationInsight package.

Default locale set on MacOS and Ubuntu is UTF-8:

$ locale
 LC_CTYPE=UTF-8

This issue must be related to this bug report and this can be resolved by adding locale configuration like this:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

My suggestion for the issue is:

  • To add some error handling to azure-cli-shell so as not to have the error with default locale set
  • To display warning message if locale set configuration isn't good enough in order to lead users to configure their locale set

Feedback on Example feature

  1. For each "line" of the help, I would suggest adding the space between the end of the current line and the input. Currently you have to manually press space.

  2. That the fuscia "help pane" disappears while the command is running is a bit disconcerting. It would be nice if the verbose output (basically saying that the long running operation is running) was placed in the "help pane".

  3. Making the cursor into some kind of spinning activity indicator would be helpful. While we've resisted this in the main CLI, the shell is interactive so this is more jarring.

The bottom status bar is not at the bottom

The [F1]Layout [F2]Defaults line bounces around and does not start at the bottom and bounces around based on the layout.

I expect that hitting F2 or F3 or completed the steps of F1 should leave the status bar at the bottom of the terminal.

Command option suggestions

OS: Mac
Install method: pip install in a virtualenv
Python version: 2.7.12
Shell: bash

When I type vm create I don't get any suggestions for what to type next. If I type - I'll get the short options and then -- will give me the long options. It might be nice to recognize that you've resolved to a command and immediately load the option help box.

Also, the options are not sorted in any kind of order, making it very difficult to know what you should supply next. When you run -h there is a kind of ordering so that the most important things are at the top (for example, resource-group and name). You might look to emulate that in the shell.

Telemetry should not block a user from exiting

Got stuck in the ending sentence for a long time. Finally Ctrl+C. Stuck several seconds still. And finally got a telemtry stack trace:

image

First, we should never see this stacktrace. Will afraid users.
Second, we should not block a customer because Microsoft needs telemtry. Timeout should be short, or process should be daemon thread to be launched even if the shell process is gone.


  • Telemetry should timeout after a period of time
  • Telemetry should happen on a separate thread to not impact UI performance.

Maintain stable shell layouts

The help/sample panel at the bottom automatically bumps up the cursor's position for a few lines while i am still in the typing. The appears quirky and surprises me a bit.
Suggest offer an option so people can at least reserve an estate for samples, and therefore maintains the layouts

Repro:
In shell, type the az vm create command close to the screen's bottom, a second later samples shows up in the bottom and my cursor gets moved up automatically.

After a scope is set redundant output is print.

az>> %% vm
defaulting: vm
az vm: error: the following arguments are required: subcommand
usage: az vm [-h]
             {availability-set,show,user,nic,image,boot-diagnostics,restart,diagnostics,redeploy,extension,generalize,unmanaged-disk,open-port,convert,list-sizes,wait,create,list,delete,disk,stop,resize,get-instance-view,capture,list-ip-addresses,list-vm-resize-options,deallocate,start,encryption,format-secret,update,list-usage}
             ...

The user sets the scope to vm. The following error message and brief help are redundant.

Issue when installing via pip3

As a follow-up to this issue: #78
Since I encountered the above issue, I tried installing Python 3 + pip3 to see if that would help and encountered a different issue.

thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$ pip3 install azure-cli-shell
Downloading/unpacking azure-cli-shell
  Downloading azure-cli-shell-0.2.0.tar.gz
  Running setup.py (path:/tmp/pip_build_thfalgou/azure-cli-shell/setup.py) egg_info for package azure-cli-shell

Downloading/unpacking applicationinsights (from azure-cli-shell)
  Downloading applicationinsights-0.10.0.tar.gz
  Running setup.py (path:/tmp/pip_build_thfalgou/applicationinsights/setup.py) egg_info for package applicationinsights

    warning: no previously-included files matching '*.pyc' found anywhere in distribution
Downloading/unpacking azure-cli (from azure-cli-shell)
  Downloading azure_cli-2.0.2-py2.py3-none-any.whl
Downloading/unpacking jmespath (from azure-cli-shell)
  Downloading jmespath-0.9.2-py2.py3-none-any.whl
Downloading/unpacking prompt-toolkit (from azure-cli-shell)
  Downloading prompt_toolkit-1.0.14-py3-none-any.whl (248kB): 248kB downloaded
Downloading/unpacking pyyaml (from azure-cli-shell)
  Downloading PyYAML-3.12.tar.gz (253kB): 253kB downloaded
  Running setup.py (path:/tmp/pip_build_thfalgou/pyyaml/setup.py) egg_info for package pyyaml

Requirement already satisfied (use --upgrade to upgrade): six in /usr/lib/python3/dist-packages (from azure-cli-shell)
Downloading/unpacking azure-cli-configure (from azure-cli->azure-cli-shell)
  Downloading azure_cli_configure-2.0.2-py2.py3-none-any.whl
Downloading/unpacking azure-cli-role (from azure-cli->azure-cli-shell)
  Downloading azure_cli_role-2.0.1-py2.py3-none-any.whl
Downloading/unpacking azure-cli-core (from azure-cli->azure-cli-shell)
  Downloading azure_cli_core-2.0.2-py2.py3-none-any.whl (74kB): 74kB downloaded
Downloading/unpacking azure-cli-storage (from azure-cli->azure-cli-shell)
  Downloading azure_cli_storage-2.0.2-py2.py3-none-any.whl (43kB): 43kB downloaded
Downloading/unpacking azure-cli-nspkg (from azure-cli->azure-cli-shell)
  Downloading azure_cli_nspkg-2.0.0-py2.py3-none-any.whl
Downloading/unpacking azure-cli-profile (from azure-cli->azure-cli-shell)
  Downloading azure_cli_profile-2.0.2-py2.py3-none-any.whl
Downloading/unpacking azure-cli-redis (from azure-cli->azure-cli-shell)
  Could not find a version that satisfies the requirement azure-cli-redis (from azure-cli->azure-cli-shell) (from versions: 0.1.0b11, 0.1.1b2, 0.1.1b1, 0.1.0b11, 0.1.1b2, 0.1.1b3, 0.1.0b10, 0.1.1b1, 0.1.0b8, 0.1.1b3, 0.1.0b4, 0.1.0b7, 0.1.0b10, 0.1.0b9, 0.1.0b9)
Cleaning up...
No distributions matching the version for azure-cli-redis (from azure-cli->azure-cli-shell)
Storing debug log for failure in /home/thfalgou/.pip/pip.log
thfalgou@THOMASFALGO24B2:/mnt/c/Users/thfalgou$

Feedback on $

This seems to be for user feedback only. In that case, it would be nice to print a short text description of what the error code means (0 Success, 1 Failure, etc.).

Feedback on toolbar layout

Instead of displaying Cloud when you are logged out and Subscription when you are logged in, it might be nice to display both of these pieces of information at all times, possibly as a second row in the toolbar. You might consider adding user/service-principal name as well, possibly.

Suggest on 'restart-shell' text

  1. So far, it is an info with a regular text font and color, both Troy and I missed that part and was confused why the configuration was not picked up.
  2. We should offer a convenient command to restart shell. Apologize if we already have one but i just have not found it.

Non-interactive login doesn't work

OS: Mac
Install method: pip install in a virtualenv
Python version: 2.7.12
Shell: bash

I tried login -u {my-user} I get an error. I can only successfully login using the interactive device flow.

Feedback on ? feature

Since the ? feature allows you retain the output of the last run command, it might be nice to use it to enable simplified scenarios like:

az>> vm list -g {myrg}
az>> vm stop --ids ?[].id

The equivalent bash command would be something like:

az>> vm stop --ids ${az vm list -g {myrg} --query "[].id"}

Feedback on scope feature

A few points:

  1. It wasn't clear to me what this feature did. After chatting with you, it basically functions like cd to traverse the CLI "tree". The concept is great! The usability can be improved.

  2. IMO it should not attempt to run the command. The cd analogy applies here. If I typed C:/foo/bar/this.exe, my program would execute and I would end up at C:/. If I wanted to change the "scope" I would cd C:/foo/bar and the run this.exe. If I tried cd C:/foo/bar/this.exe I'd get an error. Since people are used to navigating with cd (and cd .., which I'd recommend in lieu of ^^), I would follow this pattern.

  3. You should validate the "path" when setting scope. If I do %%network and %%noodle it will happily set this even though this is not valid.

  4. If I want to have a default scope of network vnet, I could not get this to work. I tried:

a. %%network vnet
b. %%"network vnet"
c. %%network %%vnet

I would suggest making option a work.

  1. I would suggest making ^^ work like cd. Instead of ^^ going back to root, I would overload %% to accept %%.. for going back.

Does not catch keyboard interrupts

I ran log in, then exited with Ctrl+C and saw the following.

This happens in general. Not specific to the login command.

IMO, it should catch the exception.

az>> login
To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code ABC12345 to authenticate.
^C^[[ATraceback (most recent call last):
  File "/usr/local/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.6/site-packages/azclishell/__main__.py", line 71, in <module>
    main(sys.argv[1:])
  File "/usr/local/lib/python3.6/site-packages/azclishell/__main__.py", line 67, in main
    shell_app.run()
  File "/usr/local/lib/python3.6/site-packages/azclishell/app.py", line 553, in run
    self.cli_execute(cmd)
  File "/usr/local/lib/python3.6/site-packages/azclishell/app.py", line 502, in cli_execute
    result = self.app.execute(args)
  File "/usr/local/lib/python3.6/site-packages/azure/cli/core/application.py", line 157, in execute
    result = expanded_arg.func(params)
  File "/usr/local/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 363, in _execute_command
    result = op(client, **kwargs) if client else op(**kwargs)
  File "/usr/local/lib/python3.6/site-packages/azure/cli/command_modules/profile/custom.py", line 79, in login
    tenant)
  File "/usr/local/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 118, in find_subscriptions_on_login
    tenant, self._management_resource_uri)
  File "/usr/local/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 364, in find_through_interactive_flow
    token_entry = context.acquire_token_with_device_code(resource, code, _CLIENT_ID)
  File "/usr/local/lib/python3.6/site-packages/adal/authentication_context.py", line 273, in acquire_token_with_device_code
    return self._acquire_token(token_func)
  File "/usr/local/lib/python3.6/site-packages/adal/authentication_context.py", line 109, in _acquire_token
    return token_func(self)
  File "/usr/local/lib/python3.6/site-packages/adal/authentication_context.py", line 266, in token_func
    token = token_request.get_token_with_device_code(user_code_info)
  File "/usr/local/lib/python3.6/site-packages/adal/token_request.py", line 398, in get_token_with_device_code
    token = client.get_token_with_polling(oauth_parameters, interval, expires_in)
  File "/usr/local/lib/python3.6/site-packages/adal/oauth2_client.py", line 341, in get_token_with_polling
    time.sleep(refresh_internal)
KeyboardInterrupt

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.