Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 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();
 }
Esempio n. 3
0
            foreach ($users as $user) {
                $name = substr($user->command, 1);
                Workflow::addItem(Item::create()->prefix('@', false)->title($name . ' ')->subtitle($user->description)->arg('https://github.com/' . $name)->prio(20 + (isset($user->multiplier) ? $user->multiplier : 1)));
            }
        }
        Workflow::addItem(Item::create()->title('my ')->subtitle('Dashboard, settings, and more')->prio(10)->valid(false));
    } else {
        $myPages = array('dashboard' => array('', 'View your dashboard'), 'pulls' => array('dashboard/pulls', 'View your pull requests'), 'issues' => array('dashboard/issues', 'View your issues'), 'stars' => array('stars', 'View your starred repositories'), 'profile' => array(Workflow::getConfig('user'), 'View your public user profile'), 'settings' => array('settings', 'View or edit your account settings'), 'notifications' => array('notifications', 'View all your notifications'));
        foreach ($myPages as $key => $my) {
            Workflow::addItem(Item::create()->title('my ' . $key)->subtitle($my[1])->arg('https://github.com/' . $my[0])->prio(1));
        }
    }
    Workflow::sortItems();
    if ($query) {
        $path = $isUser ? $queryUser : '******' . urlencode($query);
        Workflow::addItem(Item::create()->title("Search GitHub for '{$query}'")->arg('https://github.com/' . $path)->autocomplete(false), false);
    }
} else {
    $cmds = array('logout' => 'Log out from GitHub (only this Alfred Workflow)', 'delete cache' => 'Delete GitHub Cache (only for this Alfred Workflow)', 'update' => 'Update this Alfred workflow');
    if (Workflow::getConfig('autoupdate', true)) {
        $cmds['deactivate autoupdate'] = 'Deactivate auto updating this Alfred Workflow';
    } else {
        $cmds['activate autoupdate'] = 'Activate auto updating this Alfred Workflow';
    }
    foreach ($cmds as $cmd => $desc) {
        Workflow::addItem(Item::create()->prefix('gh ')->title('> ' . $cmd)->subtitle($desc)->arg('> ' . str_replace(' ', '-', $cmd)));
    }
    Workflow::sortItems();
}
print Workflow::getItemsAsXml();