diff --git a/my-wf-1/.gitignore b/my-wf-1/.gitignore
new file mode 100644
index 0000000..a50828c
--- /dev/null
+++ b/my-wf-1/.gitignore
@@ -0,0 +1,69 @@
+*.py[cod]
+
+# C extensions
+*.so
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+.eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+lib
+lib64
+venv*/
+pyvenv*/
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+.coverage
+.tox
+.coverage.*
+nosetests.xml
+coverage.xml
+htmlcov
+
+# Translations
+*.mo
+
+# Mr Developer
+.mr.developer.cfg
+.project
+.pydevproject
+.idea
+*.iml
+*.komodoproject
+
+# Complexity
+output/*.html
+output/*/index.html
+
+# Sphinx
+docs/_build
+
+.DS_Store
+*~
+.*.sw[po]
+.build
+.ve
+.env
+.cache
+.pytest
+.bootstrap
+.appveyor.token
+*.bak
+*.log
+.vscode
+.python-version
+.nextflow*
+work
+outdir
diff --git a/my-wf-1/my-wf-1.nf b/my-wf-1/my-wf-1.nf
new file mode 100755
index 0000000..3a30859
--- /dev/null
+++ b/my-wf-1/my-wf-1.nf
@@ -0,0 +1,31 @@
+#!/usr/bin/env nextflow
+
+nextflow.enable.dsl = 2
+version = '0.1.0' // tool version
+
+// universal params go here, change default value as needed
+params.container_version = ""
+params.cpus = 1
+params.mem = 1 // GB
+params.publish_dir = "" // set to empty string will disable publishDir
+
+// tool specific parmas go here, add / change as needed
+params.input_file = ""
+params.output_pattern = "*.html" // fastqc output html report
+
+include { fastqc } from "./wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc"
+include { cleanupWorkdir as cleanup } from "./wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main"
+
+
+workflow MyWf1 {
+ take: // input, make update as needed
+ input_file
+
+ main:
+ fastqc(input_file)
+
+ cleanup(fastqc.out, true)
+
+ emit:
+ output_file = fastqc.out.output
+}
diff --git a/my-wf-1/nextflow.config b/my-wf-1/nextflow.config
new file mode 100644
index 0000000..f2cd1e3
--- /dev/null
+++ b/my-wf-1/nextflow.config
@@ -0,0 +1,4 @@
+docker {
+ enabled = true
+ runOptions = '-u \$(id -u):\$(id -g)'
+}
diff --git a/my-wf-1/pkg.json b/my-wf-1/pkg.json
new file mode 100644
index 0000000..16365d7
--- /dev/null
+++ b/my-wf-1/pkg.json
@@ -0,0 +1,33 @@
+{
+ "name": "my-wf-1",
+ "version": "0.1.0",
+ "description": "FastQC workflow",
+ "main": "my-wf-1",
+ "scripts": {
+ "test": "wfpm test"
+ },
+ "deprecated": false,
+ "keywords": [
+ "bioinformatics",
+ "seq",
+ "qc metrics"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/icgc-tcga-pancancer/demo-wfs.git"
+ },
+ "dependencies": [
+ "github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0",
+ "github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0"
+ ],
+ "devDependencies": [],
+ "contributors": [
+ {
+ "name": "Junjun Zhang",
+ "email": "junjun.zhang@oicr.on.ca"
+ }
+ ],
+ "license": "MIT",
+ "bugReport": "https://github.com/icgc-tcga-pancancer/demo-wfs/issues",
+ "homepage": "https://github.com/icgc-tcga-pancancer/demo-wfs#readme"
+}
\ No newline at end of file
diff --git a/my-wf-1/tests/checker.nf b/my-wf-1/tests/checker.nf
new file mode 100755
index 0000000..7cf1fb8
--- /dev/null
+++ b/my-wf-1/tests/checker.nf
@@ -0,0 +1,67 @@
+#!/usr/bin/env nextflow
+
+/*
+ This is an auto-generated checker workflow, please update as needed
+*/
+
+nextflow.enable.dsl = 2
+version = '0.1.0' // tool version
+
+// universal params
+params.publish_dir = ""
+params.container_version = ""
+
+// tool specific parmas go here, add / change as needed
+params.input_file = ""
+params.expected_output = ""
+
+include { MyWf1 } from '../my-wf-1'
+
+Channel
+ .fromPath(params.input_file, checkIfExists: true)
+ .set { input_file }
+
+
+process file_diff {
+ input:
+ path output_file
+ path expected_gzip
+
+ output:
+ stdout()
+
+ script:
+ """
+ # remove date field before comparison eg,
+ # sed -e 's#"header_filename">.*
test_rg_3.bam#"header_filename">
test_rg_3.bam#'
+
+ diff <( cat ${output_file} | sed -e 's#"header_filename">.*
test_rg_3.bam#"header_filename">
test_rg_3.bam#' ) \
+ <( gunzip -c ${expected_gzip} | sed -e 's#"header_filename">.*
test_rg_3.bam#"header_filename">
test_rg_3.bam#' ) \
+ && ( echo "Test PASSED" && exit 0 ) || ( echo "Test FAILED, output file mismatch." && exit 1 )
+ """
+}
+
+
+workflow checker {
+ take:
+ input_file
+ expected_output
+
+ main:
+ MyWf1(
+ input_file
+ )
+
+ file_diff(
+ MyWf1.out.output_file,
+ expected_output
+ )
+}
+
+
+workflow {
+ checker(
+ file(params.input_file),
+ file(params.expected_output)
+ )
+}
diff --git a/my-wf-1/tests/expected/expected.input_file_name.txt b/my-wf-1/tests/expected/expected.input_file_name.txt
new file mode 100644
index 0000000..d2a060a
--- /dev/null
+++ b/my-wf-1/tests/expected/expected.input_file_name.txt
@@ -0,0 +1 @@
+The input file name is README.md
diff --git a/my-wf-1/tests/expected/expected.test_rg_3_fastqc.out.gz b/my-wf-1/tests/expected/expected.test_rg_3_fastqc.out.gz
new file mode 100644
index 0000000..663e51e
Binary files /dev/null and b/my-wf-1/tests/expected/expected.test_rg_3_fastqc.out.gz differ
diff --git a/my-wf-1/tests/input/README.md b/my-wf-1/tests/input/README.md
new file mode 100644
index 0000000..9df14b7
--- /dev/null
+++ b/my-wf-1/tests/input/README.md
@@ -0,0 +1 @@
+This folder contains tiny data files for testing.
diff --git a/my-wf-1/tests/input/test_rg_3.bam b/my-wf-1/tests/input/test_rg_3.bam
new file mode 100644
index 0000000..ab8a214
Binary files /dev/null and b/my-wf-1/tests/input/test_rg_3.bam differ
diff --git a/my-wf-1/tests/nextflow.config b/my-wf-1/tests/nextflow.config
new file mode 100644
index 0000000..4e214a1
--- /dev/null
+++ b/my-wf-1/tests/nextflow.config
@@ -0,0 +1 @@
+includeConfig '../nextflow.config'
diff --git a/my-wf-1/tests/test-job-1.json b/my-wf-1/tests/test-job-1.json
new file mode 100644
index 0000000..e9bb82b
--- /dev/null
+++ b/my-wf-1/tests/test-job-1.json
@@ -0,0 +1,7 @@
+{
+ "input_file": "input/test_rg_3.bam",
+ "expected_output": "expected/expected.test_rg_3_fastqc.out.gz",
+ "publish_dir": "outdir",
+ "cpus": 1,
+ "mem": 0.5
+}
diff --git a/my-wf-1/tests/wfpr_modules b/my-wf-1/tests/wfpr_modules
new file mode 120000
index 0000000..de8975c
--- /dev/null
+++ b/my-wf-1/tests/wfpr_modules
@@ -0,0 +1 @@
+../wfpr_modules
\ No newline at end of file
diff --git a/my-wf-1/wfpr_modules b/my-wf-1/wfpr_modules
new file mode 120000
index 0000000..de8975c
--- /dev/null
+++ b/my-wf-1/wfpr_modules
@@ -0,0 +1 @@
+../wfpr_modules
\ No newline at end of file
diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/.dockerignore b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/.dockerignore
new file mode 100644
index 0000000..d5a3065
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/.dockerignore
@@ -0,0 +1,5 @@
+.nextflow*
+.gitignore
+work
+outdir
+tests
\ No newline at end of file
diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/Dockerfile b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/Dockerfile
new file mode 100644
index 0000000..913b67a
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/Dockerfile
@@ -0,0 +1,11 @@
+FROM ubuntu:20.04
+
+LABEL org.opencontainers.image.source https://github.com/icgc-argo/demo-wfpkgs
+
+RUN groupadd -g 1000 ubuntu && \
+ useradd -l -u 1000 -g ubuntu ubuntu && \
+ install -d -m 0755 -o ubuntu -g ubuntu /home/ubuntu
+
+USER ubuntu
+
+CMD ["/bin/bash"]
diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/local_modules/cleanup-workdir.nf b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/local_modules/cleanup-workdir.nf
new file mode 100644
index 0000000..09c27c3
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/local_modules/cleanup-workdir.nf
@@ -0,0 +1,75 @@
+#!/usr/bin/env nextflow
+
+/*
+ * Copyright (c) 2019-2021, Ontario Institute for Cancer Research (OICR).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+/*
+ * Contributors:
+ * Junjun Zhang
+ */
+
+/********************************************************************/
+/* this block is auto-generated based on info from pkg.json where */
+/* changes can be made if needed, do NOT modify this block manually */
+nextflow.enable.dsl = 2
+version = '1.1.0'
+container = [
+ 'ghcr.io': 'ghcr.io/icgc-argo/demo-wfpkgs.demo-utils',
+ 'quay.io': 'quay.io/icgc-argo/demo-wfpkgs.demo-utils'
+]
+default_container_registry = 'quay.io'
+/********************************************************************/
+
+params.cpus = 1
+params.mem = 1
+params.files_to_delete = 'NO_FILE'
+params.container_version = ''
+params.container_registry = default_container_registry
+
+
+process cleanupWorkdir {
+ container "${container[params.container_registry]}:${params.container_version ?: version}"
+ cpus params.cpus
+ memory "${params.mem} GB"
+
+ input:
+ path files_to_delete // more accurately, other non-hidden files in the same folder will be deleted as well
+ val virtual_dep_flag // for specifying steps do not produce output files but produce values, set those values here
+
+ output:
+ stdout
+
+ script:
+ """
+ set -euxo pipefail
+
+ IFS=" "
+ read -a files <<< "${files_to_delete}"
+ for f in "\${files[@]}"
+ do
+ dir_to_rm=\$(dirname \$(readlink -f \$f))
+
+ if [[ \$dir_to_rm != ${workflow.workDir}/* ]]; then # skip dir not under workdir, like from input file dir
+ echo "Not delete: \$dir_to_rm/*\"
+ continue
+ fi
+
+ rm -fr \$dir_to_rm/* # delete all files and subdirs but not hidden ones
+ echo "Deleted: \$dir_to_rm/*"
+ done
+ """
+}
diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main.nf b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main.nf
new file mode 100644
index 0000000..afa1cc8
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main.nf
@@ -0,0 +1,66 @@
+#!/usr/bin/env nextflow
+
+/*
+ * Copyright (c) 2019-2021, Ontario Institute for Cancer Research (OICR).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+/*
+ * Contributors:
+ * Junjun Zhang
+ */
+
+/********************************************************************/
+/* this block is auto-generated based on info from pkg.json where */
+/* changes can be made if needed, do NOT modify this block manually */
+nextflow.enable.dsl = 2
+name = 'demo-utils'
+version = '1.1.0'
+/********************************************************************/
+
+
+// load local process (module)
+include { cleanupWorkdir } from './local_modules/cleanup-workdir.nf'
+
+
+// this is kind of like CWL's secondary files
+def getSecondaryFiles(main_file, exts){
+ if (!(main_file instanceof String)) {
+ exit 1, "[getSecondaryFiles] param: main_file must be a string"
+ }
+
+ if (!(exts instanceof List)) {
+ exit 1, "[getSecondaryFiles] param: exts must be a list of strings"
+ }
+
+ def secondaryFiles = []
+ for (ext in exts) {
+ if (ext.startsWith("^")) {
+ ext = ext.replace("^", "")
+ parts = main_file.split("\\.").toList()
+ parts.removeLast()
+ secondaryFiles.add((parts + [ext]).join("."))
+ } else {
+ secondaryFiles.add(main_file + '.' + ext)
+ }
+ }
+ return secondaryFiles
+}
+
+
+// get specific secondary files for BWA alignment, ensure none is missing
+def getBwaSecondaryFiles(main_file){
+ return getSecondaryFiles(main_file, ['fai', 'sa', 'bwt', 'ann', 'amb', 'pac', 'alt'])
+}
diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/nextflow.config b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/nextflow.config
new file mode 100644
index 0000000..f2cd1e3
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/nextflow.config
@@ -0,0 +1,4 @@
+docker {
+ enabled = true
+ runOptions = '-u \$(id -u):\$(id -g)'
+}
diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/pkg.json b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/pkg.json
new file mode 100644
index 0000000..1571f6b
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/pkg.json
@@ -0,0 +1,46 @@
+{
+ "name": "demo-utils",
+ "version": "1.1.0",
+ "description": "Package with helper utilities",
+ "main": "main.nf",
+ "scripts": {
+ "test": "pushd tests && ./run_tests.sh; popd"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/icgc-argo/demo-wfpkgs.git"
+ },
+ "deprecated": false,
+ "keywords": [
+ "bioinformatics",
+ "utilities",
+ "secondary file",
+ "workdir cleanup"
+ ],
+ "contributors": [
+ {
+ "name": "Junjun Zhang",
+ "email": "junjun.zhang@oicr.on.ca"
+ }
+ ],
+ "license": "AGPL-3.0",
+ "dependencies": [],
+ "container": {
+ "registries": [
+ {
+ "registry": "quay.io",
+ "type": "docker",
+ "org": "icgc-argo",
+ "default": true
+ },
+ {
+ "registry": "ghcr.io",
+ "type": "docker",
+ "org": "icgc-argo",
+ "default": false
+ }
+ ]
+ },
+ "bugReport": "https://github.com/icgc-argo/demo-wfpkgs/issues",
+ "homepage": "https://github.com/icgc-argo/demo-wfpkgs#readme"
+}
diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/wfpr_modules b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/wfpr_modules
new file mode 120000
index 0000000..1cc74ba
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/wfpr_modules
@@ -0,0 +1 @@
+../../../../../wfpr_modules
\ No newline at end of file
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.dockerignore b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.dockerignore
new file mode 100644
index 0000000..71266ec
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.dockerignore
@@ -0,0 +1,5 @@
+.gitignore
+.nextflow*
+tests
+work
+outdir
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.gitignore b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.gitignore
new file mode 100644
index 0000000..a50828c
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.gitignore
@@ -0,0 +1,69 @@
+*.py[cod]
+
+# C extensions
+*.so
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+.eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+lib
+lib64
+venv*/
+pyvenv*/
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+.coverage
+.tox
+.coverage.*
+nosetests.xml
+coverage.xml
+htmlcov
+
+# Translations
+*.mo
+
+# Mr Developer
+.mr.developer.cfg
+.project
+.pydevproject
+.idea
+*.iml
+*.komodoproject
+
+# Complexity
+output/*.html
+output/*/index.html
+
+# Sphinx
+docs/_build
+
+.DS_Store
+*~
+.*.sw[po]
+.build
+.ve
+.env
+.cache
+.pytest
+.bootstrap
+.appveyor.token
+*.bak
+*.log
+.vscode
+.python-version
+.nextflow*
+work
+outdir
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/Dockerfile b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/Dockerfile
new file mode 100644
index 0000000..7ddc24b
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/Dockerfile
@@ -0,0 +1,9 @@
+FROM pegi3s/fastqc:0.11.9
+
+LABEL org.opencontainers.image.source https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1
+
+ENV PATH="/tools:${PATH}"
+
+COPY *.py /tools/
+
+CMD ["/bin/bash"]
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.nf b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.nf
new file mode 100755
index 0000000..766fbdd
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.nf
@@ -0,0 +1,41 @@
+#!/usr/bin/env nextflow
+
+nextflow.enable.dsl = 2
+version = '0.1.0' // tool version
+
+// universal params go here, change default value as needed
+params.container_version = ""
+params.cpus = 1
+params.mem = 1 // GB
+params.publish_dir = "" // set to empty string will disable publishDir
+
+// tool specific parmas go here, add / change as needed
+params.input_file = ""
+params.output_pattern = "*.html" // fastqc output html report
+
+
+process fastqc {
+ container "ghcr.io/icgc-tcga-pancancer/awesome-wfpkgs1.fastqc:${params.container_version ?: version}"
+ publishDir "${params.publish_dir}/${task.process.replaceAll(':', '_')}", mode: "copy", enabled: "${params.publish_dir ? true : ''}"
+
+ cpus params.cpus
+ memory "${params.mem} GB"
+
+ input: // input, make update as needed
+ path input_file
+
+ output: // output, make update as needed
+ path "output_dir/${params.output_pattern}", emit: output
+
+ script:
+ // add and initialize variables here as needed
+
+ """
+ mkdir -p output_dir
+
+ fastqc.py \
+ -i ${input_file} \
+ -o output_dir
+
+ """
+}
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.py b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.py
new file mode 100755
index 0000000..99e181c
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import os
+import sys
+import argparse
+import subprocess
+
+
+def main():
+ """
+ Python implementation of tool: fastqc
+
+ This is auto-generated Python code, please update as needed!
+ """
+
+ parser = argparse.ArgumentParser(description='Tool: fastqc')
+ parser.add_argument('-i', '--input-file', dest='input_file', type=str,
+ help='Input file', required=True)
+ parser.add_argument('-o', '--output-dir', dest='output_dir', type=str,
+ help='Output directory', required=True)
+ args = parser.parse_args()
+
+ if not os.path.isfile(args.input_file):
+ sys.exit('Error: specified input file %s does not exist or is not accessible!' % args.input_file)
+
+ if not os.path.isdir(args.output_dir):
+ sys.exit('Error: specified output dir %s does not exist or is not accessible!' % args.output_dir)
+
+ subprocess.run(f"fastqc -o {args.output_dir} {args.input_file}", shell=True, check=True)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/nextflow.config b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/nextflow.config
new file mode 100644
index 0000000..f2cd1e3
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/nextflow.config
@@ -0,0 +1,4 @@
+docker {
+ enabled = true
+ runOptions = '-u \$(id -u):\$(id -g)'
+}
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/pkg.json b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/pkg.json
new file mode 100644
index 0000000..389e210
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/pkg.json
@@ -0,0 +1,38 @@
+{
+ "name": "fastqc",
+ "version": "0.1.0",
+ "description": "FastQC tool",
+ "main": "fastqc",
+ "scripts": {
+ "test": "wfpm test"
+ },
+ "deprecated": false,
+ "keywords": [
+ "bioinformatics"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1.git"
+ },
+ "container": {
+ "registries": [
+ {
+ "registry": "ghcr.io",
+ "type": "docker",
+ "org": "icgc-tcga-pancancer",
+ "default": true
+ }
+ ]
+ },
+ "dependencies": [],
+ "devDependencies": [],
+ "contributors": [
+ {
+ "name": "Junjun Zhang",
+ "email": "junjun.zhang@oicr.on.ca"
+ }
+ ],
+ "license": "MIT",
+ "bugReport": "https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1/issues",
+ "homepage": "https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1#readme"
+}
diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/wfpr_modules b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/wfpr_modules
new file mode 120000
index 0000000..1cc74ba
--- /dev/null
+++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/wfpr_modules
@@ -0,0 +1 @@
+../../../../../wfpr_modules
\ No newline at end of file