forked from ontoportal/ontologies_api
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add ontoportal bash script to run test and development servers
- Loading branch information
1 parent
1d13691
commit f9b02e7
Showing
5 changed files
with
173 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
API_URL=http://localhost:9393 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -71,3 +71,5 @@ test/data/ontology_files/catalog-v001.xml | |
create_permissions.log | ||
|
||
ontologies_api.iml | ||
|
||
.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,166 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Function to display script usage information | ||
show_help() { | ||
echo "Usage: $0 {dev|test|run|help} [--reset-cache] [--api-url API_URL] [--api-key API_KEY]" | ||
echo " dev : Start the Ontoportal API development server." | ||
echo " Example: $0 dev --api-url http://localhost:9393" | ||
echo " Use --reset-cache to remove volumes: $0 dev --reset-cache" | ||
echo " test : Run tests." | ||
echo " run : Run a command in the Ontoportal API Docker container." | ||
echo " help : Show this help message." | ||
echo | ||
echo "Description:" | ||
echo " This script provides convenient commands for managing an Ontoportal API" | ||
echo " application using Docker Compose. It includes options for starting the development server," | ||
echo " running tests, and executing commands within the Ontoportal API Docker container." | ||
echo | ||
echo "Goals:" | ||
echo " - Simplify common tasks related to Ontoportal API development using Docker." | ||
echo " - Provide a consistent and easy-to-use interface for common actions." | ||
} | ||
# Function to update or create the .env file with API_URL and API_KEY | ||
update_env_file() { | ||
local api_url="$1" | ||
|
||
# Update the .env file with the provided values | ||
file_content=$(<.env) | ||
|
||
# Make changes to the variable | ||
while IFS= read -r line; do | ||
if [[ "$line" == "API_URL="* ]]; then | ||
echo "API_URL=$api_url" | ||
else | ||
echo "$line" | ||
fi | ||
done <<< "$file_content" > .env | ||
} | ||
|
||
# Function to create configuration files if they don't exist | ||
create_config_files() { | ||
if [ ! -f ".env" ]; then | ||
echo "Creating .env file from env.sample" | ||
cp .env.sample .env | ||
fi | ||
|
||
if [ ! -f "config/environments/development.rb" ]; then | ||
echo "Creating config/environments/development.rb file from config/environments/config.rb.sample" | ||
cp config/bioportal_config_env.rb.sample config/bioportal_config_development.rb | ||
fi | ||
} | ||
|
||
# Function to handle the "dev" option | ||
dev() { | ||
echo "Starting Ontoportal API development server..." | ||
|
||
create_config_files | ||
local reset_cache=false | ||
local api_url="" | ||
|
||
|
||
# Check for command line arguments | ||
while [[ "$#" -gt 0 ]]; do | ||
case $1 in | ||
--reset-cache) | ||
reset_cache=true | ||
shift | ||
;; | ||
--api-url) | ||
api_url="$2" | ||
shift 2 | ||
;; | ||
*) | ||
echo "Unknown option: $1" | ||
show_help | ||
exit 1 | ||
;; | ||
esac | ||
done | ||
|
||
|
||
|
||
# Check if arguments are provided | ||
if [ -n "$api_url" ] ; then | ||
# If arguments are provided, update the .env file | ||
update_env_file "$api_url" | ||
else | ||
# If no arguments, fetch values from the .env file | ||
source .env | ||
api_url="$API_URL" | ||
fi | ||
|
||
if [ -z "$api_url" ] ; then | ||
echo "Error: Missing required arguments. Please provide both --api-url or update them in your .env" | ||
exit 1 | ||
fi | ||
|
||
# Check if --reset-cache is present and execute docker compose down --volumes | ||
if [ "$reset_cache" = true ]; then | ||
echo "Resetting cache. Running: docker compose down --volumes" | ||
docker compose down --volumes | ||
fi | ||
|
||
echo "Run: bundle exec api s -b 0.0.0.0 -p 3000" | ||
docker compose run --rm -it --service-ports api bash -c "(bundle check || bundle install) && bundle exec rackup -o 0.0.0.0 --port 9393" | ||
} | ||
|
||
# Function to handle the "test" option | ||
test() { | ||
|
||
|
||
local api_url="" | ||
local test_path="" | ||
local test_options="" | ||
|
||
# Check for command line arguments | ||
while [ "$#" -gt 0 ]; do | ||
case "$1" in | ||
--api-url) | ||
shift | ||
api_url="$1" | ||
;; | ||
*) | ||
if [ -z "$test_path" ]; then | ||
test_path="$1" | ||
else | ||
test_options="$test_options $1" | ||
fi | ||
;; | ||
esac | ||
shift | ||
done | ||
|
||
|
||
|
||
script="API_URL=$api_url bundle exec rake test TEST=\"$test_path\" TESTOPTS=\"$test_options\"" | ||
echo "Running tests..." | ||
echo "Run: $script" | ||
|
||
docker compose run --rm -it api bash -c "(bundle check || bundle install) && $script" | ||
} | ||
|
||
# Function to handle the "run" option | ||
run() { | ||
echo "Run: $*" | ||
docker compose run --rm -it api bash -c "$*" | ||
} | ||
|
||
# Main script logic | ||
case "$1" in | ||
"run") | ||
run "${@:2}" | ||
;; | ||
"dev") | ||
dev "${@:2}" | ||
;; | ||
"test") | ||
test "${@:2}" | ||
;; | ||
"help") | ||
show_help | ||
;; | ||
*) | ||
show_help | ||
exit 1 | ||
;; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters