зеркало из https://github.com/microsoft/cadet-cli.git
Initial feature-set docs and starter code (#2)
* add logo, update readme * add travis config * .travis.yml - add newline at file end * fix typo * add example cli * ignore vscode config * reference contributing.md from readme.md * add packaging tools * revfix: capitalize SDK * pytest support, basic test * drop support for python2 in travis * revfix: typos and improvements
This commit is contained in:
Родитель
db00f1abd0
Коммит
f004196f8b
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 43 KiB |
|
@ -1,3 +1,6 @@
|
||||||
|
# Vscode settings
|
||||||
|
.vscode/
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.py[cod]
|
*.py[cod]
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
language: python
|
||||||
|
python:
|
||||||
|
- "3.6"
|
||||||
|
# command to install dependencies
|
||||||
|
install:
|
||||||
|
- pip install -r src/requirements.txt
|
||||||
|
# command to run tests
|
||||||
|
script:
|
||||||
|
- pytest
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
||||||
|
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
||||||
|
the rights to use your contribution. For details, visit https://cla.microsoft.com.
|
||||||
|
|
||||||
|
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
|
||||||
|
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
|
||||||
|
provided by the bot. You will only need to do this once across all repos using our CLA.
|
||||||
|
|
||||||
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||||
|
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
|
||||||
|
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
|
+ Install [python >= 3.7.2](https://www.python.org/downloads/)
|
||||||
|
+ Ensure you have [pip](https://pip.pypa.io/en/stable/installing/)
|
||||||
|
+ `cd src`
|
||||||
|
+ `pip install -r requirements.txt`
|
||||||
|
+ Ready to code and run
|
||||||
|
|
||||||
|
## Dependency Management
|
||||||
|
|
||||||
|
In this project, we manage dependencies [this way](https://www.kennethreitz.org/essays/a-better-pip-workflow) (because it's simple and meets our minimum requirements).
|
||||||
|
|
||||||
|
To add dependencies:
|
||||||
|
|
||||||
|
+ Add an entry to `requirements-to-freeze.txt`
|
||||||
|
+ Then run `pip install -r requirements-to-freeze.txt`
|
||||||
|
+ Finally, when ready to lock versions (before release), run `pip freeze > requirements.txt`
|
||||||
|
|
||||||
|
To update dependencies:
|
||||||
|
|
||||||
|
+ Run `pip install -r requirements-to-freeze.txt --upgrade`
|
||||||
|
+ Finally, when ready to lock versions (before release), run `pip freeze > requirements.txt`
|
33
README.md
33
README.md
|
@ -1,5 +1,36 @@
|
||||||
|
# cadet-cli
|
||||||
|
|
||||||
# Contributing
|
**C**osmos **A**utomated **D**ata **E**xchange **T**ool - A cross-platform utility to synchronize data with a [DocumentDB](https://docs.microsoft.com/en-us/azure/cosmos-db/create-sql-api-dotnet)-backed [Azure Cosmos DB](https://azure.microsoft.com/en-us/services/cosmos-db/) instance. 👩🚀☁
|
||||||
|
|
||||||
|
![Cadet-cli branded logo of a rocketship](./.github/logo.png)
|
||||||
|
|
||||||
|
You can __install the latest version of `cadet` from the [Releases](https://github.com/Microsoft/cadet-cli/releases/latest) page__, right here on GitHub.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
> Note: at this time, `cadet` [does not support](https://github.com/Microsoft/cadet-cli/issues/1) downloading data from Azure Cosmos DB.
|
||||||
|
|
||||||
|
Cadet is designed to make it simple to exchange data with Azure Cosmos DB instances that are using the [DocumentDB](https://docs.microsoft.com/en-us/azure/cosmos-db/create-sql-api-dotnet) backing store. It is a cross-platform [python](https://www.python.org/) CLI that leverages the Azure Cosmos DB python SDK under the hood. Here are some common things you can do using `cadet`:
|
||||||
|
|
||||||
|
### Import data from csv
|
||||||
|
|
||||||
|
The following command will import a comma-separated values file into the Azure Cosmos DB server located at `your-server-connection-string` into the collection `your-collection-name`. It will read the data from `path/to/csv.csv`, and will output progress as data uploads.
|
||||||
|
|
||||||
|
```
|
||||||
|
cadet import --type csv --uri "your-server-connection-string" --collection "your-collection-name" path/to/csv.csv
|
||||||
|
```
|
||||||
|
|
||||||
|
### Import data from tsv
|
||||||
|
|
||||||
|
The following command will import a tab-separated values file into the Azure Cosmos DB server located at `your-server-connection-string` into the collection `your-collection-name`. It will read the data from `path/to/tsv.tsv`, and will output progress as data uploads.
|
||||||
|
|
||||||
|
```
|
||||||
|
cadet import --type tsv --uri "your-server-connection-string" --collection "your-collection-name" path/to/tsv.tsv
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
For more information - including how to get started - see the [CONTRIBUTING](./CONTRIBUTING.md) document.
|
||||||
|
|
||||||
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
||||||
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
*.spec
|
||||||
|
build/
|
||||||
|
dist/
|
|
@ -0,0 +1,15 @@
|
||||||
|
# package
|
||||||
|
|
||||||
|
This folder contains the utilities needed to package `cadet` into an install-able format, using [pyInstaller](https://pyinstaller.readthedocs.io/).
|
||||||
|
|
||||||
|
## Producing a package
|
||||||
|
|
||||||
|
> Note: to create builds for different operating systems, these steps must be done on each desired os.
|
||||||
|
|
||||||
|
The following commands will produce a build artifact in the `./dist` folder.
|
||||||
|
|
||||||
|
```
|
||||||
|
# note: ensure you're in the /package directory of this project
|
||||||
|
pip install -r requirements.txt
|
||||||
|
pyinstaller --onefile ../src/cadet.py
|
||||||
|
```
|
|
@ -0,0 +1 @@
|
||||||
|
pyinstaller
|
|
@ -0,0 +1,6 @@
|
||||||
|
altgraph==0.16.1
|
||||||
|
future==0.17.1
|
||||||
|
macholib==1.11
|
||||||
|
pefile==2018.8.8
|
||||||
|
PyInstaller==3.4
|
||||||
|
pywin32-ctypes==0.2.0
|
|
@ -0,0 +1,9 @@
|
||||||
|
import click
|
||||||
|
|
||||||
|
@click.version_option('1.0.0')
|
||||||
|
@click.group()
|
||||||
|
def cadet():
|
||||||
|
pass
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
cadet()
|
|
@ -0,0 +1,3 @@
|
||||||
|
pylint
|
||||||
|
pytest
|
||||||
|
click
|
|
@ -0,0 +1,21 @@
|
||||||
|
altgraph==0.16.1
|
||||||
|
astroid==2.1.0
|
||||||
|
atomicwrites==1.2.1
|
||||||
|
attrs==18.2.0
|
||||||
|
Click==7.0
|
||||||
|
colorama==0.4.1
|
||||||
|
future==0.17.1
|
||||||
|
isort==4.3.4
|
||||||
|
lazy-object-proxy==1.3.1
|
||||||
|
macholib==1.11
|
||||||
|
mccabe==0.6.1
|
||||||
|
more-itertools==5.0.0
|
||||||
|
pefile==2018.8.8
|
||||||
|
pluggy==0.8.0
|
||||||
|
py==1.7.0
|
||||||
|
PyInstaller==3.4
|
||||||
|
pylint==2.2.2
|
||||||
|
pytest==4.0.2
|
||||||
|
pywin32-ctypes==0.2.0
|
||||||
|
six==1.12.0
|
||||||
|
wrapt==1.10.11
|
|
@ -0,0 +1,9 @@
|
||||||
|
import click
|
||||||
|
from click.testing import CliRunner
|
||||||
|
from ..cadet import cadet
|
||||||
|
|
||||||
|
def test_version():
|
||||||
|
runner = CliRunner()
|
||||||
|
result = runner.invoke(cadet, ['--version'])
|
||||||
|
assert result.exit_code == 0
|
||||||
|
assert result.output == 'cadet, version 1.0.0\n'
|
Загрузка…
Ссылка в новой задаче