public static function run($scope, $query) { self::$enterprise = 'enterprise' === $scope; if (' ' !== $query[0]) { return ''; } $query = ltrim($query); self::$query = $query; self::$parts = $parts = explode(' ', $query); Workflow::init(self::$enterprise, $query); if (Workflow::checkUpdate()) { self::addUpdateCommands(); return Workflow::getItemsAsXml(); } if (self::$enterprise && !Workflow::getBaseUrl()) { self::addEnterpriseUrlCommand(); return Workflow::getItemsAsXml(); } if (!Workflow::getAccessToken() || !(self::$user = Workflow::requestApi('/user'))) { self::addLoginCommands(); return Workflow::getItemsAsXml(); } Workflow::stopServer(); $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], '@'); } elseif (($pos = strpos($parts[0], '/')) !== false) { $queryUser = substr($parts[0], 0, $pos); $isRepo = true; } if ($isSystem) { self::addSystemCommands(); Workflow::sortItems(); } else { if ($isMy) { self::addMyCommands(); } elseif ($isUser && isset($parts[1])) { self::addUserSubCommands($queryUser); } elseif (!$isUser && $isRepo && isset($parts[1])) { self::addRepoSubCommands(); } else { self::addDefaultCommands($isUser, $isRepo, $queryUser); } Workflow::sortItems(); if ($query) { if (!$isUser && $isRepo && isset($parts[1])) { $repoQuery = substr($query, strlen($parts[0]) + 1); Workflow::addItem(Item::create()->title("Search '{$parts['0']}' for '{$repoQuery}'")->icon('search')->arg('/' . $parts[0] . '/search?q=' . urlencode($repoQuery))->autocomplete(false), false); } $path = $isUser ? $queryUser : '******' . urlencode($query); $name = self::$enterprise ? 'GitHub Enterprise' : 'GitHub'; Workflow::addItem(Item::create()->title("Search {$name} for '{$query}'")->icon('search')->arg('/' . $path)->autocomplete(false), false); } } return Workflow::getItemsAsXml(); }
public static function run($query) { self::$query = $query; self::$parts = $parts = explode(' ', $query); Workflow::init($query); if (Workflow::checkUpdate()) { self::addUpdateCommands(); return Workflow::getItemsAsXml(); } if (!Workflow::getConfig('access_token') || !(self::$user = Workflow::requestGithubApi('/user'))) { self::addLoginCommands(); return Workflow::getItemsAsXml(); } Workflow::stopServer(); $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], '@'); } elseif (($pos = strpos($parts[0], '/')) !== false) { $queryUser = substr($parts[0], 0, $pos); $isRepo = true; } if ($isSystem) { self::addSystemCommands(); Workflow::sortItems(); } else { if ($isMy) { self::addMyCommands(); } elseif ($isUser && isset($parts[1])) { self::addUserSubCommands($queryUser); } elseif (!$isUser && $isRepo && isset($parts[1])) { self::addRepoSubCommands(); } else { self::addDefaultCommands($isUser, $isRepo, $queryUser); } Workflow::sortItems(); if ($query) { if (!$isUser && $isRepo && isset($parts[1])) { $repoQuery = substr($query, strlen($parts[0]) + 1); Workflow::addItem(Item::create()->title("Search '{$parts['0']}' for '{$repoQuery}'")->icon('search')->arg('https://github.com/' . $parts[0] . '/search?q=' . urlencode($repoQuery))->autocomplete(false), false); } $path = $isUser ? $queryUser : '******' . urlencode($query); Workflow::addItem(Item::create()->title("Search GitHub for '{$query}'")->icon('search')->arg('https://github.com/' . $path)->autocomplete(false), false); } } return Workflow::getItemsAsXml(); }
<?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], '@');