我想编写一个运行ruby(sass)的gradle脚本。我现在的方式是
task compileCss (type: Exec){
def dir = ""
if (System.properties['os.name'].toLowerCase().contains('windows')) {
dir = "C:\\ruby22\\bin\\sass.bat"
} else {
dir = "/usr/bin/sass"
}
commandLine dir, '--update', 'source.scss:dest.css'
}
我不喜欢这个代码,因为有人可能会在非标准的情况下安装红宝石"目录(例如/ usr / local / bin :))。
有没有办法查看sass是否在路径中并使用该特定的sass?
答案 0 :(得分:0)
创建一个任务以在路径中查找sass:
import org.apache.tools.ant.taskdefs.condition.Os
task checkForSassInPath(type: Exec) {
def windows = Os.isFamily(Os.FAMILY_WINDOWS)
executable = windows ? "where" : "which"
args = [(windows ? "sass.bat" : "sass")]
ignoreExitValue = true
standardOutput = new ByteArrayOutputStream()
errorOutput = new ByteArrayOutputStream()
}
checkForSassInPath << {
project.ext.sassInPath = (execResult.exitValue == 0)
if (!project.sassInPath ) {
logger.warn "Cannot find sass in path";
}
}
然后你可以这样做:
task compileCss (type: Exec, dependsOn: checkForSassInPath){
def dir
if ( Os.isFamily(Os.FAMILY_WINDOWS) ) {
dir = project.sassInPath ? "sass.bat" : "C:\\ruby22\\bin\\sass.bat"
} else {
dir = project.sassInPath ? "sass" : "/usr/bin/sass"
}
commandLine dir, '--update', 'source.scss:dest.css'
}