Metadata-Version: 2.4
Name: labtasker-plugin-script-generate
Version: 0.1.0
Summary: A Labtasker plugin that decomposes bash script into submit and job scripts..
Author-email: Your Name <your.email@example.com>
License: MIT
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: <4.0,>=3.8.1
Description-Content-Type: text/markdown
Requires-Dist: labtasker

# labtasker-plugin-script-generate

This is a plugin for [Labtasker](https://github.com/fkcptlst/labtasker) that
helps you to automatically split your bash script into submit script and job script.

## Example

You can find the code in the [demo](./demo) directory.

Imagine you have a bash wrapper script for your machine learning experiment. To divide the script into a submit script
and a job script, simply add a few special comments (e.g., `#@submit`, `#@task`, `#@end`).

```diff
#!/bin/bash

export CUDA_HOME=/usr/local/cuda-12.1

+#@submit
for dataset in imagenet cifar10 mnist; do
  for model in resnet50 vit transformer; do
    LOG_DIR=/path/to/logs/$dataset/$model

+    #@task
    python train.py --dataset $dataset \
      --model $model \
      --cuda-home $CUDA_HOME \
      --log-dir $LOG_DIR
+    #@end

  done
done
+#@end

echo "done"
```

Run:

```bash
labtasker generate original.sh
```

You will see `original_submit.sh` and `original_run.sh` generated at the same directory, with
the following content:

### `original_submit.sh`:

```bash
#!/bin/bash
# This script is generated by Labtasker from original.sh

export CUDA_HOME=/usr/local/cuda-12.1

for dataset in imagenet cifar10 mnist; do
  for model in resnet50 vit transformer; do
    LOG_DIR=/path/to/logs/$dataset/$model

    labtasker task submit -- --CUDA_HOME $CUDA_HOME --LOG_DIR $LOG_DIR --dataset $dataset --model $model

  done
done

echo "done"
```

### `original_run.sh`:

```bash
#!/bin/bash
# This script is generated by Labtasker from original.sh

export CUDA_HOME=/usr/local/cuda-12.1

labtasker loop <<'LABTASKER_LOOP_EOF'
CUDA_HOME='%(CUDA_HOME)'
LOG_DIR='%(LOG_DIR)'
dataset='%(dataset)'
model='%(model)'
    python train.py --dataset $dataset \
      --model $model \
      --cuda-home $CUDA_HOME \
      --log-dir $LOG_DIR
LABTASKER_LOOP_EOF

echo "done"
```
