diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2170bbb..02a3a87 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -27,6 +27,8 @@ jobs: - 'nightly' os: - ubuntu-latest + - windows-latest + - macOS-latest arch: - x64 steps: diff --git a/.gitignore b/.gitignore index abc5673..234971e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ /docs/build/ .CondaPkg test/example_files/dna2.fasta.* +.DS_Store +Manifest* diff --git a/Artifacts.toml b/Artifacts.toml new file mode 100644 index 0000000..16b098d --- /dev/null +++ b/Artifacts.toml @@ -0,0 +1,42 @@ +[[ncbi-blast]] +arch = "aarch64" +git-tree-sha1 = "0406b91031ce302fa9117606d007d04635279fef" +os = "macos" + + [[ncbi-blast.download]] + sha256 = "e8da4f34b0421da051b1c2d9e5f8e1e43bf76e38cf9361a1dbe2fbc44b6224db" + url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.16.0/ncbi-blast-2.16.0+-aarch64-macosx.tar.gz" +[[ncbi-blast]] +arch = "x86_64" +git-tree-sha1 = "690abc170201bc029d0e7386da0791d7a76d98ff" +os = "macos" + + [[ncbi-blast.download]] + sha256 = "7eee1e7720f5daaf06e39d9c92b125d9072de7eb81f499c005dedb08b932324c" + url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.16.0/ncbi-blast-2.16.0+-x64-macosx.tar.gz" +[[ncbi-blast]] +arch = "aarch64" +git-tree-sha1 = "39394a0d1959ae677fde91f3148e1a6bc94f11eb" +libc = "glibc" +os = "linux" + + [[ncbi-blast.download]] + sha256 = "d447a232ed3c47d1a5abca91932e0e4d3e6540f2c970cee26aa52b994392e0c2" + url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.16.0/ncbi-blast-2.16.0+-aarch64-linux.tar.gz" +[[ncbi-blast]] +arch = "x86_64" +git-tree-sha1 = "401cfe44557a4063e16671896f0834e2648b67af" +libc = "glibc" +os = "linux" + + [[ncbi-blast.download]] + sha256 = "b0b13098c901d23b324ad1700e7471bb7408a7f7f517d74d5faad711be76e8f4" + url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.16.0/ncbi-blast-2.16.0+-x64-linux.tar.gz" +[[ncbi-blast]] +arch = "x86_64" +git-tree-sha1 = "f8f04f978f874b0a2a50ba3ebcfe97f29eaa740d" +os = "windows" + + [[ncbi-blast.download]] + sha256 = "3b6f27a72e9a875f1c02119704775a8e04ae97b5e4a148b560f9be9acd39e943" + url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.16.0/ncbi-blast-2.16.0+-x64-win64.tar.gz" diff --git a/CondaPkg.toml b/CondaPkg.toml deleted file mode 100644 index 40086da..0000000 --- a/CondaPkg.toml +++ /dev/null @@ -1,3 +0,0 @@ - -[deps.blast] -channel = "bioconda" diff --git a/Project.toml b/Project.toml index b0c628f..2573f6d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,11 +1,11 @@ name = "NCBIBlast" uuid = "dcaf3faf-48b5-45a7-abb1-fcfd75344536" authors = ["Kevin Bonham and contributors"] -version = "0.1.0" +version = "0.2.0" [deps] -CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" [compat] -CondaPkg = "0.2.23" +Pkg = "1.10.0" julia = "1.10" diff --git a/dev/generate_artifact_toml.jl b/dev/generate_artifact_toml.jl new file mode 100644 index 0000000..488a184 --- /dev/null +++ b/dev/generate_artifact_toml.jl @@ -0,0 +1,18 @@ +using Pkg: BinaryPlatforms +using ArtifactUtils: add_artifact! + +blast_version = "2.16.0" +url_common = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/$(blast_version)/ncbi-blast-$(blast_version)+-" +platform_url_pairs = [ + BinaryPlatforms.MacOS(:aarch64) => "$(url_common)aarch64-macosx.tar.gz", + BinaryPlatforms.MacOS(:x86_64) => "$(url_common)x64-macosx.tar.gz", + BinaryPlatforms.Linux(:aarch64) => "$(url_common)aarch64-linux.tar.gz", + BinaryPlatforms.Linux(:x86_64) => "$(url_common)x64-linux.tar.gz", + BinaryPlatforms.Windows(:x86_64) => "$(url_common)x64-win64.tar.gz" +] + +foreach(platform_url_pairs) do (platform, url) + add_artifact!("Artifacts.toml", "ncbi-blast", url; platform, force=true) +end + +## diff --git a/src/NCBIBlast.jl b/src/NCBIBlast.jl index 0b7dcfc..d712941 100644 --- a/src/NCBIBlast.jl +++ b/src/NCBIBlast.jl @@ -7,7 +7,17 @@ export blastn, tblastx, makeblastdb -using CondaPkg +using Pkg.Artifacts: @artifact_str + +const BLAST_VERSION = "2.16.0" +const BIN_PATH = joinpath(artifact"ncbi-blast", "ncbi-blast-$(BLAST_VERSION)+", "bin") + +_blastn_exe() = joinpath(BIN_PATH, "blastn") +_blastx_exe() = joinpath(BIN_PATH, "blastx") +_blastp_exe() = joinpath(BIN_PATH, "blastp") +_tblastn_exe() = joinpath(BIN_PATH, "tblastn") +_tblastx_exe() = joinpath(BIN_PATH, "tblastx") +_makeblastdb_exe() = joinpath(BIN_PATH, "makeblastdb") function add_cli_kwargs!(cmd::Vector{String}, kwargs) for (key,val) in pairs(kwargs) @@ -85,11 +95,9 @@ Use '-help' to print detailed descriptions of command line arguments ``` """ function blastn(stdin = nothing; stdout=stdout, kwargs...) - cmd = ["blastn"] + cmd = [_blastn_exe()] add_cli_kwargs!(cmd, kwargs) - CondaPkg.withenv() do - run(pipeline(Cmd(cmd); stdout, stdin)) - end + run(pipeline(Cmd(cmd); stdout, stdin)) end @@ -141,11 +149,9 @@ DESCRIPTION ``` """ function blastp(stdin = nothing; stdout=stdout, kwargs...) - cmd = ["blastp"] + cmd = [_blastp_exe()] add_cli_kwargs!(cmd, kwargs) - CondaPkg.withenv() do - run(pipeline(Cmd(cmd); stdout, stdin)) - end + run(pipeline(Cmd(cmd); stdout, stdin)) end """ @@ -199,11 +205,9 @@ Use '-help' to print detailed descriptions of command line arguments ``` """ function blastx(stdin = nothing; stdout=stdout, kwargs...) - cmd = ["blastx"] + cmd = [_blastx_exe()] add_cli_kwargs!(cmd, kwargs) - CondaPkg.withenv() do - run(pipeline(Cmd(cmd); stdin, stdout)) - end + run(pipeline(Cmd(cmd); stdin, stdout)) end @@ -258,11 +262,9 @@ Use '-help' to print detailed descriptions of command line arguments ``` """ function tblastn(stdin = nothing; stdout=stdout, kwargs...) - cmd = ["tblastn"] + cmd = [_tblastn_exe()] add_cli_kwargs!(cmd, kwargs) - CondaPkg.withenv() do - run(pipeline(Cmd(cmd); stdout, stdin)) - end + run(pipeline(Cmd(cmd); stdout, stdin)) end """ @@ -311,11 +313,9 @@ Use '-help' to print detailed descriptions of command line arguments ``` """ function tblastx(stdin = nothing; stdout=stdout, kwargs...) - cmd = ["tblastx"] + cmd = [_tblastx_exe()] add_cli_kwargs!(cmd, kwargs) - CondaPkg.withenv() do - run(pipeline(Cmd(cmd); stdout, stdin)) - end + run(pipeline(Cmd(cmd); stdout, stdin)) end @@ -345,11 +345,9 @@ Use '-help' to print detailed descriptions of command line arguments ``` """ function makeblastdb(; kwargs...) - cmd = ["makeblastdb"] + cmd = [_makeblastdb_exe()] add_cli_kwargs!(cmd, kwargs) - CondaPkg.withenv() do - run(Cmd(cmd)) - end + run(Cmd(cmd)) end end