private static function addLoginCommands() { Workflow::removeConfig('access_token'); $token = null; if (count(self::$parts) > 1 && self::$parts[0] == '>' && self::$parts[1] == 'login' && isset(self::$parts[2])) { $token = self::$parts[2]; } if (!$token) { Workflow::addItem(Item::create()->prefix('gh ')->title('> login')->subtitle('Generate OAuth access token')->arg('> login')->randomUid(), false); } Workflow::addItem(Item::create()->prefix('gh ')->title('> login ' . $token)->subtitle('Save OAuth access token')->arg('> login ' . $token)->valid((bool) $token, '<access_token>')->randomUid(), false); }
<?php require 'workflow.php'; $query = ltrim($argv[1]); $parts = explode(' ', $query); Workflow::init($query); if (Workflow::checkUpdate()) { $cmds = array('update' => 'There is an update for this Alfred workflow', 'deactivate autoupdate' => 'Deactivate auto updating this Alfred Workflow'); foreach ($cmds as $cmd => $desc) { Workflow::addItem(Item::create()->prefix('gh ')->title('> ' . $cmd)->subtitle($desc)->arg('> ' . str_replace(' ', '-', $cmd))->randomUid(), false); } print Workflow::getItemsAsXml(); exit; } if (!Workflow::getConfig('user') || !($users = Workflow::requestCacheJson('https://github.com/command_bar/users', 'results')) && !Workflow::requestCache('https://github.com/settings/profile')) { Workflow::removeConfig('user'); $user = null; if (count($parts) > 1 && $parts[0] == '>' && $parts[1] == 'login' && isset($parts[2])) { $user = $parts[2]; } Workflow::addItem(Item::create()->prefix('gh ')->title('> login ' . $user)->subtitle('Log in to GitHub')->arg('> login ' . $user)->valid((bool) $user, '<user>')); print Workflow::getItemsAsXml(); return; } $isSystem = isset($query[0]) && $query[0] == '>'; $isMy = 'my' == $parts[0] && isset($parts[1]); $isUser = isset($query[0]) && $query[0] == '@'; $isRepo = false; $queryUser = null; if ($isUser) { $queryUser = ltrim($parts[0], '@');
return; } $enterprise = 0 === strpos($query, 'e '); if ($enterprise) { $query = substr($query, 2); } $parts = explode(' ', $query); Workflow::init($enterprise); switch ($parts[1]) { case 'enterprise-url': Workflow::setConfig('enterprise_url', rtrim($parts[2], '/')); exec('osascript -e "tell application \\"Alfred 2\\" to search \\"ghe \\""'); break; case 'enterprise-reset': Workflow::removeConfig('enterprise_url'); Workflow::removeConfig('enterprise_access_token'); Workflow::deleteCache(); break; case 'login': if (isset($parts[2]) && $parts[2]) { Workflow::setAccessToken($parts[2]); echo 'Successfully logged in'; } elseif (!$enterprise) { Workflow::startServer(); $state = version_compare(PHP_VERSION, '5.4', '<') ? 'm' : ''; $url = Workflow::getBaseUrl() . '/login/oauth/authorize?client_id=2d4f43826cb68e11c17c&scope=repo&state=' . $state; exec('open ' . escapeshellarg($url)); } break; case 'logout': Workflow::removeAccessToken();
$query = trim($argv[1]); $parts = explode(' ', $query); switch ($parts[0]) { case '>': switch ($parts[1]) { case 'login': if (isset($parts[2]) && $parts[2]) { Workflow::setConfig('access_token', $parts[2]); echo 'Successfully logged in'; } else { Workflow::startServer(); exec('open "https://github.com/login/oauth/authorize?client_id=2d4f43826cb68e11c17c&scope=repo&state=' . version_compare(PHP_VERSION, '5.4', '<') . '"'); } break; case 'logout': Workflow::removeConfig('access_token'); Workflow::deleteCache(); echo 'Successfully logged out'; break; case 'delete-cache': Workflow::deleteCache(); echo 'Successfully deleted cache'; break; case 'refresh-cache': $curl = new Curl(); foreach (explode(',', $parts[2]) as $url) { Workflow::requestCache($url, $curl, null, 0, false); } $curl->execute(); Workflow::cleanCache(); break;