A dummy repo for building a WordPress site with composer
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
docs
etc
images
lib/cli-controller
mu-plugins
plugins
themes
.editorconfig
.gitignore
LICENSE
README.md
Vagrantfile
composer.json
composer.lock

README.md

Cheddar

Welcome to the cheddar project.

It was called dummy because the base is just a dummy framework that pulls together a lot of other parts into a single functioning entity. It is a foundational system initially intended as a learning tool that grew into a full blown system tool. To use you simply clone or fork and then start adding your site specific changes. Most og these changes are entered in the composer.json manifest and that file in essence becomes the documentation source for your site. However, dummy was really a prototype project and now that this has developed into a truly useful system I have decided that Cheddar is better name and besides it goes so well with bacon.

Cheddar out of the box will let you build a local development site. However you will need to understand some of the basics around vagrant and WordPress configurations to achieve the full potential. Dummy can hep you build a resilient tiered development system complete with dev, staging, preprod and production WordPress environments.

NOTE:

In order to get the most out of dummy you will need to have some familiarity with Composer, Vagrant, WordPress configurations and Apache Server configurations.

Purpose of this test is to use composer to define all of the external assets necessary to build a working WordPress and related plugins. The hope is to define a site's plugins, themes and git libraries in a composer.json manifest. Then have a site completely assembled via a composer update type command.

  • see Composer website for details.

  • At this point I have it building the WordPress tree and have setup the iggie file to ignore ALL of WordPress core.

    • The order of requirement is critical to successfully install ing all of the moving parts. The following outlines the order of operations:
      1. The wproot is installed first
      2. The WordPress core
      3. The composer dependencies mu-plugins, plugins and themes
      4. The local mu-plugins, plugins and themes
  • This process allows one to clone or fork dummy and then create a branch specific to a particular site you wish to construct. It all affords the opportunity to build a single mu-plugin, plugin or theme in a uniform environment.

  • Assuming that you already have a DB setup and enter the appropriate details in the respective config file this should yield a working shell site.

TODO:
  • Updated to install the mu-plugins. DONE

  • Updated to centralize the source tree. DONE

  • Updated to installed the WordPress common configuration system. DONE

  • Composerafy development only plugins: DONE

    • Installation of debugbar and other dev only safe plugins via composer.
  • Integrate PHPCS: DONE

  • Integrate Phan: Researching

  • Integrate PHPUnit: Installed but fully not configured

    • Currently some dummy tests are functional and composer is bringing in 10Up's WP_Mock to facilitate proper unit testing. The official WordPress unit testing is actually integration testing and that is NOT the purpose of this stage.
    • see PHPUnit website for details.
  • Integrate PHPloc: DONE

  • Integrate PHPmd: Installed but not configured

    • This is being installed by composer but I am not yet confident that it is 100% working. It need more testing.
    • see PHPmd website for details.
  • Integreate PHPdocumentor or PHPdox: Incomplete

  • Integreate PHPcpd: DONE

  • Implement a build system strategy: In progress

    • Still need to hook all of this into a deployment solution like deploybot. However for the time being and testing purposes I have written a simple set of build and deploy scripts that utilize rsync. Honestly the result has been better than I expected and were someone to make this easily configurable then one could use something like Jenkins or even ansible to execute a build.
  • Implement wpcli In Progress

  • Integrate a vagrant: In progress

    • Need to add a Vagrant conf so that one can eventually run vagrant up to build a working local dev based upon the WordPress tree installed by composer. The Vagrant system would need to setup the db and conf files. PARTIAL
    • see the Pryamid project for details.
  • Setup demos: In progress

    • Add demo to explain how to add plugins and themes from https://wpackagist.org. By adding the following line to the build chain in the required section of the composer.json it will add the appropriate plugin to the installation. You want to ensure that you add this line after the line that directs composer to install wordpress.
"wpackagist-plugin/akismet": "dev-trunk",
  • Implement documentation: In progress

    • Documentation shall take the form of markdown files in a doc directory relative to this repo and mu-plugin, plugin or theme respectively.
  • Outline a recommended Plugin structure: In progress

EXPRIMENTAL
  • Refactor shell scripts into PHP (PIPE DREAM)