Compare commits

...

22 Commits

Author SHA1 Message Date
9cf6a699c6 Removed submodule
All checks were successful
autoBIGS.engine-bioconda/pipeline/head This commit looks good
2025-02-26 18:08:18 +00:00
4c59c4a5b1 Pipeline now uses submodule for fork of recipe repo 2025-02-26 17:25:28 +00:00
d9ab93e94f Updated submodule
Some checks reported errors
autoBIGS.engine-bioconda/pipeline/head Something is wrong with the build of this commit
2025-02-26 15:00:43 +00:00
b4a5ca3a09 Added initialization steps for the submodule 2025-02-26 15:00:35 +00:00
41441c6aae changed to using submodule
Some checks reported errors
autoBIGS.engine-bioconda/pipeline/head Something is wrong with the build of this commit
2025-02-26 14:32:02 +00:00
453c25e758 Fixed some publishing steps issues
Some checks failed
autoBIGS.engine-bioconda/pipeline/head There was a failure building this commit
2025-02-20 19:09:08 +00:00
6ff02e876e Fixed Jenkinsfile syntax
Some checks failed
autoBIGS.engine-bioconda/pipeline/head There was a failure building this commit
2025-02-20 18:00:11 +00:00
2538cf2687 Moved linting stage to bioconda specific publishing stages
Some checks failed
autoBIGS.engine-bioconda/pipeline/head There was a failure building this commit
2025-02-20 17:59:02 +00:00
077715509d Removed un-needed pull
Some checks reported errors
autoBIGS.engine-bioconda/pipeline/head Something is wrong with the build of this commit
2025-02-20 17:53:25 +00:00
f937ea110d Fixed typo
Some checks failed
autoBIGS.engine-bioconda/pipeline/head There was a failure building this commit
2025-02-20 17:46:40 +00:00
810ec0ee6a Added a step to push the condapackage to git.reslate.systems conda repo
Some checks failed
autoBIGS.engine-bioconda/pipeline/head There was a failure building this commit
2025-02-20 17:44:37 +00:00
1ec6581e27 Updated pipeline to match new fork name
All checks were successful
autoBIGS.engine-bioconda/pipeline/head This commit looks good
2025-02-18 17:11:07 +00:00
b6c32fbd3c Re-added pypi package version fetching script
Some checks failed
autoBIGS.engine-bioconda/pipeline/head There was a failure building this commit
2025-02-18 14:49:49 +00:00
e1cd2e515d Removed uneeded repo 2025-02-18 14:41:27 +00:00
cdda59ac3c Moved run exports to build section instead of package section 2025-02-18 14:40:55 +00:00
e8de40972a Updated cloned directory names 2025-02-18 14:17:31 +00:00
a60eba3c0c Updated recipe repo url 2025-02-18 08:40:11 +00:00
9070ec06fa Changed to single recipe patching script 2025-02-18 08:35:29 +00:00
eb93b59117 Added bioconda-utils to environment.yml 2025-02-17 20:04:13 +00:00
ff420b9e6a Added linting stage to bioconda package publishing 2025-02-17 19:54:30 +00:00
91765cba90 Cited source code for package_latest_version 2025-02-17 19:28:46 +00:00
860210c674 Untracked bioconda-recipes 2025-02-17 17:48:58 +00:00
10 changed files with 145 additions and 99 deletions

3
.gitignore vendored
View File

@@ -175,4 +175,5 @@ pyrightconfig.json
# End of https://www.toptal.com/developers/gitignore/api/python
autobigs-engine/*
autobigs-engine/*
bioconda-recipes/*

0
.gitmodules vendored Normal file
View File

8
.vscode/launch.json vendored
View File

@@ -4,7 +4,13 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "Python Debugger: Current File with Arguments",
"type": "debugpy",

40
Jenkinsfile vendored
View File

@@ -6,21 +6,28 @@ pipeline {
inheritFrom 'miniforge'
}
}
environment {
TOOL_VER = """${sh(
returnStdout: true,
script: 'python pypi_latest_ver.py autoBIGS.engine'
)}"""
}
stages {
stage("prepare") {
parallel {
stage("recipes repo") {
steps {
sh 'git clone https://github.com/Syph-and-VPD-Lab/bioconda-recipes.git'
dir('bioconda-recipes') {
sh 'git pull'
sh 'git pull origin update-autobigs-engine'
sh 'git checkout update-autobigs-engine'
sh 'git config --global --add safe.directory /home/jenkins/agent/workspace/autoBIGS.engine-bioconda_main'
sh 'git config --global --add safe.directory /home/jenkins/agent/workspace/autoBIGS.engine-bioconda_main/auto-updated-bioconda-recipes'
sh 'git clone https://github.com/Syph-and-VPD-Lab/auto-updated-bioconda-recipes.git'
dir('auto-updated-bioconda-recipes') {
sh 'git checkout -b update-autobigs-engine-${TOOL_VER}'
}
}
}
stage("conda") {
steps {
sh 'conda config --add channels bioconda'
sh 'conda env update -n base --file environment.yml'
}
}
@@ -28,24 +35,31 @@ pipeline {
}
stage("generate recipe") {
steps {
sh 'grayskull pypi autobigs.engine --maintainers "Harrison Deng"'
sh 'python scripts/adapt_names.py autobigs.engine'
sh 'grayskull pypi autoBIGS.engine --maintainers "Harrison Deng"'
sh 'python patch_recipe.py'
sh 'cp -r autobigs-engine/* auto-updated-bioconda-recipes/recipes/autobigs-engine/.'
}
}
stage("build") {
steps {
sh 'conda build autobigs-engine'
sh 'conda build auto-updated-bioconda-recipes/recipes/autobigs-engine --output-folder ./conda-bld'
}
}
stage("commit") {
stage('lint') {
steps {
dir('auto-updated-bioconda-recipes') {
sh 'bioconda-utils lint recipes/ --packages autobigs-engine'
}
}
}
stage('commit') {
environment {
TOKEN = credentials('github.com')
}
steps {
dir('bioconda-recipes') {
sh 'cp -r ../autobigs-engine/* recipes/autobigs-engine/.'
sh 'git commit -a -m "Automatically updated autobigs-engine bioconda recipe to $(python ../scripts/package_latest_version.py autoBIGS.engine)."'
sh 'git push https://${TOKEN}@github.com/Syph-and-VPD-Lab/bioconda-recipes.git update-autobigs-engine'
dir('auto-updated-bioconda-recipes') {
sh 'git commit -a -m "Automatically updated autobigs-engine bioconda recipe to ${TOOL_VER}."'
sh 'git push https://${TOKEN}@github.com/Syph-and-VPD-Lab/auto-updated-bioconda-recipes.git update-autobigs-engine-${TOOL_VER}'
}
}
}

View File

@@ -1,50 +0,0 @@
{% set name = "autoBIGS.cli" %}
{% set version = "0.4.2" %}
package:
name: {{ name|lower|replace(".", "-") }}
version: {{ version }}
source:
url: https://pypi.org/packages/source/{{ name[0] }}/{{ name }}/autobigs_cli-{{ version }}.tar.gz
sha256: fc7bf6c604974796f5c8aae52fd9ab9924f5490f4f207a26be803217aae30c82
build:
entry_points:
- autoBIGS = autobigs.cli.program:run
noarch: python
script: {{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation
number: 0
run_exports:
- {{ pin_subpackage( name|lower|replace(".", "-"), max_pin="x.x") }}
requirements:
host:
- python >=3.12
- setuptools >=64
- setuptools-scm >=8
- pip
run:
- python >=3.12
- autobigs-engine
test:
imports:
- autobigs
commands:
- pip check
- autoBIGS --help
- autoBIGS info -h
- autoBIGS st -h
requires:
- pip
about:
home: https://github.com/RealYHD/autoBIGS.cli
summary: A CLI tool to rapidly fetch fetch MLST profiles given sequences for various diseases.
license: GPL-3.0-or-later
license_file: LICENSE
extra:
recipe-maintainers:
- Harrison Deng

Submodule bioconda-recipes deleted from bca9514062

View File

@@ -5,4 +5,8 @@ channels:
dependencies:
- conda-build
- grayskull
- git
- git
- bioconda-utils
- python=3.10.*
- curl
- conda-verify

103
patch_recipe.py Normal file
View File

@@ -0,0 +1,103 @@
#!/usr/bin/env python3
import argparse
from os import fdopen, path
import os
import re
import shutil
from sys import argv
import tempfile
INDENTATION = " "
GRAYSKULL_OUTPUT_PATH = "autoBIGS.engine"
RUN_EXPORTED_VALUE = r'{{ pin_subpackage( name|lower|replace(".", "-"), max_pin="x.x") }}'
LICENSE_SUFFIX = "-or-later"
HOME_PAGE = "https://github.com/Syph-and-VPD-Lab/autoBIGS.engine"
def _calc_indentation(line: str):
return len(re.findall(INDENTATION, line.split(line.strip())[0])) if line != "\n" else 0
def read_grayskull_output():
original_recipe = path.abspath(GRAYSKULL_OUTPUT_PATH)
original_meta = path.join(original_recipe, "meta.yaml")
meta_file = open(original_meta)
lines = meta_file.readlines()
meta_file.close()
return lines
def update_naming_scheme(lines):
modified_lines = []
for line in lines:
matches = re.finditer(r"\{\{\s*name\|lower()\s+\}\}", line)
modified_line = line
for match in matches:
modified_line = modified_line[:match.start(1)] + r'|replace(".", "-")' + modified_line[match.end(1):]
modified_lines.append(modified_line)
return modified_lines
def inject_run_exports(lines: list[str]):
package_indent = False
modified_lines = []
for line in lines:
indentation_count = _calc_indentation(line)
if line == "build:\n" and indentation_count == 0:
package_indent = True
modified_lines.append(line)
elif package_indent and indentation_count == 0:
modified_lines.append(INDENTATION*1 + "run_exports:\n")
modified_lines.append(INDENTATION*2 + "- " + RUN_EXPORTED_VALUE + "\n")
package_indent = False
else:
modified_lines.append(line)
return modified_lines
def suffix_license(lines: list[str]):
about_indent = False
modified_lines = []
for line in lines:
indentation_count = _calc_indentation(line)
if line == "about:\n" and indentation_count == 0:
about_indent = True
modified_lines.append(line)
elif about_indent and indentation_count == 1 and line.lstrip().startswith("license:"):
modified_lines.append(line.rstrip() + LICENSE_SUFFIX + "\n")
about_indent = False
else:
modified_lines.append(line)
return modified_lines
def inject_home_page(lines: list[str]):
about_indent = False
modified_lines = []
for line in lines:
indentation_count = _calc_indentation(line)
if line == "about:\n" and indentation_count == 0:
about_indent = True
modified_lines.append(line)
elif about_indent and indentation_count == 0:
modified_lines.append(INDENTATION + "home: " + HOME_PAGE + "\n")
about_indent = False
else:
modified_lines.append(line)
return modified_lines
def write_to_original(lines: list[str]):
original_recipe = path.abspath(GRAYSKULL_OUTPUT_PATH)
original_meta = path.join(original_recipe, "meta.yaml")
with open(original_meta, "w") as file:
file.writelines(lines)
def rename_recipe_dir():
new_recipe_name = path.abspath(path.join(GRAYSKULL_OUTPUT_PATH.replace(".", "-").lower()))
shutil.rmtree(new_recipe_name, ignore_errors=True)
os.replace(path.abspath(GRAYSKULL_OUTPUT_PATH), new_recipe_name)
if __name__ == "__main__":
original_grayskull_out = read_grayskull_output()
modified_recipe_meta = None
modified_recipe_meta = update_naming_scheme(original_grayskull_out)
modified_recipe_meta = inject_run_exports(modified_recipe_meta)
modified_recipe_meta = suffix_license(modified_recipe_meta)
modified_recipe_meta = inject_home_page(modified_recipe_meta)
write_to_original(modified_recipe_meta)
rename_recipe_dir()

View File

@@ -8,6 +8,7 @@ try:
except ImportError:
from pip._vendor.packaging.version import parse
# Courtesy of https://stackoverflow.com/questions/28774852/pypi-api-how-to-get-stable-package-version
URL_PATTERN = 'https://pypi.python.org/pypi/{package}/json'

View File

@@ -1,32 +0,0 @@
#!/usr/bin/env python3
import argparse
from os import fdopen, path
import os
import re
import shutil
from sys import argv
import tempfile
def update_naming_scheme(recipe_path):
original_recipe = path.abspath(recipe_path)
original_meta = path.join(original_recipe, "meta.yaml")
new_fd, new_file_path = tempfile.mkstemp()
with fdopen(new_fd, "w") as new_file_handle:
with open(original_meta, "r") as original_file_handle:
for line in original_file_handle:
matches = re.finditer(r"\{\{\s*name\|lower()\s+\}\}", line)
modified_line = line
for match in matches:
modified_line = modified_line[:match.start(1)] + r'|replace(".", "-")' + modified_line[match.end(1):]
new_file_handle.write(modified_line)
shutil.move(new_file_path, original_meta)
new_recipe_name = path.join(
path.dirname(original_recipe),
path.basename(original_recipe).replace(".", "-").lower())
shutil.rmtree(new_recipe_name, ignore_errors=True)
os.replace(original_recipe,
new_recipe_name)
if __name__ == "__main__":
update_naming_scheme(argv[1])