/** * Initializes a package template in the provided directory. * * @throws InvalidPathException * * @param $vendor * @param $package * @param $directory */ public function initialize($vendor, $package, $directory) { if (!$this->files->exists($directory) || !$this->files->isDirectory($directory)) { throw new InvalidPathException("{$directory} does not exist or is not a valid directory."); } $packageComposer = new Package(); $packageComposer->setVendor($vendor); $packageComposer->setPackage($package); $packageComposer->setDescription('Give your package template a good description'); $packageComposer->setLicense(user_config('configuration.license', '')); $packageComposer->setAuthors(user_config('configuration.authors', [])); $writer = new ConfigurationWriter($packageComposer->toArray()); $writer['config'] = (object) ['vendor-dir' => '_newup_vendor']; $writer->save($directory . '/composer.json'); $this->renderer->setData('package', $package); $this->renderer->setData('vendor', $vendor); $packageClass = $this->renderer->render('template'); if (!$this->files->exists($directory . '/_newup/')) { $this->files->makeDirectory($directory . '/_newup/'); } if ($this->shouldCreateTemplateDirectory && $this->files->exists($directory . '/_template') == false) { $this->files->makeDirectory($directory . '/_template'); } $this->files->put($directory . '/_newup/Package.php', $packageClass); }
/** * Returns a new package instance from the provided array. * * @param array $array * @param bool $strict * * @return PackageContract * @throws \InvalidArgumentException */ public static function fromArray(array $array, $strict = true) { $details = (object) $array; $packageNameDetails = self::parseVendorAndPackage(object_get($details, 'name', null)); $description = object_get($details, 'description', null); $license = object_get($details, 'license', null); $authors = object_get($details, 'authors', null); // Throw exceptions if the developer wants us to be super strict. if ($strict) { self::throwInvalidArgumentException($description, 'Invalid package description.'); self::throwInvalidArgumentException($license, 'Invalid package license.'); self::throwInvalidArgumentException($authors, 'Invalid package authors.'); } $package = new Package(); $package->setAuthors($authors); $package->setDescription($description); $package->setLicense($license); $package->setVendor($packageNameDetails[0]); $package->setPackage($packageNameDetails[1]); return $package; }