Example #1
0
 /**
  * List an organization's sites
  *
  * ## OPTIONS
  *
  * [--org=<id>]
  * : Organization id
  *
  * [--tag=<tag>]
  * : Tag name to filter sites list by
  *
  * [--add=<site>]
  * : Site to add to organization
  *
  * [--remove=<site>]
  * : Site to remove from organization
  *
  * @subcommand sites
  *
  */
 public function sites($args, $assoc_args)
 {
     $org_id = Input::orgid($assoc_args, 'org', null, array('allow_none' => false));
     $org = new Organization($org_id);
     if (isset($assoc_args['add'])) {
         $add = SiteFactory::instance(Input::sitename($assoc_args, 'add'));
         Terminus::confirm("Are you sure you want to add %s to %s ?", $assoc_args, array($add->getName(), $org->name));
         $org->addSite($add);
         Terminus::success("Added site!");
         return true;
     }
     if (isset($assoc_args['remove'])) {
         $remove = SiteFactory::instance(Input::sitename($assoc_args, 'remove'));
         Terminus::confirm("Are you sure you want to remove %s to %s ?", $assoc_args, array($remove->getName(), $org->name));
         $org->removeSite($remove);
         Terminus::success("Removed site!");
         return true;
     }
     $org->siteMemberships->fetch();
     $memberships = $org->siteMemberships->all();
     foreach ($memberships as $membership) {
         if (isset($assoc_args['tag']) && !in_array($assoc_args['tag'], $membership->get('tags'))) {
             continue;
         }
         $site = $membership->get('site');
         $data[] = array('name' => $site->name, 'id' => $site->id, 'service_level' => $site->service_level, 'framework' => $site->framework, 'created' => date('Y-m-d H:i:s', $site->created), 'tags' => $membership->get('tags'));
     }
     $this->handleDisplay($data);
 }
Example #2
0
 /**
  * List an organizations sites
  *
  * ## OPTIONS
  *
  * [--org=<org>]
  * : Organization name or Id
  *
  * [--add=<site>]
  * : Site to add to organization
  *
  * [--remove=<site>]
  * : Site to remove from organization
  *
  * @subcommand sites
  *
  */
 public function sites($args, $assoc_args)
 {
     $orgs = array();
     $user = new User();
     foreach ($user->organizations() as $id => $org) {
         $orgs[$id] = $org->name;
     }
     if (!isset($assoc_args['org']) or empty($assoc_args['org'])) {
         $selected_org = Terminus::menu($orgs, false, "Choose an organization");
     } else {
         $selected_org = $assoc_args['org'];
     }
     $org = new Organization($selected_org);
     if (isset($assoc_args['add'])) {
         $add = SiteFactory::instance(Input::site($assoc_args, 'add'));
         Terminus::confirm("Are you sure you want to add %s to %s ?", $assoc_args, array($add->getName(), $org->name));
         $org->addSite($add);
         Terminus::success("Added site!");
         return true;
     }
     if (isset($assoc_args['remove'])) {
         $remove = SiteFactory::instance(Input::site($assoc_args, 'remove'));
         Terminus::confirm("Are you sure you want to remove %s to %s ?", $assoc_args, array($remove->getName(), $org->name));
         $org->removeSite($remove);
         Terminus::success("Removed site!");
         return true;
     }
     $sites = $org->getSites();
     $data = array();
     foreach ($sites as $site) {
         $data[] = array('name' => $site->site->name, 'service level' => isset($site->site->service_level) ? $site->site->service_level : '', 'framework' => isset($site->site->framework) ? $site->site->framework : '', 'created' => date('Y-m-d H:i:s', $site->site->created));
     }
     $this->handleDisplay($data);
 }
Example #3
0
/**
 * Ensures that the given destination is valid
 *
 * @param [string]  $destination Location of directory to ensure viability of
 * @param [boolean] $make        True to create destination if it does not exist
 * @return [string] $destination Same as the parameter
 */
function destination_is_valid($destination, $make = true)
{
    if (file_exists($destination) and !is_dir($destination)) {
        \Terminus::error("Destination given is a file. It must be a directory.");
    }
    if (!is_dir($destination)) {
        if (!$make) {
            $make = \Terminus::confirm("Directory does not exists. Create it now?");
        }
        if ($make) {
            mkdir($destination, 0755);
        }
    }
    return $destination;
}
Example #4
0
 /**
  * List an organization's sites
  *
  * ## OPTIONS
  *
  * [--org=<id|name>]
  * : Organization UUID or name
  *
  * [--tag=<tag>]
  * : Tag name to filter sites list by
  *
  * [--add=<site>]
  * : Site to add to organization
  *
  * [--remove=<site>]
  * : Site to remove from organization
  *
  * @subcommand sites
  *
  */
 public function sites($args, $assoc_args)
 {
     $org_id = Input::orgid($assoc_args, 'org', null, array('allow_none' => false));
     $orgs = new UserOrganizationMemberships();
     $org = $orgs->get($org_id);
     $memberships = $org->site_memberships;
     if (isset($assoc_args['add'])) {
         $site = $this->sites->get(Input::sitename($assoc_args, 'add'));
         Terminus::confirm('Are you sure you want to add %s to %s ?', $assoc_args, array($site->get('name'), $org->get('name')));
         $memberships->addMember($site);
         Terminus::success('Added site!');
         return true;
     }
     if (isset($assoc_args['remove'])) {
         $site_id = $assoc_args['remove'];
         $member = $memberships->get($assoc_args['remove']);
         $site = $member->get('site');
         Terminus::confirm('Are you sure you want to remove %s from %s ?', $assoc_args, array($site->name, $org->get('name')));
         $member->removeMember();
         Terminus::success('Removed site!');
         return true;
     }
     $memberships = $org->getSites();
     foreach ($memberships as $membership) {
         if (isset($assoc_args['tag']) && !in_array($assoc_args['tag'], $membership->get('tags'))) {
             continue;
         }
         $site = $membership->get('site');
         $data_array = array('name' => null, 'id' => null, 'service_level' => null, 'framework' => null, 'created' => null, 'tags' => $membership->get('tags'));
         foreach ($data_array as $key => $value) {
             if ($value == null && isset($site->{$key})) {
                 $data_array[$key] = $site->{$key};
             }
         }
         $data_array['created'] = date('Y-m-dTH:i:s', $data_array['created']);
         $data[] = $data_array;
     }
     $this->outputter->outputRecordList($data);
 }
Example #5
0
 /**
  * Delete a site from pantheon
  *
  * ## OPTIONS
  * --site=<site>
  * : Id of the site you want to delete
  *
  * [--all]
  * : Just kidding ... we won't let you do that.
  *
  * [--force]
  * : to skip the confirmations
  *
  */
 function delete($args, $assoc_args)
 {
     $site_to_delete = SiteFactory::instance(@$assoc_args['site']);
     if (!$site_to_delete) {
         foreach (SiteFactory::instance() as $id => $site) {
             $site->id = $id;
             $sites[] = $site;
             $menu[] = $site->information->name;
         }
         $index = Terminus::menu($menu, null, "Select a site to delete");
         $site_to_delete = $sites[$index];
     }
     if (!isset($assoc_args['force']) and !Terminus::get_config('yes')) {
         // if the force option isn't used we'll ask you some annoying questions
         Terminus::confirm(sprintf("Are you sure you want to delete %s?", $site_to_delete->information->name));
         Terminus::confirm("Are you really sure?");
     }
     Terminus::line(sprintf("Deleting %s ...", $site_to_delete->information->name));
     $response = \Terminus_Command::request('sites', $site_to_delete->id, '', 'DELETE');
     Terminus::success("Deleted %s!", $site_to_delete->information->name);
 }
Example #6
0
 /**
  * Show or apply upstream updates
  *
  * ## OPTIONS
  *
  * [--site=<site>]
  * : Site to check
  *
  * [--update=<env>]
  * : Do update on dev env
  *
  * @alias upstream-updates
  **/
 public function upstream_updates($args, $assoc_args)
 {
     $site = SiteFactory::instance(Input::site($assoc_args));
     $upstream = $site->getUpstreamUpdates();
     // data munging as usual
     $data = array();
     if (isset($upstream->remote_url) && isset($upstream->behind)) {
         // The $upstream object returns a value of [behind] -> 1 if there is an
         // upstream update that has not been applied to Dev.
         $data[$upstream->remote_url] = $upstream->behind > 0 ? "Updates Available" : "Up-to-date";
         $this->_constructTableForResponse($data, array('Upstream', 'Status'));
         if (!isset($upstream) or empty($upstream->update_log)) {
             Terminus::success("No updates to show");
         }
         $upstreams = (array) $upstream->update_log;
         if (!empty($upstreams)) {
             $data = array();
             foreach ($upstreams as $commit) {
                 $data = array('hash' => $commit->hash, 'datetime' => $commit->datetime, 'message' => $commit->message, 'author' => $commit->author);
                 $this->handleDisplay($data, $args);
                 echo PHP_EOL;
             }
         }
     } else {
         $this->handleDisplay('There was a problem checking your upstream status. Please try again.');
         echo PHP_EOL;
     }
     if (isset($assoc_args['update']) and !empty($upstream->update_log)) {
         $env = 'dev';
         Terminus::confirm(sprintf("Are you sure you want to apply the upstream updates to %s-dev", $site->getName(), $env));
         $response = $site->applyUpstreamUpdates($env);
         if (@$response->id) {
             $this->waitOnWorkflow('sites', $site->getId(), $response->id);
         } else {
             Terminus::success("Updates applied");
         }
     }
 }
Example #7
0
 /**
  * Complete wipe and reset a site
  *
  * ## OPTIONS
  *
  * [--site=<site>]
  * : Site to use
  *
  * [--env=<env>]
  * : Environment to be wiped
  */
 public function wipe($args, $assoc_args)
 {
     $site = $this->sites->get(Input::sitename($assoc_args));
     $env = $site->environments->get(Input::env($assoc_args, 'env'));
     Terminus::confirm('Are you sure you want to wipe {site}-{env}?', array('site' => $site->get('name'), 'env' => $env->get('id')));
     $workflow = $env->wipe();
     $workflow->wait();
     $this->log()->info('Successfully wiped {site}-{env}', array('site' => $site->get('name'), 'env' => $env->get('id')));
 }
Example #8
0
 /**
  * Complete wipe and reset a site
  *
  * ## OPTIONS
  *
  * [--site=<site>]
  * : Site to use
  *
  * [--env=<env>]
  * : Environment to be wiped
  */
 public function wipe($args, $assoc_args)
 {
     $site = SiteFactory::instance(Input::sitename($assoc_args));
     $environment_id = Input::env($assoc_args, 'env');
     Terminus::confirm(sprintf("Are you sure you want to wipe %s - %s?", $site->getName(), $environment_id));
     $workflow = $site->environment($environment_id)->wipe();
     $workflow->wait();
     Terminus::success(sprintf("Successfully wiped %s - %s", $site->getName(), $environment_id));
 }
Example #9
0
File: site.php Project: newtoid/cli
 /**
  * Complete wipe and reset a site
  *
  * ## OPTIONS
  *
  * [--site=<site>]
  * : Site to use
  *
  * [--env=<env>]
  * : Environment to be wiped
  */
 public function wipe($args, $assoc_args)
 {
     $site = $this->sites->get(Input::sitename($assoc_args));
     $env = $site->environments->get(Input::env($assoc_args, 'env'));
     Terminus::confirm(sprintf('Are you sure you want to wipe %s - %s?', $site->get('name'), $env->get('id')));
     $workflow = $env->wipe();
     $workflow->wait();
     Terminus::success(sprintf('Successfully wiped %s - %s', $site->get('name'), $env->get('id')));
 }
Example #10
0
 /**
  * List an organization's sites
  *
  * ## OPTIONS
  *
  * <add|remove|list>
  * : subfunction to run
  *
  * [--org=<id|name>]
  * : Organization UUID or name
  *
  * [--tag=<tag>]
  * : Tag name to filter sites list by
  *
  * [--site=<site>]
  * : Site to add to or remove from organization
  *
  * @subcommand sites
  *
  */
 public function sites($args, $assoc_args)
 {
     $action = array_shift($args);
     $org_id = Input::orgid($assoc_args, 'org', null, array('allow_none' => false));
     $orgs = new UserOrganizationMemberships();
     $org = $orgs->get($org_id);
     $org_info = $org->get('organization');
     $memberships = $org->site_memberships->all();
     switch ($action) {
         case 'add':
             if (isset($assoc_args['site'])) {
                 if ($this->siteIsMember($memberships, $assoc_args['site'])) {
                     throw new TerminusException('{site} is already a member of {org}', array('site' => $assoc_args['site'], 'org' => $org_info->profile->name));
                 } else {
                     $site = $this->sites->get($assoc_args['site']);
                 }
             } else {
                 $site = $this->sites->get(Input::menu($this->getNonmemberSiteList($memberships), null, 'Choose site'));
             }
             Terminus::confirm('Are you sure you want to add %s to %s ?', $assoc_args, array($site->get('name'), $org_info->profile->name));
             $workflow = $org->site_memberships->addMember($site);
             $workflow->wait();
             $this->workflowOutput($workflow);
             break;
         case 'remove':
             if (isset($assoc_args['site'])) {
                 if (!$this->siteIsMember($memberships, $assoc_args['site'])) {
                     throw new TerminusException('{site} is not a member of {org}', array('site' => $assoc_args['site'], 'org' => $org_info->profile->name));
                 } else {
                     $site = $this->sites->get($assoc_args['site']);
                 }
             } else {
                 $site = $this->sites->get(Input::menu($this->getMemberSiteList($memberships), null, 'Choose site'));
             }
             $member = $org->site_memberships->get($site->get('id'));
             Terminus::confirm('Are you sure you want to remove %s from %s ?', $assoc_args, array($site->get('name'), $org_info->profile->name));
             $workflow = $member->removeMember();
             $workflow->wait();
             $this->workflowOutput($workflow);
             break;
         case 'list':
         default:
             foreach ($memberships as $membership) {
                 if (isset($assoc_args['tag']) && !in_array($assoc_args['tag'], $membership->get('tags'))) {
                     continue;
                 }
                 $site = $membership->get('site');
                 $data_array = array('name' => null, 'id' => null, 'service_level' => null, 'framework' => null, 'created' => null, 'tags' => $membership->get('tags'));
                 foreach ($data_array as $key => $value) {
                     if ($value == null && isset($site->{$key})) {
                         $data_array[$key] = $site->{$key};
                     }
                 }
                 $data_array['created'] = date('Y-m-dTH:i:s', $data_array['created']);
                 $data[] = $data_array;
             }
             $this->output()->outputRecordList($data);
             break;
     }
 }
Example #11
0
 /**
  * Delete a site from pantheon
  *
  * ## OPTIONS
  * [--site=<site>]
  * : ID of the site you want to delete
  *
  * [--force]
  * : to skip the confirmations
  */
 function delete($args, $assoc_args)
 {
     $sitename = Input::sitename($assoc_args);
     $site_id = $this->sitesCache->findID($sitename);
     $site_to_delete = new Site($site_id);
     if (!isset($assoc_args['force']) and !Terminus::get_config('yes')) {
         // if the force option isn't used we'll ask you some annoying questions
         Terminus::confirm(sprintf("Are you sure you want to delete %s?", $site_to_delete->information->name));
         Terminus::confirm("Are you really sure?");
     }
     Terminus::line(sprintf("Deleting %s ...", $site_to_delete->information->name));
     $response = \Terminus_Command::request('sites', $site_to_delete->id, '', 'DELETE');
     $this->sitesCache->remove($sitename);
     Terminus::success("Deleted %s!", $sitename);
 }