Skip to content

Commit adcd160

Browse files
authored
Actions test (#1)
* fixed * fixed * fixed * testing * testing * testing * final testing * all env activate file added * activation done * updated setup.py * pushed all changes and completed cli * fixed the activate script and github action
1 parent 2b6d5db commit adcd160

27 files changed

+275
-259
lines changed

.github/workflows/test_cli.yml

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Keepr CLI test
2+
3+
on: [push]
4+
5+
jobs:
6+
build:
7+
runs-on: ${{ matrix.platform }}
8+
strategy:
9+
fail-fast: false
10+
max-parallel: 4
11+
matrix:
12+
platform: [ubuntu-latest, macos-latest, windows-latest]
13+
python-version: [3.6, 3.7, 3.8]
14+
15+
steps:
16+
- uses: actions/checkout@v2
17+
- name: Set up Python ${{ matrix.python-version }}
18+
uses: actions/setup-python@v2
19+
with:
20+
python-version: ${{ matrix.python-version }}
21+
- name: Install dependencies
22+
run: |
23+
python -m pip install --upgrade pip
24+
pip install flake8 pytest click SqlAlchemy virtualenv
25+
- name: Lint with flake8
26+
run: |
27+
# stop the build if there are Python syntax errors or undefined names
28+
flake8 keepr/ --count --select=E9,F63,F7,F82 --show-source --statistics
29+
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
30+
flake8 keepr/ --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
31+
- name: Test with pytest
32+
run: |
33+
pytest keepr/
34+
env:
35+
PLATFORM: ${{ matrix.platform }}

.github/workflows/testing_cli.yml

-49
This file was deleted.

.gitignore

+6
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ wheels/
2525
*.egg
2626
MANIFEST
2727

28+
## tox file
29+
tox.ini
30+
2831
## requirements file
2932
pkg_scripts/requirements.txt
3033

@@ -36,6 +39,9 @@ pkg_scripts/requirements.txt
3639
*.manifest
3740
*.spec
3841

42+
## vscode folder
43+
.vscode
44+
3945
# Installer logs
4046
pip-log.txt
4147
pip-delete-this-directory.txt

MANIFEST.in

+3-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
## for excluding any package data you dont want in the package source code after installation
1+
## for excluding any package data you dont want in the package source code after installation
2+
include keepr/utils/scripts/activate_env.bat
3+
include keepr/utils/scripts/activate_env.sh

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# ShopKeepr
2+
3+
[![Actions Status](https://github.com/Geek-ubaid/ShopKeepr/workflows/Shopkeepr/badge.svg)](https://github.com/Geek-ubaid/ShopKeepr/actions)
4+
25
An automated requirements manager for python projects.
36

47
Ever felt that updating the requirements.txt file is a bit too tedious? or too bloated with a lot of dependencies? Same. A lot of times it happens that after uninstalling a package from your project, there are dangling dependencies still left.

VERSION.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
__version__ == '1.1.5'

keepr/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
import keepr

keepr/__main__.py

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
from pathlib import Path
2+
import click
3+
4+
from keepr.utils.db_management import Database
5+
from keepr.utils.environment_management import activate_env
6+
from keepr.utils.pkg_installation import install_packages, install_requirements
7+
from keepr.utils.pkg_updation import update_packages
8+
from keepr.utils.pkg_uninstallation import uninstall_packages
9+
from keepr.utils.misc_functions import is_in_venv
10+
11+
INFORMATION = {
12+
'name': "shopkeepr",
13+
'version': "1.1.4",
14+
}
15+
16+
17+
class create_db(object):
18+
19+
def __init__(self):
20+
"""For creating an instance of db to be shared as context"""
21+
dbfile = Path('packages.db')
22+
database = Database()
23+
self.engine = database.engine
24+
self.db = database.packages
25+
26+
if not dbfile.is_file():
27+
self.db, self.engine = database.initiate_engine()
28+
29+
30+
@click.group(help='A CLI Tool for handling dangling dependencies')
31+
@click.version_option(INFORMATION['version'])
32+
@click.pass_context
33+
def run_application(ctx):
34+
ctx.obj = create_db()
35+
36+
37+
@run_application.command(help='Activating Virtual Environment')
38+
@click.pass_context
39+
def activate(ctx):
40+
activate_env()
41+
42+
43+
@run_application.command()
44+
@click.argument('packages', nargs=-1, type=str)
45+
@click.option('--req', '-r', nargs=1, type=str,
46+
help="Install file using requirements file")
47+
@click.option('--update', '-u', nargs=1, type=str,
48+
help="Update an existing packages")
49+
@click.pass_context
50+
def install(ctx, req, packages, update):
51+
"""Install packages in the environemnt egs install pkg1==1.0 pkg2=1.0"""
52+
if is_in_venv():
53+
if req:
54+
install_requirements(ctx.obj.db, ctx.obj.engine)
55+
elif update:
56+
update_packages(packages, ctx.obj.db, ctx.obj.engine)
57+
elif packages:
58+
install_packages(packages, ctx.obj.db, ctx.obj.engine)
59+
else:
60+
click.echo("Give the package name to be installed")
61+
else:
62+
click.echo("Activate the environment first before installing packages")
63+
64+
65+
@run_application.command()
66+
@click.argument('packages', nargs=-1, type=str)
67+
@click.pass_context
68+
def uninstall(ctx, packages):
69+
"""Uninstall Packages and dependencies egs uninstall pkg1==1.0 pkg2=1.0"""
70+
if is_in_venv():
71+
uninstall_packages(packages, ctx.obj.db, ctx.obj.engine)
72+
else:
73+
click.echo("Activate the environment first before uninstalling packages")
74+
75+
76+
if __name__ == "__main__":
77+
run_application()

keepr/environment_management.py

-51
This file was deleted.

keepr/main.py

-87
This file was deleted.

keepr/requirements.txt

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
click==7.1.2
File renamed without changes.

keepr/tests/requirements_test.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
click

keepr/tests/test_cli.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from keepr.__main__ import run_application
2+
from click.testing import CliRunner
3+
4+
import sys
5+
sys.path.append('..')
6+
7+
8+
def test_install_package():
9+
runner = CliRunner()
10+
result = runner.invoke(run_application, ['install', 'click'])
11+
assert result.exit_code == 0
12+
13+
14+
def test_install_package_req():
15+
runner = CliRunner()
16+
result = runner.invoke(
17+
run_application, [
18+
'install', '-r', 'requirements_test.txt'])
19+
assert result.exit_code == 0
20+
21+
22+
def test_uninstall_package():
23+
runner = CliRunner()
24+
result = runner.invoke(run_application, ['uninstall', 'click'])
25+
assert result.exit_code == 0
26+
27+
28+
def test_update_package():
29+
runner = CliRunner()
30+
result = runner.invoke(run_application, ['install', '-u', 'click'])
31+
assert result.exit_code == 0
File renamed without changes.

0 commit comments

Comments
 (0)