[php-PhpOption] Initial import (#903766)

Shawn Iwinski siwinski at fedoraproject.org
Fri Jan 25 16:25:56 UTC 2013


commit 01b77fbf2df8ae9e9383a8a0a2f2263ca40c1e3d
Author: Shawn Iwinski <shawn.iwinski at gmail.com>
Date:   Fri Jan 25 11:23:31 2013 -0500

    Initial import (#903766)

 .gitignore         |    1 +
 php-PhpOption.spec |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 sources            |    1 +
 3 files changed, 112 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..561f646 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/php-PhpOption-1.1.0-617bd84bf0d918da79b06ac6765b5390b83b1321.tar.gz
diff --git a/php-PhpOption.spec b/php-PhpOption.spec
new file mode 100644
index 0000000..7b95990
--- /dev/null
+++ b/php-PhpOption.spec
@@ -0,0 +1,110 @@
+%global github_owner   schmittjoh
+%global github_name    php-option
+%global github_version 1.1.0
+%global github_commit  617bd84bf0d918da79b06ac6765b5390b83b1321
+
+%global lib_name       PhpOption
+%global php_min_ver    5.3.0
+
+Name:          php-%{lib_name}
+Version:       %{github_version}
+Release:       1%{?dist}
+Summary:       Option type for PHP
+
+Group:         Development/Libraries
+License:       ASL 2.0
+URL:           https://github.com/%{github_owner}/%{github_name}
+Source0:       %{url}/archive/%{github_commit}/%{name}-%{github_version}-%{github_commit}.tar.gz
+
+BuildArch:     noarch
+# Test build requires
+BuildRequires: php-common >= %{php_min_ver}
+BuildRequires: php-pear(pear.phpunit.de/PHPUnit)
+# Test build requires: phpci
+BuildRequires: php-spl
+
+Requires:      php-common >= %{php_min_ver}
+# phpci requires
+Requires:      php-spl
+
+%description
+This package adds an Option type for PHP.
+
+The Option type is intended for cases where you sometimes might return a value
+(typically an object), and sometimes you might return no value (typically null)
+depending on arguments, or other runtime factors.
+
+Often times, you forget to handle the case where no value is returned. Not
+intentionally of course, but maybe you did not account for all possible states
+of the system; or maybe you indeed covered all cases, then time goes on, code
+is refactored, some of these your checks might become invalid, or incomplete.
+Suddenly, without noticing, the no value case is not handled anymore. As a
+result, you might sometimes get fatal PHP errors telling you that you called a
+method on a non-object; users might see blank pages, or worse.
+
+On one hand, the Option type forces a developer to consciously think about both
+cases (returning a value, or returning no value). That in itself will already
+make your code more robust. On the other hand, the Option type also allows the
+API developer to provide more concise API methods, and empowers the API user in
+how he consumes these methods.
+
+
+%package tests
+Summary:  Test suite for %{name}
+Group:    Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description tests
+%{summary}.
+
+
+%prep
+%setup -q -n %{github_name}-%{github_commit}
+
+# PHPUnit config
+sed 's:\(\./\)\?tests/:./:' -i phpunit.xml.dist
+mv phpunit.xml.dist tests/
+
+# Rewrite tests' bootstrap (which uses Composer autoloader) with simple
+# autoloader that uses include path
+mv tests/bootstrap.php tests/bootstrap.php.dist
+( cat <<'AUTOLOAD'
+<?php
+spl_autoload_register(function ($class) {
+    $src = str_replace('\\', '/', str_replace('_', '/', $class)).'.php';
+    @include_once $src;
+});
+AUTOLOAD
+) > tests/bootstrap.php
+
+
+%build
+# Empty build section, nothing to build
+
+
+%install
+mkdir -p -m 755 %{buildroot}%{_datadir}/php
+cp -rp src/%{lib_name} %{buildroot}%{_datadir}/php/
+
+mkdir -p -m 755 %{buildroot}%{_datadir}/tests/%{name}
+cp -rp tests/* %{buildroot}%{_datadir}/tests/%{name}/
+
+
+%check
+%{_bindir}/phpunit \
+    -d include_path="./src:./tests:.:%{pear_phpdir}" \
+    -c tests/phpunit.xml.dist
+
+
+%files
+%doc LICENSE README.md composer.json
+%{_datadir}/php/%{lib_name}
+
+%files tests
+%dir %{_datadir}/tests
+     %{_datadir}/tests/%{name}
+
+
+%changelog
+* Tue Jan 22 2013 Shawn Iwinski <shawn.iwinski at gmail.com> 1.1.0-1
+- Initial package
diff --git a/sources b/sources
index e69de29..cbba266 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+80b1e36db833658b02f57950c22d2841  php-PhpOption-1.1.0-617bd84bf0d918da79b06ac6765b5390b83b1321.tar.gz


More information about the scm-commits mailing list