You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@liminal.apache.org by jb...@apache.org on 2020/07/20 06:24:53 UTC

[incubator-liminal] 13/43: Add cli

This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-liminal.git

commit f4bdfac225f3c7656966b0fffafd8d3e871fb7f5
Author: aviemzur <av...@gmail.com>
AuthorDate: Thu Mar 12 12:05:11 2020 +0200

    Add cli
---
 rainbow/cli/__init__.py => rainbow-cli             | 24 +++++++++++++++++++++-
 rainbow/build/__init__.py                          |  3 ---
 .../build/{build_rainbow.py => build_rainbows.py}  |  4 ++--
 rainbow/core/util/files_util.py                    |  2 +-
 requirements.txt                                   |  1 +
 tests/runners/airflow/build/test_build_rainbow.py  |  4 ++--
 6 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/rainbow/cli/__init__.py b/rainbow-cli
old mode 100644
new mode 100755
similarity index 68%
rename from rainbow/cli/__init__.py
rename to rainbow-cli
index c24b2fa..4f16b4e
--- a/rainbow/cli/__init__.py
+++ b/rainbow-cli
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
 #
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
@@ -15,4 +17,24 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# TODO: cli
+import os
+
+import click
+
+from rainbow.build import build_rainbows
+
+
+@click.group()
+def cli():
+    pass
+
+
+@cli.command()
+@click.option('--path', default=os.getcwd(), help='Build within this path.')
+def build(path):
+    click.echo(f'Building rainbows in {path}')
+    build_rainbows.build_rainbows(path)
+
+
+if __name__ == '__main__':
+    cli()
diff --git a/rainbow/build/__init__.py b/rainbow/build/__init__.py
index 9e84106..217e5db 100644
--- a/rainbow/build/__init__.py
+++ b/rainbow/build/__init__.py
@@ -15,6 +15,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-"""
-TODO: rainbow build.
-"""
diff --git a/rainbow/build/build_rainbow.py b/rainbow/build/build_rainbows.py
similarity index 95%
rename from rainbow/build/build_rainbow.py
rename to rainbow/build/build_rainbows.py
index 7c03104..d10a9bc 100644
--- a/rainbow/build/build_rainbow.py
+++ b/rainbow/build/build_rainbows.py
@@ -24,7 +24,7 @@ from rainbow.core.util import files_util
 from rainbow.docker.python.python_image import PythonImage
 
 
-def build_rainbow(path):
+def build_rainbows(path):
     """
     TODO: doc for build_rainbow
     """
@@ -32,7 +32,7 @@ def build_rainbow(path):
     config_files = files_util.find_config_files(path)
 
     for config_file in config_files:
-        print(f'Building artifacts file: f{config_file}')
+        print(f'Building artifacts for file: {config_file}')
 
         with open(config_file) as stream:
             # TODO: validate config
diff --git a/rainbow/core/util/files_util.py b/rainbow/core/util/files_util.py
index e5a8e09..403fec9 100644
--- a/rainbow/core/util/files_util.py
+++ b/rainbow/core/util/files_util.py
@@ -23,6 +23,6 @@ def find_config_files(path):
     files = []
     for r, d, f in os.walk(path):
         for file in f:
-            if file[file.rfind('.') + 1:] in ['yml', 'yaml']:
+            if os.path.basename(file) in ['rainbow.yml', 'rainbow.yaml']:
                 files.append(os.path.join(r, file))
     return files
diff --git a/requirements.txt b/requirements.txt
index 6e05d98..599ab8b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,3 +3,4 @@ PyYAML
 docker==4.2.0
 apache-airflow==1.10.9
 docker-pycreds==0.4.0
+click==7.1.1
diff --git a/tests/runners/airflow/build/test_build_rainbow.py b/tests/runners/airflow/build/test_build_rainbow.py
index d1b28aa..533848f 100644
--- a/tests/runners/airflow/build/test_build_rainbow.py
+++ b/tests/runners/airflow/build/test_build_rainbow.py
@@ -2,7 +2,7 @@ import unittest
 from unittest import TestCase
 
 import docker
-from rainbow.build import build_rainbow
+from rainbow.build import build_rainbows
 
 
 class TestBuildRainbow(TestCase):
@@ -15,7 +15,7 @@ class TestBuildRainbow(TestCase):
             if len(docker_client.images.list(image_name)) > 0:
                 docker_client.images.remove(image=image_name)
 
-        build_rainbow.build_rainbow('tests/runners/airflow/rainbow')
+        build_rainbows.build_rainbows('tests/runners/airflow/rainbow')
 
         for image_name in image_names:
             docker_client.images.get(name=image_name)