You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.6 KiB
PHP
132 lines
2.6 KiB
PHP
<?php
|
|
namespace DeployerForGit\Providers;
|
|
|
|
/**
|
|
* Base provider class
|
|
*/
|
|
class BaseProvider {
|
|
|
|
/**
|
|
* Repository url
|
|
*
|
|
* @var string
|
|
*/
|
|
private $repo_url;
|
|
|
|
/**
|
|
* Repository options
|
|
*
|
|
* @var array
|
|
*/
|
|
private $options;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param string $repo_url Repository url.
|
|
* @param array $options Repository options.
|
|
*
|
|
* @throws \InvalidArgumentException If repository url is invalid.
|
|
* @return void
|
|
*/
|
|
public function __construct( $repo_url = null, $options = array() ) {
|
|
$this->repo_url = $repo_url;
|
|
$this->options = $options;
|
|
if ( is_wp_error( $this->validate_repo_url() ) ) {
|
|
throw new \InvalidArgumentException( esc_attr( $this->validate_repo_url()->get_error_message() ) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get repository url
|
|
*
|
|
* @return string Repository url
|
|
*/
|
|
public function get_repo_url() {
|
|
return $this->repo_url;
|
|
}
|
|
|
|
/**
|
|
* Validate repository url
|
|
*
|
|
* @return WP_Error|boolean
|
|
*/
|
|
protected function validate_repo_url() {
|
|
// check if the repo url is empty.
|
|
if ( empty( $this->repo_url ) ) {
|
|
return new \WP_Error( 'empty', __( 'Repository url required', 'deployer-for-git' ) );
|
|
}
|
|
|
|
// check if the repo url is a valid url.
|
|
if ( ! filter_var( $this->repo_url, FILTER_VALIDATE_URL ) ) {
|
|
return new \WP_Error( 'invalid', __( 'Repository url must be a url', 'deployer-for-git' ) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get provider repository zip URL
|
|
*
|
|
* @param string $branch Branch name, default is master.
|
|
* @return string Repository URL to download zip.
|
|
*/
|
|
public function get_zip_repo_url( $branch = 'master' ) {
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Get provider repository handle
|
|
*
|
|
* @return string Repository handle
|
|
*/
|
|
protected function get_handle() {
|
|
$parsed_url = wp_parse_url( $this->repo_url );
|
|
$parts = explode( '/', $parsed_url['path'] );
|
|
$handle = '';
|
|
foreach ( $parts as $index => $part ) {
|
|
if ( $index === 0 ) {
|
|
continue;
|
|
}
|
|
$handle .= $part . '/';
|
|
|
|
// if end of the path, remove the trailing slash.
|
|
if ( $index === count( $parts ) - 1 ) {
|
|
$handle = rtrim( $handle, '/' );
|
|
}
|
|
}
|
|
|
|
return $handle;
|
|
}
|
|
|
|
/**
|
|
* Get domain name from repository url
|
|
*/
|
|
protected function get_domain() {
|
|
$parsed_url = wp_parse_url( $this->repo_url );
|
|
|
|
return $parsed_url['host'];
|
|
}
|
|
|
|
/**
|
|
* Get pretty provider name
|
|
*
|
|
* @return string Provider name
|
|
*/
|
|
public function get_pretty_name() {
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Get package slug from handle
|
|
*
|
|
* @return string Package slug
|
|
*/
|
|
public function get_package_slug() {
|
|
$handle = $this->get_handle();
|
|
|
|
// get the last part of the handle.
|
|
$slug = basename( $handle );
|
|
|
|
return $slug;
|
|
}
|
|
}
|