Skip to content
This repository has been archived by the owner on Jul 7, 2024. It is now read-only.
SquidDev edited this page Dec 12, 2014 · 5 revisions

Tasks

Defining a task

The simplest way to define a task is through the Tasks:Task functions

Tasks:Task "compile"(function()
	print("Compiling now...")
end)

You can define dependencies:

Tasks:Task "test"({"compile"}, function()
	print("Running tests")
end)

You can also chains functions together:

Tasks:Task "test"(function()
	print("Running tests")
end)
	:Depends("compile")
	:Description("Compile and run tests")

You can also use the Tasks:AddTask function. This also supports chaining:

Tasks:AddTask("test", {"compile"}, function()
	print("running tests")
end):Description("Compile and run tests")

Notes on dependencies

Files can depend on a file like so:

Tasks:Task "test"(function()
  print("Running tests")
end
	:Depends("aTask")
    :Depends({"Many", "Tasks"})

However you can also depend on a file. This will attempt to find a task that creates something.lua or use it if it exists already.

Tasks:Task "test"(function()
  print("Running tests with something.lua")
end
	:Requires("something.lua")

You can define tasks that create files with :Produces

Tasks:Task "combine"(function()
  print("Combining files into something.lua")
end
	:Produces("something.lua")

You can also define tasks that read in files, and produce other files:

Tasks:Task "minify"(function(input, output)
  print("Transforming " .. input .. " into " .. output)
end
	:Maps("something.lua", "something.min.lua")
    -- or use wildcards
    :Maps("wild:*.lua", "wild:*.min.lua")
    -- or use patterns. Note, the capturing group
    -- should be in the output field.
    :Maps("ptrn:%1%.lua", "ptrn:(.*)%.min%.lua")

You can use multiple maps functions

Predefined tasks

Some tasks have predefined functions. These normally follow the pattern Tasks:TypeName(name, options, taskDependencies)

Clean

Clean removes a directory/file from the filesystem. It is worth noting that the directory is global, so you must use fs.combine

Tasks:Clean("clean", fs.combine(CurrentDirectory, "build"))

Combine

Combines a dependency tree into one file

local sources = Dependencies(CurrentDirectory)
sources:Main "Thing.lua"
	:Depends "Another"
sources:Main "Another.lua"
	:Name "Another"

Tasks:Combine("combine", sources, "build.lua", {"clean"})

You can read more on dependencies here.

Minify

There are multiple ways to minify files:

The minify all task:

This allows you to define a task that can minify any file based on a wildcard.

-- All these arguments are optional
-- We define a task called _minify that reads in anything called
-- *.lua and produces a *.min.lua file
Tasks:MinifyAll("_minify", "wild:*.lua", "wild:*.min.lua")

-- So now we can do
Tasks:AddTask "minify"
	:Requires(File "Result.min.lua")
	:Description("Produces a minified version of the code")
-- And it runs any task needed to create Result.min.lua and minifies it

The normal minify task

This is much more simple, but much less flexible:

Tasks:Minify("minify", "Result.lua", "Result.min.lua", {"combine"})
Clone this wiki locally