public Location call() throws Exception {
ProgramType type = ProgramTypes.fromSpecification(spec);
String name = String.format(Locale.ENGLISH, "%s/%s", type, applicationName);
Location programDir = newOutputDir.append(name);
if (!programDir.exists()) {
programDir.mkdirs();
}
Location output = programDir.append(String.format("%s.jar", spec.getName()));
return ProgramBundle.create(o.getApplicationId(), bundler, output, spec.getName(),
spec.getClassName(), type, appSpec);
}