Just call the function "zip()". This function should be smart enough that you can pass in a "target" that is either a string or array of strings where each string is either a path to a file or directory. You must call afs.resolvePath() on ALL paths being added to the zip file so that it doesn't break if I pass in something like "~/Desktop/myproject/".