/** * Run the Makefile in a temporary (working) repository * @param $param[1] temporary repository * @param $param[2] Makefile target (default: default_target configuration option) * @param $param['clean_before'] run "make clean" before the actual target (default: true) */ function api_post_temp_make($param = array()) { $temp = $param[1]; if (empty($param[2])) { $target = config('default_target'); } else { $target = $param[2]; } if (!@is_dir(tmp_dir($temp))) { router_error_404('Cannot get ' . $temp); } // client can specify whether to run "make clean" before or after the actual target if (isset($param['clean_before'])) { $clean_before = (bool) $param['clean_before']; } else { $clean_before = false; } if (isset($param['clean_after'])) { $clean_after = (bool) $param['clean_after']; } else { $clean_after = false; } if ($clean_before) { make_run(tmp_dir($temp), 'clean'); } // run the actual Makefile $start = time(); $ret_val = make_run(tmp_dir($temp), $target, $out); if ($clean_after) { make_run(tmp_dir($temp), 'clean'); } $modified = repo_get_modified_files_after($temp, $start - 1); // reset timer repo_touch($temp); return array('target' => $target, 'modified' => $modified, 'error' => $ret_val === 0 ? false : $ret_val, 'out' => $out); }
function inject_uploaded_file($tmp_key, $file, $auto_convert = true) { // establish destination filename $dest_fn = get_uploaded_file_dest_fn($tmp_key, $file['name'], $file['type'], $file['tmp_name']); if ($dest_fn === false) { return array(); } // make sure the containing directories exist create_containing_dir(tmp_dir($tmp_key) . '/' . $dest_fn); // move to destination if (false === @move_uploaded_file($file['tmp_name'], tmp_dir($tmp_key) . '/' . $dest_fn)) { return array(); } if ($auto_convert) { // convert Word documents instantaneously to Markdown $start = time(); if (filext($dest_fn) === 'docx') { make_run(tmp_dir($tmp_key), 'markdowns'); // XXX (later): run "make clean" here? } $modified_after = repo_get_modified_files_after($tmp_key, $start - 1); // make sure the destination filename is part of th array if (is_array($modified_after) && !in_array($dest_fn, $modified_after)) { $modified_after[] = $dest_fn; } return $modified_after; } return array($dest_fn); }