From 39bc3e04f1d809a42225b7581f08c4064a85577c Mon Sep 17 00:00:00 2001 From: Alex Aiezza Date: Thu, 5 Nov 2015 16:43:59 -0500 Subject: [PATCH] Gradle file, Usage documents & Launch4J configurations --- .classpath | 1 + .gitignore | 7 +- .project | 2 +- build.gradle | 288 ++++++++++++++++++ resources/FlickUsage.txt | 35 +++ resources/UnflickUsage.txt | 31 ++ resources/flick | 7 + .../launch4j_configs/genzip_NOWRAP_l4j.xml | 30 ++ resources/launch4j_configs/genzip_l4j.xml | 32 ++ .../launch4j_configs/ungenzip_NOWRAP_l4j.xml | 30 ++ resources/launch4j_configs/ungenzip_l4j.xml | 30 ++ resources/logo.ico | Bin 0 -> 236606 bytes resources/logo.jpg | Bin 0 -> 14524 bytes resources/unflick | 7 + 14 files changed, 496 insertions(+), 4 deletions(-) create mode 100644 build.gradle create mode 100644 resources/FlickUsage.txt create mode 100644 resources/UnflickUsage.txt create mode 100644 resources/flick create mode 100644 resources/launch4j_configs/genzip_NOWRAP_l4j.xml create mode 100644 resources/launch4j_configs/genzip_l4j.xml create mode 100644 resources/launch4j_configs/ungenzip_NOWRAP_l4j.xml create mode 100644 resources/launch4j_configs/ungenzip_l4j.xml create mode 100644 resources/logo.ico create mode 100644 resources/logo.jpg create mode 100644 resources/unflick diff --git a/.classpath b/.classpath index 901eefe..c981e5a 100644 --- a/.classpath +++ b/.classpath @@ -1,5 +1,6 @@ + diff --git a/.gitignore b/.gitignore index 32858aa..4becc56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,5 @@ *.class -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - # Package Files # *.jar *.war @@ -10,3 +7,7 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +\build +\.gradle +/bin/ diff --git a/.project b/.project index 21bc3f1..3b4d90e 100644 --- a/.project +++ b/.project @@ -23,7 +23,7 @@ - 1446755116563 + 1446758019905 14 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..abfaa47 --- /dev/null +++ b/build.gradle @@ -0,0 +1,288 @@ +apply plugin: 'java' +apply plugin: 'eclipse' + +group = 'rit' +version = 0.1 +jar.baseName = 'flick' +// def uploadSite = 'ftp.bioinformatics.rit.edu' + +repositories { + mavenCentral() +} + +buildscript { + repositories { + mavenCentral() + maven { + url "https://plugins.gradle.org/m2/" + } + } + dependencies { + classpath "gradle.plugin.edu.sc.seis.gradle:launch4j:1.1.3" + // Needed for upload task + classpath 'commons-net:commons-net:3.3' + } +} + +apply plugin: "edu.sc.seis.launch4j" + +copyL4jLib { + include "$libsDir/${name.toLowerCase()}-${version}.jar" +} + +launch4j { + jar = "$libsDir/${name.toLowerCase()}-${version}.jar" + + headerType = 'console' + outputDir = "resources" + chdir = '' + icon = "$projectDir/resources/logo.ico" + + bundledJrePath = "%JAVA_HOME%/bin/java.exe" + bundledJre64Bit = true + bundledJreAsFallback = true + downloadUrl = 'http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html' + + // companyName = 'Aiezza Inc' + supportUrl = 'https://github.com/aaiezza/flick' + + outfile = "${name.toLowerCase()}.exe" +} + +task flickExe( dependsOn: generateXmlConfig, type: Exec ) { + commandLine "${->launch4j.launch4jCmd}", "${->project.buildDir}/${->launch4j.outputDir}/${->launch4j.xmlFileName}" + workingDir "${->project.buildDir}/${->launch4j.outputDir}" +} + +flickExe.doFirst { + launch4j { + mainClassName = 'edu.rit.flick.util.Flick' + } + generateXmlConfig.writeXmlConfig() +} + +task unflickExe( dependsOn: generateXmlConfig, type: Exec ) { + commandLine "${->launch4j.launch4jCmd}", "${->project.buildDir}/${->launch4j.outputDir}/${->launch4j.xmlFileName}" + workingDir "${->project.buildDir}/${->launch4j.outputDir}" +} + +unflickExe.doFirst { + launch4j { + outfile = 'un' + outfile + mainClassName = 'edu.rit.flick.util.Unflick' + } + generateXmlConfig.writeXmlConfig() +} + +// Explicitly create the main configuration +configurations { + main +} + +dependencies { + compile 'com.google.guava:guava:18.0' + compile 'net.lingala.zip4j:zip4j:1.3.2' + compile 'it.unimi.dsi:dsiutils:2.2.4' + + testCompile 'junit:junit:4.+' + testCompile 'junit-addons:junit-addons:1.+' + + main configurations.compile +} + +// Redefine the sourcesets +sourceSets { + main { + java.srcDir 'src' + resources { + srcDir 'resources' + include '*Usage.txt' + exclude 'launch4j_configs' + } + } + test { + java.srcDir 'test' + resources.srcDirs 'test_resources', main.resources + } +} + +// Create bare jars. (This will come in handy later when we can upload to maven central) +sourceSets.all { set -> + def jarTask = task("${set.name}Jar", type: Jar) { + baseName = jar.baseName + "-$set.name" + from set.output + } + + artifacts { + archives jarTask + } +} + +// Extract dependencies into a temp folder so they can be exported to the main jar +task extractJars( type: Copy ) { + dependsOn configurations.main + + def depJarFolder = file("${project.buildDir}/dep-jars/") + + outputs.upToDateWhen { depJarFolder.exists() } + + if ( !depJarFolder.exists() ) + { + from { + configurations.main.asFileTree.each { + from( zipTree( it ) ) + } + // Don't include the actual archives themselves + null + } + into depJarFolder + } +} + +tasks.jar { + dependsOn extractJars + baseName = 'flick' + from sourceSets.main.output + from file("${project.buildDir}/dep-jars/") +} + +// Insert version number into usage statement +processResources { + eachFile { copyDetails -> + if ( copyDetails.path.endsWith( 'Usage.txt' ) ) { + filter { line -> + line.replace('{{version}}', "$version") + } + } + } + outputs.upToDateWhen { false } +} + +// Task for bundling the releases +task bundleReleases( group: 'Distribution' ) { + description = 'Builds distributions of flick for Unix & Windows systems.' + dependsOn 'bundleUnixRelease', 'bundleWindowsRelease' +} + +task bundleUnixRelease ( group: 'Distribution', type: Tar ) { + dependsOn jar + + baseName = jar.baseName + compression = Compression.GZIP + extension = 'tar.gz' + archiveName = "$baseName.$extension" + destinationDir file( "$distsDir" ) + + from( sourceSets.main.resources.getSrcDirs() ) { + include 'flick', 'unflick' + eachFile { + fileMode = 0755 + } + } + from ( "$libsDir" ) { + include "${baseName}-${version}.jar" + rename "${baseName}-${version}.jar", "${baseName}.jar" + } + into "${baseName}-${version}" + + outputs.upToDateWhen { false } +} + +task bundleWindowsRelease ( group: 'Distribution', type: Zip ) { + dependsOn flickExe, unflickExe + + baseName = jar.baseName + archiveName = "win-$baseName.$extension" + destinationDir file( "$distsDir" ) + + from "$buildDir/resources" + include 'flick.exe', 'unflick.exe' + into "${baseName}-${version}" + + outputs.upToDateWhen { false } +} + +build << { bundleReleases } + +def lock = 0 + +// File uploaders +def getUploader = { fileLocation, uploadPath -> + + lock ++ + printf 'Uploading %s%n', fileLocation + + [ + run: { + def ftp = new org.apache.commons.net.ftp.FTPClient() + def config = new org.apache.commons.net.ftp.FTPClientConfig() + ftp.configure config + def error = false + try { + def reply + ftp.connect uploadSite + // printf( "Connected to %s successfully.%n", uploadSite ) + // println ftp.replyString + + // After connection attempt, you should check the reply code to verify + // success. + reply = ftp.replyCode + + if( !org.apache.commons.net.ftp.FTPReply.isPositiveCompletion( reply ) ) { + ftp.disconnect() + println( "FTP server refused connection." ) + } + + // login + ftp.login 'FTPUser', 'FTPPassword' + + // transfer files + ftp.changeWorkingDirectory uploadPath + + def transferFile = file fileLocation + def fis = new java.io.FileInputStream( transferFile ) + ftp.storeFile transferFile.name, fis + fis.close() + + printf '%s uploaded.%n', transferFile.name + + ftp.logout() + } catch( IOException e ) { + error = true + e.printStackTrace() + } finally { + if( ftp.isConnected() ) { + try { + ftp.disconnect() + } catch( IOException ioe ) { + // do nothing + } + } + } + lock -- + } + ] as java.lang.Thread +} + +// Upload distribution artifacts to an FTP +task uploadDistribution( group: 'Distribution' , dependsOn: bundleReleases ) << { + + def t1 = getUploader "$libsDir/${jar.baseName}-${version}.jar", '/flick/builds' + def t2 = getUploader "$libsDir/${jar.baseName}-main-${version}.jar", '/flick/builds' + def t3 = getUploader "$distsDir/win-${jar.baseName}.zip", '/flick/Windows' + def t4 = getUploader "$distsDir/${jar.baseName}.tar.gz", '/flick/Unix' + + t1.start() + t2.start() + t3.start() + t4.start() + + while ( lock > 0 ) {} +} + +task p << { + println sourceSets.getNames() + this.properties.sort().each { k, v -> + println "$k : $v" + } +} diff --git a/resources/FlickUsage.txt b/resources/FlickUsage.txt new file mode 100644 index 0000000..029e80e --- /dev/null +++ b/resources/FlickUsage.txt @@ -0,0 +1,35 @@ +Flick v{{version}} +Usage: flick [-options] PATH [OUTPUT_FILE] + PATH can be either a file or directory + If no OUTPUT_FILE is given, the default will be the PATH given + with the extension .flick + +where options include: + --no-zip flick will compress PATH without compressing + encountered FASTA or FASTQ files to .flickfa + or .flickfq format respectively + --no-zip-fa flick will compress PATH without compressing + encountered FASTA files to .flickfa format + --no-zip-fq flick will compress PATH without compressing + encountered FASTQ files to .flickfq format + + -d --delete delete PATH after compression is complete + -v --verbose enable verbose output + --help display this helpful information + +* If no FASTA/Q files are found or given, + the PATH will undergo standard ZIP compression. +* FASTA/Q file detection is currently limited to detecting file extensions. + +EXAMPLES: + flick --delete --verbose Drosophila_research/ Dmel_research.flick + >> Compress the directory 'Drosophila_research' recursively + and delete the directory leaving the file Dmel_research.flick + and verbose output on the system + + flick -d GCF_000001405.28_GRCh38.p2_genomic.fna Homo_sapien.fna.flickfa + >> Compress the file GCF_000001405.28_GRCh38.p2_genomic.fna + then delete it leaving Homo_sapien.fna.flickfa + + flick SRR304976.fq + >> Compress SRR304976.fq to SRR304976.fq.flickfq diff --git a/resources/UnflickUsage.txt b/resources/UnflickUsage.txt new file mode 100644 index 0000000..e468688 --- /dev/null +++ b/resources/UnflickUsage.txt @@ -0,0 +1,31 @@ +Flick v{{version}} +Usage: unflick [-options] FLICK_FILE [OUTPUT_PATH] + +where options include: + --keep-zipped unflick will compress PATH without compressing encountered + FASTA or FASTQ files + --keep-zipped-fa unflick will compress PATH without compressing encountered + FASTA files + --keep-zipped-fq unflick will compress PATH without compressing encountered + FASTQ files + + -d --delete delete FLICK_FILE after decompression + -v --verbose enable verbose output + --help display this helpful information + +* Compressed FASTA/Q file detection is currently limited to detecting + file extensions .flickfa and .flickfq respectively within a .flick file. + +EXAMPLES: + unflick --delete --verbose Dmel_research.flick + >> Decompress the 'Dmel_research.flick' and delete the flick file + and tell me all about it. + All .flickfa/q files (compressed FASTA/Q files) will be inflated as well. + + unflick -d GCF_000001405.28_GRCh38.p2_genomic.fna.flickfa + >> Decompress the file GCF_000001405.28_GRCh38.p2_genomic.fna.flickfa + then delete it leaving GCF_000001405.28_GRCh38.p2_genomic.fna + + unflick SRR304976.fq.flick + >> Decompress SRR304976.fq.flick to SRR304976.fq + \ No newline at end of file diff --git a/resources/flick b/resources/flick new file mode 100644 index 0000000..ad9f421 --- /dev/null +++ b/resources/flick @@ -0,0 +1,7 @@ +#!/bin/bash + +# Bash script to run flick.jar + +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + +java -cp $DIR/flick.jar com.rit.flick.util.Flick $@ diff --git a/resources/launch4j_configs/genzip_NOWRAP_l4j.xml b/resources/launch4j_configs/genzip_NOWRAP_l4j.xml new file mode 100644 index 0000000..fc1ebe6 --- /dev/null +++ b/resources/launch4j_configs/genzip_NOWRAP_l4j.xml @@ -0,0 +1,30 @@ + + + true + console + . + D:\git\flick\resources\flick.exe + + + + normal + http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html + + false + false + + D:\git\flick\resources\logo.ico + + edu.rit.flick.util.Flick + flick.jar + + + %JAVA_HOME%/bin/java.exe + true + true + 1.8.0 + + preferJre + 64/32 + + \ No newline at end of file diff --git a/resources/launch4j_configs/genzip_l4j.xml b/resources/launch4j_configs/genzip_l4j.xml new file mode 100644 index 0000000..95d9ba5 --- /dev/null +++ b/resources/launch4j_configs/genzip_l4j.xml @@ -0,0 +1,32 @@ + + + false + console + D:\git\flick\build\libs\flick.jar + D:\School\RIT\thesis\workspace\flick\resources\flick.exe + + + + + normal + http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html + + + false + false + + D:\git\flick\resources\logo.ico + + edu.rit.flick.util.Flick + flick.jar + + + %JAVA_HOME%/bin/java.exe + true + true + 1.8.0 + + preferJre + 64/32 + + \ No newline at end of file diff --git a/resources/launch4j_configs/ungenzip_NOWRAP_l4j.xml b/resources/launch4j_configs/ungenzip_NOWRAP_l4j.xml new file mode 100644 index 0000000..564af31 --- /dev/null +++ b/resources/launch4j_configs/ungenzip_NOWRAP_l4j.xml @@ -0,0 +1,30 @@ + + + true + console + . + D:\git\flick\resources\unflick.exe + + + + normal + http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html + + false + false + + D:\git\flick\resources\Logo.ico + + edu.geneopedia.flick.util.UngenZip + flick.jar + + + %JAVA_HOME%/bin/java.exe + true + true + 1.8.0 + + preferJre + 64/32 + + \ No newline at end of file diff --git a/resources/launch4j_configs/ungenzip_l4j.xml b/resources/launch4j_configs/ungenzip_l4j.xml new file mode 100644 index 0000000..f1e10e5 --- /dev/null +++ b/resources/launch4j_configs/ungenzip_l4j.xml @@ -0,0 +1,30 @@ + + + false + console + D:\git\flick\build\libs\flick.jar + D:\git\flick\resources\unflick.exe + + + + normal + http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html + + false + false + + D:\git\flick\resources\logo.ico + + edu.geneopedia.flick.util.UngenZip + flick.jar + + + %JAVA_HOME%/bin/java.exe + true + true + 1.8.0 + + preferJre + 64/32 + + \ No newline at end of file diff --git a/resources/logo.ico b/resources/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..e15ce1158bcf9429e78f7b561c8caeeeace47e96 GIT binary patch literal 236606 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ƶ-(-Wl*AKHFfHsC}JkdY! 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