Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
kthoden committed Nov 26, 2019
2 parents 1e49b7b + 8400697 commit f376176
Show file tree
Hide file tree
Showing 9 changed files with 88 additions and 53 deletions.
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
/input/
/output/
/runtime/
/dependencies/
examples

# Byte-compiled / optimized / DLL files
__pycache__/
Expand Down
5 changes: 1 addition & 4 deletions .init-container.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#!/bin/bash


echo 'export PATH="$EOA_SCRIPTS_DIR:$PATH"' >> ~/.bashrc

ln -s $INPUT_DIR input
ln -s $OUTPUT_DIR output
echo 'export PATH="$EOA_SCRIPTS_DIR:$PATH"' > ./.bashrc

# wait, keep container running:
bash -c 'while :; do :; done & kill -STOP $! && wait $!'
11 changes: 2 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -104,12 +104,5 @@ RUN echo '#!/bin/bash' > $UTILS_BIN_DIR/saxon
RUN echo 'java -jar $UTILS_BIN_DIR/saxon9he.jar "$@"' >> $UTILS_BIN_DIR/saxon
RUN chmod ugo+x $UTILS_BIN_DIR/saxon

# create a HOME and reasonable environment settings for the user:
ENV HOME /home/user
RUN useradd --create-home user
WORKDIR ${HOME}

COPY ".init-container.sh" "$HOME/init_container.sh"
RUN chmod ugo+x "$HOME/init_container.sh"

USER user
COPY ".init-container.sh" "$UTILS_BIN_DIR/init_container.sh"
RUN chmod ugo+x "$UTILS_BIN_DIR/init_container.sh"
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,11 @@ Docker images are not deleted though.

# General Usage Information

The `input` directory is for unprocessed publications as you might have received them from authors or editors.
The `output` directory is for processed publications and intermediate data.
The `runtime/input` directory is for unprocessed publications as you might have received them from authors or editors.
The `runtime/output` directory is for processed publications and intermediate data.
When entering the docker container conversion scripts are in your $PATH, and can executed like any other executable.
In your `HOME` directory you'll find `input` and `output` directories, which are docker volumes mirroring the directories of the same name outside of the container.
In order to compile a publication, just copy them into `./input`, enter the docker container, and call the necessary scripts.
In your `HOME` directory you'll find `input` and `output` directories, which are docker volumes mirroring the directories in `runtime/` outside of the container.
In order to compile a publication, just copy them into `runtime/input`, enter the docker container, and call the necessary scripts.
For an example, see chapter "Workflows".

## Configuration
Expand All @@ -83,8 +83,8 @@ Compiling your documents involves following a workflow which can consist of seve

## The LaTeX workflow (eoatex -> pdf, django, epub)

The following description uses the example publication in `input/example` (from the `eoa-publication-model` repository).
In order to apply the workflow to any other publication copy it into the `input/` directory and adjust paths in the description accordingly.
The following description uses the example publication in `runtime/input/example` (copied from the `eoa-publication-model` repository).
In order to apply the workflow to any other publication copy it into the `runtime/input/` directory and adjust paths in the description accordingly.

1. enter the docker container

Expand Down
5 changes: 4 additions & 1 deletion docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,19 @@ services:
build: .
image: ${IMAGE_NAME}
container_name: ${CONTAINER_NAME}
command: "/home/user/init_container.sh"
command: "/eoa/bin/init_container.sh"
volumes:
- ./${SRC_DIR}:${SRC_DIR_IN_CONTAINER}
- ./${HOME_DIR}:${HOME_DIR_IN_CONTAINER}
- ./${INPUT_DIR}:${INPUT_DIR_IN_CONTAINER}
- ./${OUTPUT_DIR}:${OUTPUT_DIR_IN_CONTAINER}
environment:
- HOME=${HOME_DIR_IN_CONTAINER}
- INPUT_DIR=${INPUT_DIR_IN_CONTAINER}
- OUTPUT_DIR=${OUTPUT_DIR_IN_CONTAINER}
- DEPENDENCIES_DIR=${DEPENDENCIES_DIR_IN_CONTAINER}
- EOA_SCRIPTS_DIR=${SRC_DIR_IN_CONTAINER}
ports: []
user: ${USER}:${GROUP}
working_dir: ${HOME_DIR_IN_CONTAINER}
tty: true
15 changes: 10 additions & 5 deletions scripts/config/env.conf → scripts/config/env_default.conf
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,20 @@ CONTAINER_NAME=eoa_skripts
SRC_DIR=src
SRC_DIR_IN_CONTAINER=/eoa/skripts

INPUT_DIR=input
DEPENDENCIES_DIR=dependencies
DEPENDENCIES_DIR_IN_CONTAINER=/eoa/dependencies

RUNTIME_DIR=runtime

HOME_DIR=${RUNTIME_DIR}/work_dir
HOME_DIR_IN_CONTAINER=/home/work_dir

INPUT_DIR=${RUNTIME_DIR}/input
INPUT_DIR_IN_CONTAINER=/eoa/input

OUTPUT_DIR=output
OUTPUT_DIR=${RUNTIME_DIR}/output
OUTPUT_DIR_IN_CONTAINER=/eoa/output

DEPENDENCIES_DIR=dependencies
DEPENDENCIES_DIR_IN_CONTAINER=/eoa/dependencies

###################################################
# user and group:
# USER=$(id -u)
Expand Down
57 changes: 37 additions & 20 deletions scripts/exit.py
Original file line number Diff line number Diff line change
@@ -1,56 +1,73 @@
#!/usr/bin/env python3

from utils.settings import BASE_DIR, load_config
from utils.settings import env_file, BASE_DIR, load_config, create_docker_env_file

from pathlib import Path
import shutil
import os

def rm_dirs( config, rm_deps):
path = Path( BASE_DIR, config['DEPENDENCIES_DIR'] )
def rm_dir(
path
):
print( "removing dir '{}'".format( path ) )
shutil.rmtree(
path,
ignore_errors=True
)

def rm_docker_env_file( config ):
path = Path(
BASE_DIR / ".env"
)
print( "removing '{}'".format( path ) )
path.unlink()
def rm_file(
path
):
if path.is_file():
print( "removing file '{}'".format( path ) )
path.unlink()

if __name__ == '__main__':

from argparse import ArgumentParser

if not env_file.exists():
create_docker_env_file()
config = load_config()

parser = ArgumentParser(
description="clean up the repository"
)
parser.add_argument(
"--rm-deps",
action = "store_true"
"-d", "--deps",
action = "store_true",
help = "remove dependencies",
)
parser.add_argument(
"-r", "--runtime",
action = "store_true",
help = "remove '{rt_dir}'".format( rt_dir = BASE_DIR / config['RUNTIME_DIR'] ),
)
parser.add_argument(
"--env-file",
action = "store_true"
"-e", "--env",
action = "store_true",
help = "remove existing .env file",
)
parser.add_argument(
"--all",
action = "store_true"
action = "store_true",
help = "purge in every way",
)
args = parser.parse_args()

from stop import stop

stop( config )

rm_dirs(
config,
rm_deps = args.rm_deps or args.all
)
if args.env_file or args.all:
rm_docker_env_file( config )
if args.deps or args.all:
rm_dir(
path = BASE_DIR / config['DEPENDENCIES_DIR']
)
if args.runtime or args.all:
rm_dir(
path = BASE_DIR / config['RUNTIME_DIR']
)
if args.env or args.all:
rm_file(
env_file
)
30 changes: 26 additions & 4 deletions scripts/init.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,27 @@ def create_dirs( config ):
create_dir(
BASE_DIR / config['DEPENDENCIES_DIR']
)
create_dir(
BASE_DIR / config['HOME_DIR']
)
create_dir(
BASE_DIR / config['INPUT_DIR']
)
create_dir(
BASE_DIR / config['OUTPUT_DIR']
)
in_link = Path(BASE_DIR / config['HOME_DIR'] / 'input' )
if not(in_link.is_symlink()) and not(in_link.exists()):
in_link . symlink_to(
config['INPUT_DIR_IN_CONTAINER'],
target_is_directory = True,
)
out_link = Path(BASE_DIR / config['HOME_DIR'] / 'output' )
if not(out_link.is_symlink()) and not(out_link.exists()):
out_link . symlink_to(
config['OUTPUT_DIR_IN_CONTAINER'],
target_is_directory = True,
)

def install_git_dep(
repo_name,
Expand Down Expand Up @@ -79,12 +94,19 @@ def install_git_dep(
description="initialize the repository: download git deps, create directories, etc"
)
parser.add_argument(
"--force-deps",
action = "store_true"
"-d", "--force-deps",
action = "store_true",
help = "download dependencies, even if yet existing",
)
parser.add_argument(
"--build",
action = "store_true"
action = "store_true",
help = "rebuild docker image from Dockerfile",
)
parser.add_argument(
"-e", "--env",
action = "store_true",
help = "overwrite existing .env file",
)
args = parser.parse_args()

Expand Down Expand Up @@ -126,7 +148,7 @@ def install_git_dep(
env = config,
)

# copy example publication to $INPUT_DIR
# copy example publication to $INPUT_DIR:
copy_dir(
BASE_DIR / config['DEPENDENCIES_DIR'] / 'eoa-publication-model/examples',
BASE_DIR / config['INPUT_DIR'] / 'example'
Expand Down
2 changes: 1 addition & 1 deletion scripts/utils/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
BASE_DIR = Path( __file__ ).parent.parent.parent
SCRIPT_DIR = Path( __file__ ).parent.parent

orig_config_file = SCRIPT_DIR / "config" / "env.conf"
orig_config_file = SCRIPT_DIR / "config" / "env_default.conf"
env_file = BASE_DIR / ".env"


Expand Down

0 comments on commit f376176

Please sign in to comment.