CINXE.COM

GitHub - jonathantorres/construct: A PHP project/micro-package generator for PDS compliant projects or micro-packages.

<!DOCTYPE html> <html lang="en"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://github.com/jonathantorres/construct","20200930085948","https://web.archive.org/","web","/_static/", "1601456388"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://web.archive.org/web/20200930085948/https://github.githubassets.com/"> <link rel="dns-prefetch" href="https://web.archive.org/web/20200930085948/https://avatars0.githubusercontent.com/"> <link rel="dns-prefetch" href="https://web.archive.org/web/20200930085948/https://avatars1.githubusercontent.com/"> <link rel="dns-prefetch" href="https://web.archive.org/web/20200930085948/https://avatars2.githubusercontent.com/"> <link rel="dns-prefetch" href="https://web.archive.org/web/20200930085948/https://avatars3.githubusercontent.com/"> <link rel="dns-prefetch" href="https://web.archive.org/web/20200930085948/https://github-cloud.s3.amazonaws.com/"> <link rel="dns-prefetch" href="https://web.archive.org/web/20200930085948/https://user-images.githubusercontent.com/"> <link crossorigin="anonymous" media="all" integrity="" rel="stylesheet" href="https://web.archive.org/web/20200930085948cs_/https://github.githubassets.com/assets/frameworks-7a4157da0ecf60819a0dba26682caaae.css"/> <link crossorigin="anonymous" media="all" integrity="" rel="stylesheet" href="https://web.archive.org/web/20200930085948cs_/https://github.githubassets.com/assets/site-50007ecda9a1ca7ce5a6e5e7a70ef77f.css"/> <link crossorigin="anonymous" media="all" integrity="" rel="stylesheet" href="https://web.archive.org/web/20200930085948cs_/https://github.githubassets.com/assets/github-d077e639eb5ba42edea0dd6d296862b9.css"/> <meta name="viewport" content="width=device-width"> <title>GitHub - jonathantorres/construct: A PHP project/micro-package generator for PDS compliant projects or micro-packages.</title> <meta name="description" content="A PHP project/micro-package generator for PDS compliant projects or micro-packages. - jonathantorres/construct"> <link rel="search" type="application/opensearchdescription+xml" href="/web/20200930085948/https://github.com/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905"> <meta name="twitter:image:src" content="https://avatars3.githubusercontent.com/u/195615?s=400&amp;v=4"/><meta name="twitter:site" content="@github"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="jonathantorres/construct"/><meta name="twitter:description" content="A PHP project/micro-package generator for PDS compliant projects or micro-packages. - jonathantorres/construct"/> <meta property="og:image" content="https://web.archive.org/web/20200930085948im_/https://avatars3.githubusercontent.com/u/195615?s=400&amp;v=4"/><meta property="og:site_name" content="GitHub"/><meta property="og:type" content="object"/><meta property="og:title" content="jonathantorres/construct"/><meta property="og:url" content="https://web.archive.org/web/20200930085948/https://github.com/jonathantorres/construct"/><meta property="og:description" content="A PHP project/micro-package generator for PDS compliant projects or micro-packages. - jonathantorres/construct"/> <link rel="assets" href="https://github.githubassets.com/"> <meta name="request-id" content="BB6A:63D9:64F458:BF654F:5F744903" data-pjax-transient="true"/><meta name="html-safe-nonce" content="7481797967c3b97b5840b09ea275dd017dc09669" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQjZBOjYzRDk6NjRGNDU4OkJGNjU0Rjo1Rjc0NDkwMyIsInZpc2l0b3JfaWQiOiIzNjQ1Nzk3MjY0NTE1NTg2NTkiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="10fdcd55ccccc8696146b62ba8b653c4cdfe48d1ac5f40751ffeecae206791d8" data-pjax-transient="true"/><meta name="cookie-consent-required" content="false" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:34433994" data-pjax-transient> <meta name="github-keyboard-shortcuts" content="repository" data-pjax-transient="true"/> <meta name="selected-link" value="repo_source" data-pjax-transient> <meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY"> <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU"> <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA"> <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc"> <meta name="octolytics-host" content="collector.githubapp.com"/><meta name="octolytics-app-id" content="github"/><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event"/><meta name="octolytics-dimension-ga_id" content="" class="js-octo-ga-id"/> <meta name="analytics-location" content="/<user-name>/<repo-name>" data-pjax-transient="true"/> <meta name="google-analytics" content="UA-3769691-2"> <meta class="js-ga-set" name="dimension10" content="Responsive" data-pjax-transient> <meta class="js-ga-set" name="dimension1" content="Logged Out"> <meta name="hostname" content="github.com"> <meta name="user-login" content=""> <meta name="expected-hostname" content="github.com"> <meta name="enabled-features" content="MARKETPLACE_PENDING_INSTALLATIONS"> <meta http-equiv="x-pjax-version" content="4c98a1606f9abe5200c834c0b82ade94ea7ec33b30abb5ac44653358e3d60eb2"> <link href="https://web.archive.org/web/20200930085948/https://github.com/jonathantorres/construct/commits/master.atom" rel="alternate" title="Recent Commits to construct:master" type="application/atom+xml"> <meta name="go-import" content="github.com/jonathantorres/construct git https://github.com/jonathantorres/construct.git"> <meta name="octolytics-dimension-user_id" content="195615"/><meta name="octolytics-dimension-user_login" content="jonathantorres"/><meta name="octolytics-dimension-repository_id" content="34433994"/><meta name="octolytics-dimension-repository_nwo" content="jonathantorres/construct"/><meta name="octolytics-dimension-repository_public" content="true"/><meta name="octolytics-dimension-repository_is_fork" content="false"/><meta name="octolytics-dimension-repository_network_root_id" content="34433994"/><meta name="octolytics-dimension-repository_network_root_nwo" content="jonathantorres/construct"/><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false"/> <link rel="canonical" href="https://web.archive.org/web/20200930085948/https://github.com/jonathantorres/construct" data-pjax-transient> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://web.archive.org/web/20200930085948im_/https://github.githubassets.com/pinned-octocat.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://web.archive.org/web/20200930085948im_/https://github.githubassets.com/favicons/favicon.svg"> <meta name="theme-color" content="#1e2327"> <link rel="manifest" href="/web/20200930085948/https://github.com/manifest.json" crossorigin="use-credentials"> </head> <body class="logged-out env-production page-responsive"> <div class="position-relative js-header-wrapper "> <a href="#start-of-content" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a> <span class="progress-pjax-loader width-full js-pjax-loader-bar Progress position-fixed"> <span style="background-color: #79b8ff;width: 0%;" class="Progress-item progress-pjax-loader-bar "></span> </span> <header class="Header-old header-logged-out js-details-container Details position-relative f4 py-2" role="banner"> <div class="container-xl d-lg-flex flex-items-center p-responsive"> <div class="d-flex flex-justify-between flex-items-center"> <a class="mr-4" href="https://web.archive.org/web/20200930085948/https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark"> <svg height="32" class="octicon octicon-mark-github text-white" viewbox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> </a> <div class="d-lg-none css-truncate css-truncate-target width-fit p-2"> </div> <div class="d-flex flex-items-center"> <a href="/web/20200930085948/https://github.com/join?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;source=header-repo" class="d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ae65596f411df23a7254375a42017a5c0e2b2a2d46866f63a5645004a72002ce" data-ga-click="Sign up, click to sign up for account, ref_page:/<user-name>/<repo-name>;ref_cta:Sign up;ref_loc:header logged out"> Sign&nbsp;up </a> <button class="btn-link d-lg-none mt-1 js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false"> <svg height="24" class="octicon octicon-three-bars text-white" viewbox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"></path></svg> </button> </div> </div> <div class="HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto"> <div class="d-flex d-lg-none flex-justify-end border-bottom bg-gray-light p-3"> <button class="btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false"> <svg height="24" class="octicon octicon-x text-gray" viewbox="0 0 24 24" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M5.72 5.72a.75.75 0 011.06 0L12 10.94l5.22-5.22a.75.75 0 111.06 1.06L13.06 12l5.22 5.22a.75.75 0 11-1.06 1.06L12 13.06l-5.22 5.22a.75.75 0 01-1.06-1.06L10.94 12 5.72 6.78a.75.75 0 010-1.06z"></path></svg> </button> </div> <nav class="mt-0 px-3 px-lg-0 mb-5 mb-lg-0" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center "> <details class="HeaderMenu-details details-overlay details-reset width-full"> <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block"> Why GitHub? <svg x="0px" y="0px" viewbox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"> <path d="M1,1l6.2,6L13,1"></path> </svg> </summary> <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4"> <a href="/web/20200930085948/https://github.com/features" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Features">Features <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a> <ul class="list-style-none f5 pb-3"> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features/code-review/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code review">Code review</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features/project-management/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Project management">Project management</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features/integrations" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Integrations">Integrations</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features/actions" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Actions">Actions</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features/packages" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Packages">Packages</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features/security" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Security">Security</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features#team-management" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Team management">Team management</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/features#hosting" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code hosting">Hosting</a></li> <li class="edge-item-fix hide-xl"><a href="/web/20200930085948/https://github.com/mobile" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Mobile">Mobile</a></li> </ul> <ul class="list-style-none mb-0 border-lg-top pt-lg-3"> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/customer-stories" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Customer stories">Customer stories <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/security" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Security">Security <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li> </ul> </div> </details> </li> <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3"> <a href="/web/20200930085948/https://github.com/team" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Team">Team</a> </li> <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3"> <a href="/web/20200930085948/https://github.com/enterprise" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Enterprise">Enterprise</a> </li> <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center "> <details class="HeaderMenu-details details-overlay details-reset width-full"> <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block"> Explore <svg x="0px" y="0px" viewbox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"> <path d="M1,1l6.2,6L13,1"></path> </svg> </summary> <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4"> <ul class="list-style-none mb-3"> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/explore" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Explore">Explore GitHub <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li> </ul> <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Learn &amp; contribute</h4> <ul class="list-style-none mb-3"> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/topics" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Topics">Topics</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/collections" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Collections">Collections</a></li> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/trending" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Trending">Trending</a></li> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://lab.github.com/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Learning lab">Learning Lab</a></li> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://opensource.guide/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Open source guides">Open source guides</a></li> </ul> <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Connect with others</h4> <ul class="list-style-none mb-0"> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://github.com/events" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Events">Events</a></li> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://github.community/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Community forum">Community forum</a></li> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://education.github.com/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Education">GitHub Education</a></li> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://stars.github.com/" class="py-2 pb-0 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Stars Program">GitHub Stars program</a></li> </ul> </div> </details> </li> <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3"> <a href="/web/20200930085948/https://github.com/marketplace" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Marketplace">Marketplace</a> </li> <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center "> <details class="HeaderMenu-details details-overlay details-reset width-full"> <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block"> Pricing <svg x="0px" y="0px" viewbox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"> <path d="M1,1l6.2,6L13,1"></path> </svg> </summary> <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-4 mt-0 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4"> <a href="/web/20200930085948/https://github.com/pricing" class="pb-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Pricing">Plans <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a> <ul class="list-style-none mb-3"> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/pricing#feature-comparison" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Compare plans">Compare plans</a></li> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://enterprise.github.com/contact" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Contact Sales">Contact Sales</a></li> </ul> <ul class="list-style-none mb-0 border-lg-top pt-lg-3"> <li class="edge-item-fix"><a href="/web/20200930085948/https://github.com/nonprofit" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Nonprofits">Nonprofit <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li> <li class="edge-item-fix"><a href="https://web.archive.org/web/20200930085948/https://education.github.com/" class="py-2 pb-0 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Education">Education <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li> </ul> </div> </details> </li> </ul> </nav> <div class="d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left"> <div class="d-lg-flex mb-3 mb-lg-0"> <div class="header-search header-search-current js-header-search-current flex-auto js-site-search position-relative flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to js-header-search-current-jump-to" role="combobox" aria-owns="jump-to-results" aria-label="Search or jump to" aria-haspopup="listbox" aria-expanded="false"> <div class="position-relative"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="34433994" data-scoped-search-url="/jonathantorres/construct/search" data-unscoped-search-url="/search" action="/web/20200930085948/https://github.com/jonathantorres/construct/search" accept-charset="UTF-8" method="get"> <label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center"> <input type="text" class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable" data-hotkey="s,/" name="q" value="" placeholder="Search" data-unscoped-placeholder="Search GitHub" data-scoped-placeholder="Search" autocapitalize="off" aria-autocomplete="list" aria-controls="jump-to-results" aria-label="Search" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" spellcheck="false" autocomplete="off"> <input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="QoHC5ZYcKP1fpK6E2ZTdGjWgCfjg+kc63x1sQTQ/YHCrfwvbwlBalHdlZjHLIdMpPbb9KGofPEyxxWESovg1Iw=="/> <input type="hidden" class="js-site-search-type-field" name="type"> <img src="https://web.archive.org/web/20200930085948im_/https://github.githubassets.com/images/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash"> <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container"> <ul class="d-none js-jump-to-suggestions-template-container"> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href=""> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg> <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg> <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="/web/20200930085948im_/https://github.com/jonathantorres/construct" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository"> In this repository </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> </ul> <ul class="d-none js-jump-to-no-results-template-container"> <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2"> <span class="text-gray">No suggested jump to results</span> </li> </ul> <ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container"> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href=""> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg> <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg> <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="/web/20200930085948im_/https://github.com/jonathantorres/construct" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository"> In this repository </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href=""> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg> <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg> <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewbox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="/web/20200930085948im_/https://github.com/jonathantorres/construct" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository"> In this repository </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> </ul> </div> </label> </form> </div> </div> </div> <a href="/web/20200930085948/https://github.com/login?return_to=%2Fjonathantorres%2Fconstruct" class="HeaderMenu-link no-underline mr-3" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="79898f3dcee151175c0ce6293fb3fe1c48054774b4b32ec4a2b5b2625589c2a4" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in"> Sign&nbsp;in </a> <a href="/web/20200930085948/https://github.com/join?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;source=header-repo&amp;source_repo=jonathantorres%2Fconstruct" class="HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="79898f3dcee151175c0ce6293fb3fe1c48054774b4b32ec4a2b5b2625589c2a4" data-ga-click="Sign up, click to sign up for account, ref_page:/<user-name>/<repo-name>;ref_cta:Sign up;ref_loc:header logged out"> Sign&nbsp;up </a> </div> </div> </div> </header> </div> <div id="start-of-content" class="show-on-focus"></div> <div data-pjax-replace id="js-flash-container"> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div class=" px-2"> <button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg class="octicon octicon-x" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg> </button> <div>{{ message }}</div> </div> </div> </template> </div> <include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled> <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class=""> <main id="js-repo-pjax-container" data-pjax-container> <div class="bg-gray-light pt-3 hide-full-screen mb-5"> <div class="d-flex mb-3 px-3 px-md-4 px-lg-5"> <div class="flex-auto min-width-0 width-fit mr-3"> <h1 class=" d-flex flex-wrap flex-items-center break-word f3 text-normal"> <svg class="octicon octicon-repo text-gray mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/jonathantorres/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/web/20200930085948/https://github.com/jonathantorres">jonathantorres</a> </span> <span class="mx-1 flex-self-stretch">/</span> <strong itemprop="name" class="mr-2 flex-self-stretch"> <a data-pjax="#js-repo-pjax-container" href="/web/20200930085948/https://github.com/jonathantorres/construct">construct</a> </strong> </h1> </div> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <a class="tooltipped tooltipped-s btn btn-sm btn-with-count" aria-label="You must be signed in to watch a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6d541ae05962cffb84686da2505f4e9f71a627a427f6a65d1142703afec430b4" href="/web/20200930085948/https://github.com/login?return_to=%2Fjonathantorres%2Fconstruct"> <svg height="16" class="octicon octicon-eye" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path></svg> Watch </a> <a class="social-count" href="/web/20200930085948/https://github.com/jonathantorres/construct/watchers" aria-label="11 users are watching this repository"> 11 </a> </li> <li> <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to star a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:34433994,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c61c5cef735897a34cd10b77d5dbbaa798f8275b524dad90e2de2d9d4b6c7579" href="/web/20200930085948/https://github.com/login?return_to=%2Fjonathantorres%2Fconstruct"> <svg vertical_align="text_bottom" height="16" class="octicon octicon-star v-align-text-bottom" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path></svg> Star </a> <a class="social-count js-social-count" href="/web/20200930085948/https://github.com/jonathantorres/construct/stargazers" aria-label="258 users starred this repository"> 258 </a> </li> <li> <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to fork a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:34433994,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fad4a7436795a4f19578c737c04d92b8c9afa71590275d7c54a5fb38d831131e" href="/web/20200930085948/https://github.com/login?return_to=%2Fjonathantorres%2Fconstruct"> <svg class="octicon octicon-repo-forked" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path></svg> Fork </a> <a href="/web/20200930085948/https://github.com/jonathantorres/construct/network/members" class="social-count" aria-label="16 users forked this repository"> 16 </a> </li> </ul> </div> <div class="d-block d-md-none mb-2 px-3 px-md-4 px-lg-5"> <p class="f4 mb-3"> A PHP project/micro-package generator for PDS compliant projects or micro-packages. </p> <div class="mb-2"> <a href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/LICENSE.md" class="muted-link"> <svg mr="1" height="16" class="octicon octicon-law mr-1" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.75.75a.75.75 0 00-1.5 0V2h-.984c-.305 0-.604.08-.869.23l-1.288.737A.25.25 0 013.984 3H1.75a.75.75 0 000 1.5h.428L.066 9.192a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.514 3.514 0 00.686.45A4.492 4.492 0 003 11c.88 0 1.556-.22 2.023-.454a3.515 3.515 0 00.686-.45l.045-.04.016-.015.006-.006.002-.002.001-.002L5.25 9.5l.53.53a.75.75 0 00.154-.838L3.822 4.5h.162c.305 0 .604-.08.869-.23l1.289-.737a.25.25 0 01.124-.033h.984V13h-2.5a.75.75 0 000 1.5h6.5a.75.75 0 000-1.5h-2.5V3.5h.984a.25.25 0 01.124.033l1.29.736c.264.152.563.231.868.231h.162l-2.112 4.692a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.517 3.517 0 00.686.45A4.492 4.492 0 0013 11c.88 0 1.556-.22 2.023-.454a3.512 3.512 0 00.686-.45l.045-.04.01-.01.006-.005.006-.006.002-.002.001-.002-.529-.531.53.53a.75.75 0 00.154-.838L13.823 4.5h.427a.75.75 0 000-1.5h-2.234a.25.25 0 01-.124-.033l-1.29-.736A1.75 1.75 0 009.735 2H8.75V.75zM1.695 9.227c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327l-1.305 2.9zm10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327l-1.305 2.9z"></path></svg> MIT License </a> </div> <div class="mb-3"> <a class="link-gray no-underline mr-3" href="/web/20200930085948/https://github.com/jonathantorres/construct/stargazers"> <svg mr="1" height="16" class="octicon octicon-star mr-1" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path></svg> <span class="text-bold">258</span> stars </a> <a class="link-gray no-underline" href="/web/20200930085948/https://github.com/jonathantorres/construct/network/members"> <svg mr="1" height="16" class="octicon octicon-repo-forked mr-1" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path></svg> <span class="text-bold">16</span> forks </a> </div> <div class="d-flex"> <div class="flex-1 mr-2"> <a class="btn btn-sm btn-block tooltipped tooltipped-s" aria-label="You must be signed in to star a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:34433994,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c61c5cef735897a34cd10b77d5dbbaa798f8275b524dad90e2de2d9d4b6c7579" href="/web/20200930085948/https://github.com/login?return_to=%2Fjonathantorres%2Fconstruct"> <svg vertical_align="text_bottom" height="16" class="octicon octicon-star v-align-text-bottom" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path></svg> Star </a> </div> <div class="flex-1"> <a class="tooltipped tooltipped-s btn btn-sm btn-block" aria-label="You must be signed in to watch a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6d541ae05962cffb84686da2505f4e9f71a627a427f6a65d1142703afec430b4" href="/web/20200930085948/https://github.com/login?return_to=%2Fjonathantorres%2Fconstruct"> <svg height="16" class="octicon octicon-eye" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path></svg> Watch </a> </div> </div> </div> <nav aria-label="Repository" data-pjax="#js-repo-pjax-container" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5 bg-gray-light"> <ul class="UnderlineNav-body list-style-none "> <li class="d-flex"> <a class="js-selected-navigation-item selected UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="code-tab" data-hotkey="g c" data-ga-click="Repository, Navigation click, Code tab" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /jonathantorres/construct" href="/web/20200930085948/https://github.com/jonathantorres/construct"> <svg classes="UnderlineNav-octicon" display="none inline" height="16" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg> <span data-content="Code">Code</span> <span title="Not available" class="Counter "></span> </a> </li> <li class="d-flex"> <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="issues-tab" data-hotkey="g i" data-ga-click="Repository, Navigation click, Issues tab" data-selected-links="repo_issues repo_labels repo_milestones /jonathantorres/construct/issues" href="/web/20200930085948/https://github.com/jonathantorres/construct/issues"> <svg classes="UnderlineNav-octicon" display="none inline" height="16" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"></path></svg> <span data-content="Issues">Issues</span> <span title="13" class="Counter ">13</span> </a> </li> <li class="d-flex"> <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="pull-requests-tab" data-hotkey="g p" data-ga-click="Repository, Navigation click, Pull requests tab" data-selected-links="repo_pulls checks /jonathantorres/construct/pulls" href="/web/20200930085948/https://github.com/jonathantorres/construct/pulls"> <svg classes="UnderlineNav-octicon" display="none inline" height="16" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path></svg> <span data-content="Pull requests">Pull requests</span> <span title="0" hidden="hidden" class="Counter ">0</span> </a> </li> <li class="d-flex"> <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="actions-tab" data-hotkey="g a" data-ga-click="Repository, Navigation click, Actions tab" data-selected-links="repo_actions /jonathantorres/construct/actions" href="/web/20200930085948/https://github.com/jonathantorres/construct/actions"> <svg classes="UnderlineNav-octicon" display="none inline" height="16" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path></svg> <span data-content="Actions">Actions</span> <span title="Not available" class="Counter "></span> </a> </li> <li class="d-flex"> <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="projects-tab" data-hotkey="g b" data-ga-click="Repository, Navigation click, Projects tab" data-selected-links="repo_projects new_repo_project repo_project /jonathantorres/construct/projects" href="/web/20200930085948/https://github.com/jonathantorres/construct/projects"> <svg classes="UnderlineNav-octicon" display="none inline" height="16" class="octicon octicon-project UnderlineNav-octicon d-none d-sm-inline" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg> <span data-content="Projects">Projects</span> <span title="0" hidden="hidden" class="Counter ">0</span> </a> </li> <li class="d-flex"> <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="security-tab" data-hotkey="g s" data-ga-click="Repository, Navigation click, Security tab" data-selected-links="security overview alerts policy token_scanning code_scanning /jonathantorres/construct/security" href="/web/20200930085948/https://github.com/jonathantorres/construct/security"> <svg classes="UnderlineNav-octicon" display="none inline" height="16" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z"></path></svg> <span data-content="Security">Security</span> <include-fragment src="/jonathantorres/construct/security/overall-count" accept="text/fragment+html"></include-fragment> </a> </li> <li class="d-flex"> <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="insights-tab" data-ga-click="Repository, Navigation click, Insights tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people /jonathantorres/construct/pulse" href="/web/20200930085948/https://github.com/jonathantorres/construct/pulse"> <svg classes="UnderlineNav-octicon" display="none inline" height="16" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path></svg> <span data-content="Insights">Insights</span> <span title="Not available" class="Counter "></span> </a> </li> </ul> <div class="position-absolute right-0 pr-3 pr-md-4 pr-lg-5 js-responsive-underlinenav-overflow" style="visibility:hidden;"> <details class="details-overlay details-reset position-relative"> <summary role="button"> <div class="UnderlineNav-item mr-0 border-0"> <svg class="octicon octicon-kebab-horizontal" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path></svg> <span class="sr-only">More</span> </div> </summary> <div> <details-menu role="menu" class="dropdown-menu dropdown-menu-sw "> <ul> <li data-menu-item="code-tab" hidden> <a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links=" /jonathantorres/construct" href="/web/20200930085948/https://github.com/jonathantorres/construct"> Code </a> </li> <li data-menu-item="issues-tab" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /jonathantorres/construct/issues" href="/web/20200930085948/https://github.com/jonathantorres/construct/issues"> Issues </a> </li> <li data-menu-item="pull-requests-tab" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /jonathantorres/construct/pulls" href="/web/20200930085948/https://github.com/jonathantorres/construct/pulls"> Pull requests </a> </li> <li data-menu-item="actions-tab" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /jonathantorres/construct/actions" href="/web/20200930085948/https://github.com/jonathantorres/construct/actions"> Actions </a> </li> <li data-menu-item="projects-tab" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /jonathantorres/construct/projects" href="/web/20200930085948/https://github.com/jonathantorres/construct/projects"> Projects </a> </li> <li data-menu-item="security-tab" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /jonathantorres/construct/security" href="/web/20200930085948/https://github.com/jonathantorres/construct/security"> Security </a> </li> <li data-menu-item="insights-tab" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /jonathantorres/construct/pulse" href="/web/20200930085948/https://github.com/jonathantorres/construct/pulse"> Insights </a> </li> </ul> </details-menu> </div></details> </div> </nav> </div> <div class="container-xl clearfix new-discussion-timeline px-3 px-md-4 px-lg-5"> <div class="repository-content "> <div class="d-none d-lg-block mt-6 mr-3 Popover top-0 right-0 box-shadow-medium col-3"> </div> <signup-prompt class="signup-prompt-bg rounded-1" data-prompt="signup" hidden> <div class="signup-prompt p-4 text-center mb-4 rounded-1"> <div class="position-relative"> <button type="button" class="position-absolute top-0 right-0 btn-link link-gray" data-action="click:signup-prompt#dismiss" data-ga-click="(Logged out) Sign up prompt, clicked Dismiss, text:dismiss"> Dismiss </button> <h3 class="pt-2">Join GitHub today</h3> <p class="col-6 mx-auto">GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.</p> <a class="btn btn-primary" data-ga-click="(Logged out) Sign up prompt, clicked Sign up, text:sign-up" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;files signup prompt&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="da0e7369aa7fe310e5fab43e8813368020c715a56287b0ea09f5c52a95b936aa" href="/web/20200930085948/https://github.com/join?source=prompt-code&amp;source_repo=jonathantorres%2Fconstruct">Sign up</a> </div> </div> </signup-prompt> <div class="gutter-condensed gutter-lg flex-column flex-md-row d-flex"> <div class="flex-shrink-0 col-12 col-md-9 mb-4 mb-md-0"> <div class="file-navigation mb-3 d-flex flex-items-start"> <div class="position-relative"> <details class="details-reset details-overlay mr-0 mb-0 " id="branch-select-menu"> <summary class="btn css-truncate" data-hotkey="w" title="Switch branches or tags"> <svg text="gray" height="16" class="octicon octicon-git-branch text-gray" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path></svg> <span class="css-truncate-target" data-menu-button>master</span> <span class="dropdown-caret"></span> </summary> <details-menu class="SelectMenu SelectMenu--hasFilter" src="/jonathantorres/construct/refs/master?source_action=disambiguate&amp;source_controller=files" preload> <div class="SelectMenu-modal"> <include-fragment class="SelectMenu-loading" aria-label="Menu is loading"> <svg class="octicon octicon-octoface anim-pulse" height="32" viewbox="0 0 24 24" version="1.1" width="32" aria-hidden="true"><path d="M7.75 11c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5C9 11.56 8.44 11 7.75 11zm1.27 4.5a.469.469 0 01.48-.5h5a.47.47 0 01.48.5c-.116 1.316-.759 2.5-2.98 2.5s-2.864-1.184-2.98-2.5zm7.23-4.5c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5c0-.69-.56-1.25-1.25-1.25z"></path><path fill-rule="evenodd" d="M21.255 3.82a1.725 1.725 0 00-2.141-1.195c-.557.16-1.406.44-2.264.866-.78.386-1.647.93-2.293 1.677A18.442 18.442 0 0012 5c-.93 0-1.784.059-2.569.17-.645-.74-1.505-1.28-2.28-1.664a13.876 13.876 0 00-2.265-.866 1.725 1.725 0 00-2.141 1.196 23.645 23.645 0 00-.69 3.292c-.125.97-.191 2.07-.066 3.112C1.254 11.882 1 13.734 1 15.527 1 19.915 3.13 23 12 23c8.87 0 11-3.053 11-7.473 0-1.794-.255-3.647-.99-5.29.127-1.046.06-2.15-.066-3.125a23.652 23.652 0 00-.689-3.292zM20.5 14c.5 3.5-1.5 6.5-8.5 6.5s-9-3-8.5-6.5c.583-4 3-6 8.5-6s7.928 2 8.5 6z"></path></svg> </include-fragment> </div> </details-menu> </details> </div> <div class="flex-self-center ml-3 flex-self-stretch d-none d-lg-flex flex-items-center lh-condensed-ultra"> <a data-pjax href="/web/20200930085948/https://github.com/jonathantorres/construct/branches" class="link-gray-dark no-underline"> <svg text="gray" height="16" class="octicon octicon-git-branch text-gray" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path></svg> <strong>2</strong> <span class="text-gray-light">branches</span> </a> <a data-pjax href="/web/20200930085948/https://github.com/jonathantorres/construct/tags" class="ml-3 link-gray-dark no-underline"> <svg text="gray" height="16" class="octicon octicon-tag text-gray" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"></path></svg> <strong>30</strong> <span class="text-gray-light">tags</span> </a> </div> <div class="flex-auto"></div> <a class="btn ml-2" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;FIND_FILE_BUTTON&quot;,&quot;repository_id&quot;:34433994,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a32f8800009a0aa6ce70a3c73012e918017ea6b1e773186e7133132be8797e9e" data-ga-click="Repository, find file, location:repo overview" data-hotkey="t" data-pjax="true" href="/web/20200930085948/https://github.com/jonathantorres/construct/find/master"> Go to file </a> <span class="d-none d-md-flex ml-2"> <get-repo> <details class="position-relative details-overlay details-reset" data-action="toggle:get-repo#onDetailsToggle"> <summary class="btn btn-primary" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;repository_id&quot;:34433994,&quot;target&quot;:&quot;CLONE_OR_DOWNLOAD_BUTTON&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f89ea6267d12d65e8d95a4a46adda24c9d775e8f2884454739cd242e2f567557"> <svg class="octicon octicon-download mr-1" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"></path></svg> Code <span class="dropdown-caret"></span> </summary> <div class="position-relative"> <div class="dropdown-menu dropdown-menu-sw p-0" style="top:6px;width:352px;"> <div data-target="get-repo.modal"> <div class="border-bottom p-3"> <a class="muted-link float-right tooltipped tooltipped-s" href="https://web.archive.org/web/20200930085948/https://docs.github.com/articles/which-remote-url-should-i-use" target="_blank" aria-label="Which remote URL should I use?"> <svg class="octicon octicon-question" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zM6.92 6.085c.081-.16.19-.299.34-.398.145-.097.371-.187.74-.187.28 0 .553.087.738.225A.613.613 0 019 6.25c0 .177-.04.264-.077.318a.956.956 0 01-.277.245c-.076.051-.158.1-.258.161l-.007.004a7.728 7.728 0 00-.313.195 2.416 2.416 0 00-.692.661.75.75 0 001.248.832.956.956 0 01.276-.245 6.3 6.3 0 01.26-.16l.006-.004c.093-.057.204-.123.313-.195.222-.149.487-.355.692-.662.214-.32.329-.702.329-1.15 0-.76-.36-1.348-.863-1.725A2.76 2.76 0 008 4c-.631 0-1.155.16-1.572.438-.413.276-.68.638-.849.977a.75.75 0 101.342.67z"></path></svg> </a> <div class="text-bold"> <svg class="octicon octicon-terminal mr-3" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0114.25 15H1.75A1.75 1.75 0 010 13.25V2.75zm1.75-.25a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25V2.75a.25.25 0 00-.25-.25H1.75zM7.25 8a.75.75 0 01-.22.53l-2.25 2.25a.75.75 0 11-1.06-1.06L5.44 8 3.72 6.28a.75.75 0 111.06-1.06l2.25 2.25c.141.14.22.331.22.53zm1.5 1.5a.75.75 0 000 1.5h3a.75.75 0 000-1.5h-3z"></path></svg> Clone </div> <tab-container> <div class="UnderlineNav my-2 box-shadow-none"> <div class="UnderlineNav-body" role="tablist"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form data-remote="true" action="/web/20200930085948/https://github.com/users/set_protocol?protocol_type=clone" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="ljGCtS4L5lGl/xW+nI7PEGI9sbbl66dC1AA2XdwRBDYs3svUDiGFCiAz4tTdQX4XaEIJezjndKH2XNFTngpzsg=="/> <button name="protocol_selector" type="submit" role="tab" class="UnderlineNav-item lh-default f6 py-0 px-0 mr-2 position-relative" aria-selected="true" value="http" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;USE_HTTPS&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:34433994,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bede9420fb16bf45329075b867de4f378c03152b711bdc19f7d24136a6f28d28"> HTTPS </button> <button name="protocol_selector" type="submit" role="tab" class="UnderlineNav-item lh-default f6 py-0 px-0 mr-2 position-relative" value="gh_cli" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;USE_GH_CLI&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:34433994,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1e6661ab7b3948d8581facb00c73513389035aeec426f4f0016ed6e172d26d42"> GitHub CLI </button></form> </div> </div> <div role="tabpanel"> <div class="input-group"> <input type="text" class="form-control input-monospace input-sm bg-gray-light" data-autoselect value="https://github.com/jonathantorres/construct.git" aria-label="https://github.com/jonathantorres/construct.git" readonly> <div class="input-group-button"> <clipboard-copy value="https://github.com/jonathantorres/construct.git" aria-label="Copy to clipboard" class="btn btn-sm" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;COPY_URL&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:34433994,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8dffc7c7898edbe73020a29aa8e795a83f744219a940f2184aa7fb1b9c246c72"><svg class="octicon octicon-clippy" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"></path></svg></clipboard-copy> </div> </div> <p class="mt-2 mb-0 f6 text-gray"> Use Git or checkout with SVN using the web URL. </p> </div> <div role="tabpanel" hidden> <div class="input-group"> <input type="text" class="form-control input-monospace input-sm bg-gray-light" data-autoselect value="gh repo clone jonathantorres/construct" aria-label="gh repo clone jonathantorres/construct" readonly> <div class="input-group-button"> <clipboard-copy value="gh repo clone jonathantorres/construct" aria-label="Copy to clipboard" class="btn btn-sm" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;COPY_URL&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:34433994,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8dffc7c7898edbe73020a29aa8e795a83f744219a940f2184aa7fb1b9c246c72"><svg class="octicon octicon-clippy" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"></path></svg></clipboard-copy> </div> </div> <p class="mt-2 mb-0 f6 text-gray"> Work fast with our official CLI. <a href="https://web.archive.org/web/20200930085948/https://cli.github.com/" target="_blank">Learn more</a>. </p> </div> </tab-container> </div> <ul class="list-style-none"> <li data-platforms="windows,mac" class="Box-row Box-row--hover-gray p-0 rounded-0 mt-0 js-remove-unless-platform"> <a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;OPEN_IN_DESKTOP&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:34433994,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5592dcdef4b0b43a4a2b4d6f22d7854459b12317b4c99f1857a43d48ea4d2078" data-action="click:get-repo#showDownloadMessage" href="https://web.archive.org/web/20200930085948/https://desktop.github.com/"> <svg class="octicon octicon-desktop-download mr-3" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.75 5V.75a.75.75 0 00-1.5 0V5H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0l2.896-2.896A.25.25 0 0010.896 5H8.75zM1.5 2.75a.25.25 0 01.25-.25h3a.75.75 0 000-1.5h-3A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1h-3a.75.75 0 000 1.5h3a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"></path></svg> Open with GitHub Desktop </a> </li> <li class="Box-row Box-row--hover-gray p-0"> <a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;DOWNLOAD_ZIP&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:34433994,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ac5b5593b4019786103613267fe2cead71d19b0c6623c8ffdcb0903c3f3afdfe" data-ga-click="Repository, download zip, location:repo overview" data-open-app="link" href="/web/20200930085948/https://github.com/jonathantorres/construct/archive/master.zip"> <svg class="octicon octicon-file-zip mr-3" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.5 1.75a.25.25 0 01.25-.25h3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h2.086a.25.25 0 01.177.073l2.914 2.914a.25.25 0 01.073.177v8.586a.25.25 0 01-.25.25h-.5a.75.75 0 000 1.5h.5A1.75 1.75 0 0014 13.25V4.664c0-.464-.184-.909-.513-1.237L10.573.513A1.75 1.75 0 009.336 0H3.75A1.75 1.75 0 002 1.75v11.5c0 .649.353 1.214.874 1.515a.75.75 0 10.752-1.298.25.25 0 01-.126-.217V1.75zM8.75 3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM6 5.25a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5A.75.75 0 016 5.25zm2 1.5A.75.75 0 018.75 6h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 6.75zm-1.25.75a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM8 9.75A.75.75 0 018.75 9h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 9.75zm-.75.75a1.75 1.75 0 00-1.75 1.75v3c0 .414.336.75.75.75h2.5a.75.75 0 00.75-.75v-3a1.75 1.75 0 00-1.75-1.75h-.5zM7 12.25a.25.25 0 01.25-.25h.5a.25.25 0 01.25.25v2.25H7v-2.25z"></path></svg> Download ZIP </a> </li> </ul> </div> <div class="p-3" data-targets="get-repo.platforms" data-platform="mac" hidden> <h4 class="lh-condensed mb-3">Launching GitHub Desktop<span class="AnimatedEllipsis"></span></h4> <p class="text-gray">If nothing happens, <a href="https://web.archive.org/web/20200930085948/https://desktop.github.com/">download GitHub Desktop</a> and try again.</p> <button type="button" class="btn-link" data-action="click:get-repo#onDetailsToggle">Go back</button> </div> <div class="p-3" data-targets="get-repo.platforms" data-platform="windows" hidden> <h4 class="lh-condensed mb-3">Launching GitHub Desktop<span class="AnimatedEllipsis"></span></h4> <p class="text-gray">If nothing happens, <a href="https://web.archive.org/web/20200930085948/https://desktop.github.com/">download GitHub Desktop</a> and try again.</p> <button type="button" class="btn-link" data-action="click:get-repo#onDetailsToggle">Go back</button> </div> <div class="p-3" data-targets="get-repo.platforms" data-platform="xcode" hidden> <h4 class="lh-condensed mb-3">Launching Xcode<span class="AnimatedEllipsis"></span></h4> <p class="text-gray">If nothing happens, <a href="https://web.archive.org/web/20200930085948/https://developer.apple.com/xcode/">download Xcode</a> and try again.</p> <button type="button" class="btn-link" data-action="click:get-repo#onDetailsToggle">Go back</button> </div> <div class="p-3" data-targets="get-repo.platforms" data-platform="visual-studio" hidden> <h4 class="lh-condensed mb-3">Launching Visual Studio<span class="AnimatedEllipsis"></span></h4> <p class="text-gray">If nothing happens, <a href="https://web.archive.org/web/20200930085948/https://visualstudio.github.com/">download the GitHub extension for Visual Studio</a> and try again.</p> <button type="button" class="btn-link" data-action="click:get-repo#onDetailsToggle">Go back</button> </div> </div> </div> </details> </get-repo> </span> </div> <div class="Box mb-3"> <div class="Box-header Box-header--blue position-relative"> <h2 class="sr-only">Latest commit</h2> <div class="js-details-container Details d-flex rounded-top-1 flex-items-center flex-wrap" data-issue-and-pr-hovercards-enabled> <include-fragment src="/jonathantorres/construct/tree-commit/d01865ad45537efc7f672aa4fa92dac22137606f" class="d-flex flex-auto flex-items-center" aria-busy="true" aria-label="Loading latest commit"> <div class="Skeleton avatar avatar-user flex-shrink-0 ml-n1 mr-n1 mt-n1 mb-n1" style="width:24px;height:24px;"></div> <div class="Skeleton Skeleton--text col-5 ml-3">&nbsp;</div> </include-fragment> <div class="flex-shrink-0"> <h2 class="sr-only">Git stats</h2> <ul class="list-style-none d-flex"> <li class="ml-0 ml-md-3"> <a data-pjax href="/web/20200930085948/https://github.com/jonathantorres/construct/commits/master" class="pl-3 pr-3 py-3 p-md-0 mt-n3 mb-n3 mr-n3 m-md-0 link-gray-dark no-underline no-wrap"> <svg text="gray" height="16" class="octicon octicon-history text-gray" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"></path></svg> <span class="d-none d-sm-inline"> <strong>697</strong> <span aria-label="Commits on master" class="text-gray d-none d-lg-inline">commits</span> </span> </a> </li> </ul> </div> </div> </div> <h2 id="files" class="sr-only">Files</h2> <include-fragment src="/jonathantorres/construct/file-list/master"> <a class="d-none js-permalink-shortcut" data-hotkey="y" href="/web/20200930085948/https://github.com/jonathantorres/construct/tree/d01865ad45537efc7f672aa4fa92dac22137606f">Permalink</a> <div class="include-fragment-error flash flash-error flash-full py-2"> <svg height="16" class="octicon octicon-alert" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg> Failed to load latest commit information. </div> <div class="js-details-container Details"> <div role="grid" aria-labelledby="files" class="Details-content--hidden-not-important js-navigation-container js-active-navigation-container d-md-block" data-pjax> <div class="sr-only" role="row"> <div role="columnheader">Type</div> <div role="columnheader">Name</div> <div role="columnheader" class="d-none d-md-block">Latest commit message</div> <div role="columnheader">Commit time</div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="blue-3" aria-label="Directory" height="16" class="octicon octicon-file-directory color-blue-3" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="bin" id="c1111bd512b29e821b120b86446026b8-30ae6315c1146bfd54ae26aa4a58385fc69b2782" href="/web/20200930085948/https://github.com/jonathantorres/construct/tree/master/bin">bin</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="blue-3" aria-label="Directory" height="16" class="octicon octicon-file-directory color-blue-3" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="example" id="1a79a4d60de6718e8e5b326e338ae533-d9b0ecc52f14e2a038372158f6f6a162fe1a9dab" href="/web/20200930085948/https://github.com/jonathantorres/construct/tree/master/example">example</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="blue-3" aria-label="Directory" height="16" class="octicon octicon-file-directory color-blue-3" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="src" id="25d902c24283ab8cfbac54dfa101ad31-fa126e7d6e5dc4772ed156ad16008a8c3d4f6a5d" href="/web/20200930085948/https://github.com/jonathantorres/construct/tree/master/src">src</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="blue-3" aria-label="Directory" height="16" class="octicon octicon-file-directory color-blue-3" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="tests" id="b61a6d542f9036550ba9c401c80f00ef-c7bde2735602831c63046a9dfb949d128714765a" href="/web/20200930085948/https://github.com/jonathantorres/construct/tree/master/tests">tests</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title=".appveyor.yml" id="11c909939117928998b102a1fff7d363-9d726cd606c4f4c876ece8448ee2dcbd26831709" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/.appveyor.yml">.appveyor.yml</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title=".editorconfig" id="1e70daafb475c0ce3fef7d2728279182-cf958e34426cef89e9cd09c33b183a018fab6ccd" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/.editorconfig">.editorconfig</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title=".gitattributes" id="fc723d30b02a4cca7a534518111c1a66-e8176bbf3a3bb681cba645ad4faa9fadaa6b3b7b" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/.gitattributes">.gitattributes</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title=".gitignore" id="a084b794bc0759e7a6b77810e01874f2-d9df09a191e535c6540b31168cef0635dcdbc7ba" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/.gitignore">.gitignore</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title=".php_cs" id="b31b99fa4c2c185ba6a71235efb48224-456715ab5d28eda9b81891e783adb5f23164ca09" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/.php_cs">.php_cs</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title=".travis.yml" id="354f30a63fb0907d4ad57269548329e3-207ea86324a3edf47974e52974cea550d61d181c" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/.travis.yml">.travis.yml</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="CHANGELOG.md" id="4ac32a78649ca5bdd8e0ba38b7006a1e-067210c397f2b4482c74a6d33ac26efdb4278f35" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/CHANGELOG.md">CHANGELOG.md</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="CONTRIBUTING.md" id="6a3371457528722a734f3c51d9238c13-c39848abce18380b86bd8f4ae425b5fb7dacd83d" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="LICENSE.md" id="37854d19817c792316d481f5beb93cc7-2fe1f22982b9abf688a6a624d85b3b605d82e248" itemprop="license" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/LICENSE.md">LICENSE.md</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="README.md" id="04c6e90faac2675aa89e2176d2eec7d8-41896ce01c1a17bbdb2452df984587be3875baf7" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/README.md">README.md</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="composer.json" id="b5d0ee8c97c7abd7e3fa29b9a27d1780-81be5dfbad5d29820eadb2d6a72164616771761d" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/composer.json">composer.json</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="phpstan.neon" id="e4ce1df0d2ca17a9d91544a50ace127a-5059c6c85dcfd5a734b38c518eac37f6b1abf5fc" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/phpstan.neon">phpstan.neon</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item "> <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;"> <svg color="gray-light" aria-label="File" height="16" class="octicon octicon-file text-gray-light" viewbox="0 0 16 16" version="1.1" width="16" role="img"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg> </div> <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3"> <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open link-gray-dark" title="phpunit.xml.dist" id="98c12a693941ae3c4f50872403416471-cd3995a2da24a4ac29b45045df54695f42437e20" href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/phpunit.xml.dist">phpunit.xml.dist</a></span> </div> <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message"> <div class="Skeleton Skeleton--text col-7">&nbsp;</div> </div> <div role="gridcell" class="text-gray-light text-right" style="width:100px;"> <div class="Skeleton Skeleton--text">&nbsp;</div> </div> </div> </div> <div class="Details-content--shown Box-footer d-md-none p-0"> <button type="button" class="d-block btn-link js-details-target width-full px-3 py-2" aria-expanded="false"> View code </button> </div> </div> </include-fragment> </div> <div id="readme" class="Box md js-code-block-container Box--responsive"> <div class="Box-header d-flex flex-items-center flex-justify-between bg-white border-bottom-0"> <h2 class="Box-title pr-3"> README.md </h2> </div> <div class="Popover anim-scale-in js-tagsearch-popover" hidden data-tagsearch-url="/jonathantorres/construct/find-definition" data-tagsearch-ref="master" data-tagsearch-path="README.md" data-tagsearch-lang="Markdown" data-hydro-click="{&quot;event_type&quot;:&quot;code_navigation.click_on_symbol&quot;,&quot;payload&quot;:{&quot;action&quot;:&quot;click_on_symbol&quot;,&quot;repository_id&quot;:34433994,&quot;ref&quot;:&quot;master&quot;,&quot;language&quot;:&quot;Markdown&quot;,&quot;originating_url&quot;:&quot;https://github.com/jonathantorres/construct&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c8a154c57a8e4be3150a0635081dbe32b129ebdf9fc19a76f0450369435de68f"> <div class="Popover-message Popover-message--large Popover-message--top-left TagsearchPopover mt-1 mb-4 mx-auto Box box-shadow-large"> <div class="TagsearchPopover-content js-tagsearch-popover-content overflow-auto" style="will-change:transform;"> </div> </div> </div> <div class="Box-body px-5 pb-5"> <article class="markdown-body entry-content container-lg" itemprop="text"><h1><a id="user-content-construct" class="anchor" aria-hidden="true" href="#construct"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Construct</h1> <p><a href="https://web.archive.org/web/20200930085948/https://travis-ci.org/jonathantorres/construct" rel="nofollow"><img src="https://web.archive.org/web/20200930085948im_/https://camo.githubusercontent.com/1dc4f95254df87e6bf39be061722109484d1ee22/68747470733a2f2f7472617669732d63692e6f72672f6a6f6e617468616e746f727265732f636f6e7374727563742e7376673f6272616e63683d6d6173746572" alt="Build Status" data-canonical-src="https://web.archive.org/web/20200930085948/https://travis-ci.org/jonathantorres/construct.svg?branch=master" style="max-width:100%;"></a> <a href="https://web.archive.org/web/20200930085948/https://ci.appveyor.com/project/jonathantorres/construct" rel="nofollow"><img src="https://web.archive.org/web/20200930085948im_/https://camo.githubusercontent.com/4fbd55eb833f53758ff5058e4fa065c54b209f86/68747470733a2f2f63692e6170707665796f722e636f6d2f6170692f70726f6a656374732f7374617475732f6769746875622f6a6f6e617468616e746f727265732f636f6e7374727563743f7376673d74727565" alt="Build Status" data-canonical-src="https://web.archive.org/web/20200930085948/https://ci.appveyor.com/api/projects/status/github/jonathantorres/construct?svg=true" style="max-width:100%;"></a> <a href="https://web.archive.org/web/20200930085948/https://packagist.org/packages/jonathantorres/construct" rel="nofollow"><img src="https://web.archive.org/web/20200930085948im_/https://camo.githubusercontent.com/6fdf30553ede88411a9874f478291825c4cc6f63/687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a6f6e617468616e746f727265732f636f6e7374727563742e7376673f7374796c653d666c6174" alt="Version" data-canonical-src="https://web.archive.org/web/20200930085948/http://img.shields.io/packagist/v/jonathantorres/construct.svg?style=flat" style="max-width:100%;"></a> <a href="https://web.archive.org/web/20200930085948/https://github.com/php-pds/skeleton"><img src="https://web.archive.org/web/20200930085948im_/https://camo.githubusercontent.com/5da31a13197e63c8c0ec6916f658f4a474788bd2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7064732d736b656c65746f6e2d626c75652e7376673f7374796c653d666c6174" alt="PDS Skeleton" data-canonical-src="https://web.archive.org/web/20200930085948/https://img.shields.io/badge/pds-skeleton-blue.svg?style=flat" style="max-width:100%;"></a></p> <p>A PHP project/micro-package generator for <a href="https://web.archive.org/web/20200930085948/http://php-pds.com/" rel="nofollow">PDS</a> compliant projects or micro-packages.</p> <h2><a id="user-content-installation" class="anchor" aria-hidden="true" href="#installation"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Installation</h2> <p>Construct should be installed globally through composer.</p> <div class="highlight highlight-source-shell"><pre>composer global require jonathantorres/construct</pre></div> <p>Make sure that <code>~/.composer/vendor/bin</code> is on your <code>$PATH</code>. This way the <code>construct</code> executable can be located.</p> <h2><a id="user-content-assumptions" class="anchor" aria-hidden="true" href="#assumptions"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Assumptions</h2> <p>As Construct utilizes Composer's CLI, it's assumed that Composer is installed. When using the option to initialize an empty Git repo (i.e. <code>--git</code> or <code>-g</code>) it's also assumed that Git is installed.</p> <h2><a id="user-content-usage" class="anchor" aria-hidden="true" href="#usage"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Usage</h2> <p>Just run <code>construct generate</code> with your <code>vendor/package</code> declaration and it will construct a basic PHP project into the <code>package</code> directory. For example, if you run <code>construct generate jonathantorres/logger</code> it will generate a basic project structure inside the <code>logger</code> folder.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger</pre></div> <p>The generated project structure will look like the following <code>tree</code> excerpt. Files and directories in parentheses are optional.</p> <pre><code>├── logger │ ├── CHANGELOG.md │ ├── (CONDUCT.md) │ ├── composer.json │ ├── composer.lock │ ├── CONTRIBUTING.md │ ├── (.appveyor.yml) │ ├── (.editorconfig) │ ├── (.env) │ ├── (.env.example) │ ├── (.git) │ │   └── ... │ ├── .gitattributes │ ├── (.github) │ │   ├── CONTRIBUTING.md │ │   ├── ISSUE_TEMPLATE.md │ │   └── PULL_REQUEST_TEMPLATE.md │ ├── .gitignore │ ├── .gitmessage │ ├── (.lgtm) │ ├── (bin) │ │   └── cli-script │ ├── LICENSE.md │ ├── (MAINTAINERS) │ ├── (.php_cs) │ ├── (phpunit.xml.dist) │ ├── README.md │ ├── (docs) │ │   └── index.md │ ├── src │ │   └── Logger.php │ ├── tests │ │   └── LoggerTest.php │ ├── .travis.yml │ ├── (Vagrantfile) │ └── vendor │ └── ... </code></pre> <p>This is a good starting point. You can continue your work from there.</p> <h2><a id="user-content-select-testing-framework" class="anchor" aria-hidden="true" href="#select-testing-framework"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Select testing framework</h2> <p>The <code>--test-framework</code> or <code>--test</code> option will allow you to select a testing framework. One of the following is available at the moment: <code>phpunit</code>, <code>phpspec</code>, <code>codeception</code> or <code>behat</code>. <code>phpunit</code> is currently the default.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --test-framework=codeception</pre></div> <p>You can also use the short option <code>-t</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -t codeception</pre></div> <h2><a id="user-content-select-license" class="anchor" aria-hidden="true" href="#select-license"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Select license</h2> <p>The <code>--license</code> option will allow you to select a license for the project to construct. One of the following is available at the moment: <code>MIT</code>, <code>Apache-2.0</code>, <code>GPL-2.0</code> or <code>GPL-3.0</code>. <code>MIT</code> is currently the default.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --license=Apache-2.0</pre></div> <p>You can also use the short option <code>-l</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -l Apache-2.0</pre></div> <h2><a id="user-content-specify-a-namespace" class="anchor" aria-hidden="true" href="#specify-a-namespace"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Specify a namespace</h2> <p>The <code>--namespace</code> option will allow you to specify a namespace for the project to construct. This is totally optional. By default construct will use the package name as the namespace.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --namespace=JonathanTorres<span class="pl-cce">\\</span>Projects<span class="pl-cce">\\</span>Logger</pre></div> <p>You can also use the short option <code>-s</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -s JonathanTorres<span class="pl-cce">\\</span>Projects<span class="pl-cce">\\</span>Logger</pre></div> <h2><a id="user-content-specify-a-cli-framework" class="anchor" aria-hidden="true" href="#specify-a-cli-framework"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Specify a CLI framework</h2> <p>The optional <code>--cli-framework</code> option will allow you to specify a CLI framework for the project to construct, while also creating a bin directory with an initial CLI script in it, adding a bin key in the project's composer.json, and an initial <a href="https://web.archive.org/web/20200930085948/https://www.appveyor.com/" rel="nofollow">AppVeyor</a> configuration. When the option has been set without a CLI composer package the <code>symfony/console</code> package will be used per default. There's no short option available.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --cli-framework=zendframework/zend-console</pre></div> <h2><a id="user-content-specify-php-version" class="anchor" aria-hidden="true" href="#specify-php-version"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Specify PHP version</h2> <p>The <code>--php</code> option will allow you to specify the minimum required PHP version that your project will support. Construct will use the currently installed version if not specified.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --php=5.6.31</pre></div> <h2><a id="user-content-specify-composer-keywords" class="anchor" aria-hidden="true" href="#specify-composer-keywords"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Specify Composer keywords</h2> <p>The optional <code>--keywords</code> option will allow you to specify a comma separated list of <a href="https://web.archive.org/web/20200930085948/https://getcomposer.org/doc/04-schema.md#keywords" rel="nofollow">Composer keywords</a>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --keywords=log,logging</pre></div> <p>You can also use the short option <code>-k</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -k=log,logging</pre></div> <h2><a id="user-content-initialize-an-empty-git-repo" class="anchor" aria-hidden="true" href="#initialize-an-empty-git-repo"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Initialize an empty Git repo?</h2> <p>The <code>--git</code> option will allow you to initialize an empty Git repository inside the constructed project.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --git</pre></div> <p>You can also use the short option <code>-g</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -g</pre></div> <h2><a id="user-content-generate-a-php-coding-standards-fixer-configuration" class="anchor" aria-hidden="true" href="#generate-a-php-coding-standards-fixer-configuration"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate a PHP Coding Standards Fixer configuration?</h2> <p>The <code>--phpcs</code> option will generate a <a href="https://web.archive.org/web/20200930085948/http://cs.sensiolabs.org/" rel="nofollow">PHP Coding Standards Fixer</a> configuration within the constructed project and add a Travis CI script for validation during builds. The generated <code>.php_cs</code> configuration defaults to the <code>PSR-2</code> coding style guide.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --phpcs</pre></div> <p>You can also use the short option <code>-p</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -p</pre></div> <h2><a id="user-content-generate-a-vagrantfile" class="anchor" aria-hidden="true" href="#generate-a-vagrantfile"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate a Vagrantfile?</h2> <p>The <code>--vagrant</code> option will generate a basic <a href="https://web.archive.org/web/20200930085948/https://docs.vagrantup.com/v2/vagrantfile/index.html" rel="nofollow">Vagrantfile</a> within the constructed project, defaulting to the output of a <code>vagrant init</code> call plus a minimal <a href="https://web.archive.org/web/20200930085948/http://fgrehm.viewdocs.io/vagrant-cachier" rel="nofollow">vagrant-cachier</a> plugin configuration. There's no short option available.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --vagrant</pre></div> <h2><a id="user-content-generate-an-editorconfig-configuration" class="anchor" aria-hidden="true" href="#generate-an-editorconfig-configuration"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate an EditorConfig configuration?</h2> <p>The <code>--editor-config</code> option will generate an <a href="https://web.archive.org/web/20200930085948/http://editorconfig.org/" rel="nofollow">EditorConfig</a> configuration within the constructed project.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --editor-config</pre></div> <p>You can also use the short option <code>-e</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -e</pre></div> <h2><a id="user-content-generate-env-enviroment-files" class="anchor" aria-hidden="true" href="#generate-env-enviroment-files"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate .env enviroment files?</h2> <p>The <code>--env</code> option will generate <a href="https://web.archive.org/web/20200930085948/https://github.com/vlucas/phpdotenv">.env</a> environment files within the constructed project for keeping <code>sensitive</code> information out of it. There's no short option available.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --env</pre></div> <h2><a id="user-content-generate-lgtm-configuration-files" class="anchor" aria-hidden="true" href="#generate-lgtm-configuration-files"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate LGTM configuration files?</h2> <p>The <code>--lgtm</code> option will generate <a href="https://web.archive.org/web/20200930085948/https://lgtm.co/" rel="nofollow">LGTM</a> configuration files within the constructed project. There's no short option available.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --lgtm</pre></div> <h2><a id="user-content-generate-common-github-files" class="anchor" aria-hidden="true" href="#generate-common-github-files"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate common GitHub files?</h2> <p>The <code>--github</code> option will generate common GitHub (i.e. <code>templates</code> and <code>docs</code>) files. There's no short option available.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --github</pre></div> <h2><a id="user-content-generate-github-template-files" class="anchor" aria-hidden="true" href="#generate-github-template-files"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate GitHub template files?</h2> <p>The <code>--github-templates</code> option will generate <a href="https://web.archive.org/web/20200930085948/https://github.com/blog/2111-issue-and-pull-request-templates">GitHub template</a> files within the constructed project into a folder conventionally named <code>.github</code>. It also will move <code>CONTRIBUTING.md</code> into it. There's no short option available, but the option is implicated with the <code>github</code> option.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --github-templates</pre></div> <h2><a id="user-content-generate-github-documentation-files" class="anchor" aria-hidden="true" href="#generate-github-documentation-files"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate GitHub documentation files?</h2> <p>The <code>--github-docs</code> option will generate <a href="https://web.archive.org/web/20200930085948/https://github.com/blog/2233-publish-your-project-documentation-with-github-pages">GitHub documentation</a> files within the constructed project into a folder conventionally named <code>docs</code>. There's no short option available, but the option is implicated with the <code>github</code> option.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --github-docs</pre></div> <h2><a id="user-content-generate-a-code-of-conduct" class="anchor" aria-hidden="true" href="#generate-a-code-of-conduct"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Generate a Code of Conduct?</h2> <p>The <code>--code-of-conduct</code> option will generate a Code of Conduct file named <code>CONDUCT.md</code> within the constructed project and also add a reference to it in the generated <code>README.md</code>. The used Code of Conduct is adapted from the <a href="https://web.archive.org/web/20200930085948/http://contributor-covenant.org/" rel="nofollow">Contributor Covenant</a>, version 1.4. There's no short option available.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --code-of-conduct</pre></div> <h2><a id="user-content-use-a-configuration-for-recurring-settings" class="anchor" aria-hidden="true" href="#use-a-configuration-for-recurring-settings"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Use a configuration for recurring settings</h2> <p>The <code>--config</code> option allows the usage of a configuration file in the <code>YAML</code> format. There are two ways to provide such a configuration file: One is to provide a specific file as an option argument, the other is to put a <code>.construct</code> configuration file in the home directory of your system. For the structure of a configuration file have a look at the <a href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/example/.construct">.construct</a> example file. When no configuration keys are provided for settings having a default value (i.e. <code>test-framework</code>, <code>license</code>, <code>php</code>) their default value is used.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger --config /path/to/config.yml</pre></div> <p>You can also use the short option <code>-c</code>.</p> <div class="highlight highlight-source-shell"><pre>construct generate jonathantorres/logger -c /path/to/config.yml</pre></div> <p>When there's a <code>.construct</code> configuration file in your home directory it will be used per default. If required it's possible to disable the usage via the <code>--ignore-default-config</code> option or the equivalent short option <code>-i</code>.</p> <h2><a id="user-content-interactive-mode" class="anchor" aria-hidden="true" href="#interactive-mode"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Interactive Mode</h2> <p>This mode will ask you all the required (and optional) information to generate your project.</p> <div class="highlight highlight-source-shell"><pre>construct generate:interactive</pre></div> <h2><a id="user-content-running-tests" class="anchor" aria-hidden="true" href="#running-tests"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Running tests</h2> <div class="highlight highlight-source-shell"><pre>composer construct:test</pre></div> <h2><a id="user-content-license" class="anchor" aria-hidden="true" href="#license"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>License</h2> <p>This library is licensed under the MIT license. Please see <a href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/LICENSE.md">LICENSE</a> for more details.</p> <h2><a id="user-content-changelog" class="anchor" aria-hidden="true" href="#changelog"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Changelog</h2> <p>Please see <a href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/CHANGELOG.md">CHANGELOG</a> for more details.</p> <h2><a id="user-content-contributing" class="anchor" aria-hidden="true" href="#contributing"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Contributing</h2> <p>Please see <a href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/CONTRIBUTING.md">CONTRIBUTING</a> for more details.</p> </article> </div> </div> </div> <div class="flex-shrink-0 col-12 col-md-3"> <div class="BorderGrid BorderGrid--spacious" data-pjax> <div class="BorderGrid-row hide-sm hide-md"> <div class="BorderGrid-cell"> <h2 class="mb-3 h4">About</h2> <p class="f4 mt-3"> A PHP project/micro-package generator for PDS compliant projects or micro-packages. </p> <h3 class="sr-only">Topics</h3> <div class="mt-3"> <div class="f6"> <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:php" href="/web/20200930085948/https://github.com/topics/php" title="Topic: php" class="topic-tag topic-tag-link "> php </a> <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:project" href="/web/20200930085948/https://github.com/topics/project" title="Topic: project" class="topic-tag topic-tag-link "> project </a> <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:package" href="/web/20200930085948/https://github.com/topics/package" title="Topic: package" class="topic-tag topic-tag-link "> package </a> <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:structure" href="/web/20200930085948/https://github.com/topics/structure" title="Topic: structure" class="topic-tag topic-tag-link "> structure </a> <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:cli" href="/web/20200930085948/https://github.com/topics/cli" title="Topic: cli" class="topic-tag topic-tag-link "> cli </a> </div> </div> <h3 class="sr-only">Resources</h3> <div class="mt-3"> <a class="muted-link" href="#readme"> <svg mr="2" height="16" class="octicon octicon-book mr-2" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path></svg> Readme </a> </div> <h3 class="sr-only">License</h3> <div class="mt-3"> <a href="/web/20200930085948/https://github.com/jonathantorres/construct/blob/master/LICENSE.md" class="muted-link"> <svg mr="2" height="16" class="octicon octicon-law mr-2" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.75.75a.75.75 0 00-1.5 0V2h-.984c-.305 0-.604.08-.869.23l-1.288.737A.25.25 0 013.984 3H1.75a.75.75 0 000 1.5h.428L.066 9.192a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.514 3.514 0 00.686.45A4.492 4.492 0 003 11c.88 0 1.556-.22 2.023-.454a3.515 3.515 0 00.686-.45l.045-.04.016-.015.006-.006.002-.002.001-.002L5.25 9.5l.53.53a.75.75 0 00.154-.838L3.822 4.5h.162c.305 0 .604-.08.869-.23l1.289-.737a.25.25 0 01.124-.033h.984V13h-2.5a.75.75 0 000 1.5h6.5a.75.75 0 000-1.5h-2.5V3.5h.984a.25.25 0 01.124.033l1.29.736c.264.152.563.231.868.231h.162l-2.112 4.692a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.517 3.517 0 00.686.45A4.492 4.492 0 0013 11c.88 0 1.556-.22 2.023-.454a3.512 3.512 0 00.686-.45l.045-.04.01-.01.006-.005.006-.006.002-.002.001-.002-.529-.531.53.53a.75.75 0 00.154-.838L13.823 4.5h.427a.75.75 0 000-1.5h-2.234a.25.25 0 01-.124-.033l-1.29-.736A1.75 1.75 0 009.735 2H8.75V.75zM1.695 9.227c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327l-1.305 2.9zm10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327l-1.305 2.9z"></path></svg> MIT License </a> </div> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3"> <a href="/web/20200930085948/https://github.com/jonathantorres/construct/releases" class="link-gray-dark no-underline "> Releases <span title="30" class="Counter ">30</span> </a></h2> <a class="link-gray-dark d-flex no-underline" href="/web/20200930085948/https://github.com/jonathantorres/construct/releases/tag/v2.0.0"> <svg mt="1" classes="flex-shrink-0" color="green" height="16" class="octicon octicon-tag flex-shrink-0 mt-1 text-green" viewbox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"></path></svg> <div class="ml-2 min-width-0"> <div class="d-flex"> <span class="css-truncate css-truncate-target text-bold mr-2" style="max-width: none;">v2.0.0</span> <span title="Label: Latest" class="Label Label--green flex-shrink-0"> Latest </span> </div> <div class="text-small text-gray"><relative-time datetime="2018-04-01T20:44:39Z" class="no-wrap">Apr 1, 2018</relative-time></div> </div> </a> <div class="mt-3"> <a href="/web/20200930085948/https://github.com/jonathantorres/construct/releases" class="text-small"> + 29 releases </a></div> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3"> <a href="/web/20200930085948/https://github.com/users/jonathantorres/packages?repo_name=construct" class="link-gray-dark no-underline "> Packages <span title="0" hidden="hidden" class="Counter ">0</span> </a></h2> <div class="text-small"> No packages published <br> </div> </div> </div> <div class="BorderGrid-row" hidden> <div class="BorderGrid-cell"> <include-fragment src="/jonathantorres/construct/used_by_list" accept="text/fragment+html"> </include-fragment> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3"> <a href="/web/20200930085948/https://github.com/jonathantorres/construct/graphs/contributors" class="link-gray-dark no-underline "> Contributors <span title="8" class="Counter ">8</span> </a></h2> <include-fragment src="/jonathantorres/construct/contributors_list?count=8&amp;current_repository=construct&amp;items_to_show=8" aria-busy="true" aria-label="Loading contributors"> <ul class="list-style-none d-flex flex-wrap mb-n2"> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> <li class="mb-2 "> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> </li> </ul> </include-fragment> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3">Languages</h2> <div class="mb-2"> <span class="Progress "> <span itemprop="keywords" aria-label="PHP 96.7" style="background-color: #4F5D95;width: 96.7%;" class="Progress-item "></span> <span itemprop="keywords" aria-label="Ruby 3.3" style="background-color: #701516;width: 3.3%;" class="Progress-item "></span> </span></div> <ul class="list-style-none"> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap link-gray no-underline text-small mr-3" href="/web/20200930085948/https://github.com/jonathantorres/construct/search?l=php" data-ga-click="Repository, language stats search click, location:repo overview"> <svg class="octicon octicon-dot-fill mr-2" style="color:#4F5D95;" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path></svg> <span class="text-gray-dark text-bold mr-1">PHP</span> <span>96.7%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap link-gray no-underline text-small mr-3" href="/web/20200930085948/https://github.com/jonathantorres/construct/search?l=ruby" data-ga-click="Repository, language stats search click, location:repo overview"> <svg class="octicon octicon-dot-fill mr-2" style="color:#701516;" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path></svg> <span class="text-gray-dark text-bold mr-1">Ruby</span> <span>3.3%</span> </a> </li> </ul> </div> </div> </div> </div></div> </div> </div> </main> </div> </div> <div class="footer container-xl width-full p-responsive" role="contentinfo"> <div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light "> <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0"> <li class="mr-3 mr-lg-0">&copy; 2020 GitHub, Inc.</li> <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to terms, text:terms" href="https://web.archive.org/web/20200930085948/https://github.com/site/terms">Terms</a></li> <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://web.archive.org/web/20200930085948/https://github.com/site/privacy">Privacy</a></li> <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to security, text:security" href="https://web.archive.org/web/20200930085948/https://github.com/security">Security</a></li> <li class="mr-3 mr-lg-0"><a href="https://web.archive.org/web/20200930085948/https://githubstatus.com/" data-ga-click="Footer, go to status, text:status">Status</a></li> <li><a data-ga-click="Footer, go to help, text:help" href="https://web.archive.org/web/20200930085948/https://docs.github.com/">Help</a></li> </ul> <a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://web.archive.org/web/20200930085948/https://github.com/"> <svg height="24" class="octicon octicon-mark-github" viewbox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> </a> <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0"> <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to contact, text:contact" href="https://web.archive.org/web/20200930085948/https://github.com/contact">Contact GitHub</a></li> <li class="mr-3 mr-lg-0"><a href="https://web.archive.org/web/20200930085948/https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li> <li class="mr-3 mr-lg-0"><a href="https://web.archive.org/web/20200930085948/https://docs.github.com/" data-ga-click="Footer, go to api, text:api">API</a></li> <li class="mr-3 mr-lg-0"><a href="https://web.archive.org/web/20200930085948/https://services.github.com/" data-ga-click="Footer, go to training, text:training">Training</a></li> <li class="mr-3 mr-lg-0"><a href="https://web.archive.org/web/20200930085948/https://github.blog/" data-ga-click="Footer, go to blog, text:blog">Blog</a></li> <li><a data-ga-click="Footer, go to about, text:about" href="https://web.archive.org/web/20200930085948/https://github.com/about">About</a></li> </ul> </div> <div class="d-flex flex-justify-center pb-6"> <span class="f6 text-gray-light"></span> </div> </div> <div id="ajax-error-message" class="ajax-error-message flash flash-error"> <svg class="octicon octicon-alert" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg class="octicon octicon-x" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg> </button> You can’t perform that action at this time. </div> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" id="js-conditional-compat" data-src="https://github.githubassets.com/assets/compat-bootstrap-6e7ff7ac.js"></script> <script crossorigin="anonymous" integrity="" type="application/javascript" src="https://web.archive.org/web/20200930085948js_/https://github.githubassets.com/assets/environment-bootstrap-0b18da31.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" src="https://web.archive.org/web/20200930085948js_/https://github.githubassets.com/assets/vendor-0c89a200.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" src="https://web.archive.org/web/20200930085948js_/https://github.githubassets.com/assets/frameworks-3ab8395a.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" src="https://web.archive.org/web/20200930085948js_/https://github.githubassets.com/assets/behaviors-bootstrap-f7c41a2e.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./contributions-spider-graph.js" data-src="https://github.githubassets.com/assets/contributions-spider-graph-f2149c97.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./drag-drop.js" data-src="https://github.githubassets.com/assets/drag-drop-b4eca50c.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./jump-to.js" data-src="https://github.githubassets.com/assets/jump-to-087c4806.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./manage-membership.js" data-src="https://github.githubassets.com/assets/manage-membership-bootstrap-b7cd70b9.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./profile-pins-element.js" data-src="https://github.githubassets.com/assets/profile-pins-element-e3f20579.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./randomColor.js" data-src="https://github.githubassets.com/assets/randomColor-2574a63a.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./sortable-behavior.js" data-src="https://github.githubassets.com/assets/sortable-behavior-14e520cf.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./tweetsodium.js" data-src="https://github.githubassets.com/assets/tweetsodium-4aaaae6b.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" data-module-id="./user-status-submit.js" data-src="https://github.githubassets.com/assets/user-status-submit-112489c3.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" src="https://web.archive.org/web/20200930085948js_/https://github.githubassets.com/assets/repositories-bootstrap-3ffd2335.js"></script> <script crossorigin="anonymous" async="async" integrity="" type="application/javascript" src="https://web.archive.org/web/20200930085948js_/https://github.githubassets.com/assets/github-bootstrap-8a67b7bf.js"></script> <div class="js-stale-session-flash flash flash-warn flash-banner" hidden> <svg class="octicon octicon-alert" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span> </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg class="octicon octicon-x" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;"> </div> </div> </body> </html> <!-- FILE ARCHIVED ON 08:59:48 Sep 30, 2020 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 06:14:30 Dec 04, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.901 exclusion.robots: 0.037 exclusion.robots.policy: 0.023 esindex: 0.014 cdx.remote: 57.875 LoadShardBlock: 142.416 (3) PetaboxLoader3.datanode: 92.151 (4) PetaboxLoader3.resolve: 199.625 (2) load_resource: 202.77 -->

Pages: 1 2 3 4 5 6 7 8 9 10