Cecil is a CLI application that merges plain text files (written in Markdown), images and Twig templates to generate a static website.

Overview

Cecil's logo, created by Cรฉcile Ricordeau

Cecil, your content driven static site generator.

Latest Stable Version Latest Preview Version License
Tests suite Release cecil.phar Deploy documentation
Scrutinizer Code Quality Codacy Badge Coverage Status StyleCI SymfonyInsight

Cecil is a CLI application that merges plain text files (written in Markdown), images and Twig templates to generate a static website.

๐Ÿ“„ Documentation | ๐Ÿ’ป Demo | ๐Ÿ› Issue tracker | ๐Ÿ’ฌ Discussion

Cecil CLI demo

Quick Start

Read the Quick Start documentation page.

Deploy to Netlify Deploy with Vercel Import to Forestry

Features

  • No database, no server, no dependency: performance and security
  • Your content is stored in Markdown flat files with a YAML front matter
  • Powered by Twig, a flexible template engine, with themes support
  • Pagination, sitemap, redirections, robots.txt, taxonomies, RSS are generated automatically
  • Download one file and run it
  • Easy to deploy

Installation

Download cecil.phar from your browser or from your terminal:

curl -LO https://cecil.app/cecil.phar

Then install the binary globally:

mv cecil.phar /usr/local/bin/cecil
chmod +x /usr/local/bin/cecil

PHP 7.1+ is required.

Usage

  • Get help: cecil help
  • Create new website: cecil new:site
  • Build and serve it: cecil serve

Contributing

See Contributing.

Sponsors

studio cecilliestudio cecillieย ย ย ย ย ย ย ย Vercel Vercel

License

Cecil is a free software distributed under the terms of the MIT license.

Cecil ยฉ Arnaud Ligny
Logo ยฉ Cรฉcile Ricordeau

Comments
  • Dependencies.io troubleshooting

    Dependencies.io troubleshooting

    We're opening this issue to inform you about problems with your dependencies.io configuration or build failures.

    We'll add a comment here when we see problems. You can close this issue when you have things resolved -- we'll open it back up if we detect new problems.

    Helpful links:

    Note: To help keep your repo as clean as possible, this is the only issue that we're going to open and comment on. Feel free to delete the comments that are made as you resolve them, if you want to keep this issue short and tidy.

    opened by dependencies[bot] 9
  • PHP required intl extension installed

    PHP required intl extension installed

    Describe the bug

    Since https://github.com/Cecilapp/Cecil/pull/1463, running without php-intl installed will generate an error on build :+1:

    [ERROR] The Symfony\Component\Intl\Locale\Locale::setDefault() is not implemented. Please install the "intl" extension for full localization capabilities.                                         
    

    This doesn't seem to be installed by default with PHP7.4 (Ubuntu 20.04), so probably needs mentioning in the system requirements.

    (it's also complicated by the fact that that the error message doesn't make it clear if it's talking about a PHP extension or a Symfony one)

    To reproduce

    No response

    Expected behavior

    Ideally, a clearer error message and guidance in the quick start guide.

    Version

    7.5.0

    Operating System

    Ubuntu 20.04

    Relevant log output

    No response

    bug 
    opened by ahnlak 7
  • Template changes during watch

    Template changes during watch

    hi everyone, i'm really enjoying the cecil + netlifycms stack right now but i feel something is messing around ie. when i cecil serve it livereloads every assets except templates (twig files) and i have to cecil build again to see applied changes..

    i wanted to know if i can find a way to fix this ?

    bug 
    opened by maxperei 6
  • cecil serve is not working as expected

    cecil serve is not working as expected

    Describe the bug

    The serve command is not working as expected. The log isn't showing any error except some deprecation warnings. For the test, I was running php (8.1) - no container.

    To reproduce

    1. cecil new:site
    2. Give a title, rest confirm with enter
    3. cecil serve
    4. Open your browser on localhost:8000 you'll get a http status code 500 in the dev tools

    Expected behavior

    Expecting a running development server with hot reload etc.

    Version

    7.28.1

    Operating System

    Linux (openSUSE)

    Relevant log output

    cecil serve -vvv 
    
    Box Requirements Checker
    ========================
    
    > Using PHP 8.1.13
    > PHP is using the following php.ini file:
      /etc/php8/cli/php.ini
    
    > Checking Box requirements:
      โœ” The application requires the version "^7.4||^8.0||^8.1" or greater.
      โœ” The application requires the extension "fileinfo".
      โœ” The package "intervention/image" requires the extension "fileinfo".
      โœ” The package "spatie/image-optimizer" requires the extension "fileinfo".
      โœ” The application requires the extension "gd".
      โœ” The package "matthiasmullie/minify" requires the extension "pcre".
      โœ” The package "matthiasmullie/path-converter" requires the extension "pcre".
      โœ” The package "myclabs/php-enum" requires the extension "json".
      โœ” The package "scrivo/highlight.php" requires the extension "json".
      โœ” The package "scssphp/scssphp" requires the extension "json".
      โœ” The package "nikic/php-parser" requires the extension "tokenizer".
      โœ” The package "voku/html-min" requires the extension "dom".
      โœ” The package "voku/simple_html_dom" requires the extension "dom".
      โœ” The package "voku/simple_html_dom" requires the extension "libxml".
      โœ” The package "voku/simple_html_dom" requires the extension "simplexml".
      
                                                                                                                      
     [OK] Your system is ready to run the application.                                                                
                                                                                                                      
    
    Process: /usr/bin/php /home/benjamin/.local/bin/cecil build --config /home/benjamin/dev/demo/demo/config.yml -vvv
    
    Box Requirements Checker
    ========================
    
    > Using PHP 8.1.13
    > PHP is using the following php.ini file:
      /etc/php8/cli/php.ini
    
    > Checking Box requirements:
      โœ” The application requires the version "^7.4||^8.0||^8.1" or greater.
      โœ” The application requires the extension "fileinfo".
      โœ” The package "intervention/image" requires the extension "fileinfo".
      โœ” The package "spatie/image-optimizer" requires the extension "fileinfo".
      โœ” The application requires the extension "gd".
      โœ” The package "matthiasmullie/minify" requires the extension "pcre".
      โœ” The package "matthiasmullie/path-converter" requires the extension "pcre".
      โœ” The package "myclabs/php-enum" requires the extension "json".
      โœ” The package "scrivo/highlight.php" requires the extension "json".
      โœ” The package "scssphp/scssphp" requires the extension "json".
      โœ” The package "nikic/php-parser" requires the extension "tokenizer".
      โœ” The package "voku/html-min" requires the extension "dom".
      โœ” The package "voku/simple_html_dom" requires the extension "dom".
      โœ” The package "voku/simple_html_dom" requires the extension "libxml".
      โœ” The package "voku/simple_html_dom" requires the extension "simplexml".
      
                                                                                                                      
     [OK] Your system is ready to run the application.                                                                
                                                                                                                      
    
    Building website...
    Path: /home/benjamin/dev/demo/demo
    Config: /home/benjamin/dev/demo/demo/config.yml
    Cache: /home/benjamin/dev/demo/demo/.cache
    1. Loading pages
    [9/9] Files loaded
    2. Creating pages
    [1/9] Page "about" created
    [2/9] Page "blog/post-1" created
    [3/9] Page "blog/post-2" created
    [4/9] Page "blog/post-3" created
    [5/9] Page "blog/post-4" created
    [6/9] Page "blog/post-5" created
    [7/9] Page "blog/post-6" created
    [8/9] Page "index" created
    [9/9] Page "markdown" created
    3. Converting pages
    [1/9] Page "about" converted
    [2/9] Page "blog/post-1" converted
    [3/9] Page "blog/post-2" converted
    [4/9] Page "blog/post-3" converted
    [5/9] Page "blog/post-4" converted
    [6/9] Page "blog/post-5" converted
    [7/9] Page "blog/post-6" converted
    [8/9] Page "index" converted
    Asset "/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    [9/9] Page "markdown" converted
    4. Creating taxonomies
    [1/2] Vocabularies collection created
    [2/2] Terms collection created
    5. Generating pages
    [1/9] 5 "DefaultPages" pages generated
    [2/9] 0 "VirtualPages" pages generated
    [3/9] 0 "ExternalBody" pages generated
    [4/9] 7 "Section" pages generated
    [5/9] 3 "Taxonomy" pages generated
    [6/9] 1 "Homepage" pages generated
    [7/9] 4 "Pagination" pages generated
    [8/9] 2 "Alias" pages generated
    [9/9] 0 "Redirect" pages generated
    6. Creating menus
    [1/4] Page menu entry "main > about" created (weight: 999)
    [2/4] Page menu entry "main > index" created (weight: 0)
    [3/4] Page menu entry "main > markdown" created (weight: 500)
    [4/4] Page menu entry "main > blog" created (weight: 100)
    7. Copying static
    [1/1] Files copied
    8. Rendering pages
    Translation loader for format "yaml" found
    Translation loader for format "mo" found
    Asset "/assets/thumbnails/32/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/57/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/76/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/96/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/128/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/192/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/228/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/196/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/120/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/152/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/180/favicon.c1af8a129a0cde81f9b94ffbf452e10b.png" saved
    Asset "/assets/thumbnails/1200/cecil-card.c0bc77e003455fafeb15f3072e857d85.png" saved
    [ 1/22] Page "about" rendered with template(s) "cecil:_default/page.html.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [ 2/22] Page "blog/post-1" rendered with template(s) "site:blog/page.html.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [ 3/22] Page "blog/post-2" rendered with template(s) "site:blog/page.html.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [ 4/22] Page "blog/post-3" rendered with template(s) "site:blog/page.html.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [ 5/22] Page "blog/post-4" rendered with template(s) "site:blog/page.html.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [ 6/22] Page "blog/post-5" rendered with template(s) "site:blog/page.html.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [ 7/22] Page "blog/post-6" rendered with template(s) "site:blog/page.html.twig"
    [ 8/22] Page "index" rendered with template(s) "site:index.html.twig, cecil:_default/list.atom.twig"
    [ 9/22] Page "markdown" rendered with template(s) "cecil:_default/page.html.twig"
    [10/22] Page "404" rendered with template(s) "cecil:404.html.twig"
    [11/22] Page "robots" rendered with template(s) "cecil:robots.txt.twig"
    [12/22] Page "sitemap" rendered with template(s) "cecil:sitemap.xml.twig"
    [13/22] Page "xsl/atom" rendered with template(s) "cecil:feed.xsl.twig"
    [14/22] Page "xsl/rss" rendered with template(s) "cecil:feed.xsl.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [15/22] Page "blog" rendered with template(s) "site:blog/list.html.twig, cecil:_default/list.atom.twig"
    [16/22] Page "tags/tag-1" rendered with template(s) "cecil:_default/list.html.twig, cecil:_default/list.atom.twig"
    [17/22] Page "tags/tag-2" rendered with template(s) "cecil:_default/list.html.twig, cecil:_default/list.atom.twig"
    [18/22] Page "tags" rendered with template(s) "cecil:_default/vocabulary.html.twig"
    [19/22] Page "page/2" rendered with template(s) "site:index.html.twig"
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    Since symfony/intl 5.3: Polyfills are deprecated, try running "composer require symfony/polyfill-intl-icu ^1.21" instead.
    [20/22] Page "blog/page/2" rendered with template(s) "site:blog/list.html.twig"
    [21/22] Page "page/1" rendered with template(s) "cecil:redirect.html.twig"
    [22/22] Page "blog/page/1" rendered with template(s) "cecil:redirect.html.twig"
    9. Saving pages
    [ 1/22] File(s) "_site/about/index.html" saved
    [ 2/22] File(s) "_site/blog/post-1/index.html" saved
    [ 3/22] File(s) "_site/blog/post-2/index.html" saved
    [ 4/22] File(s) "_site/blog/post-3/index.html" saved
    [ 5/22] File(s) "_site/blog/post-4/index.html" saved
    [ 6/22] File(s) "_site/blog/post-5/index.html" saved
    [ 7/22] File(s) "_site/blog/post-6/index.html" saved
    [ 8/22] File(s) "_site/index.html, _site/atom.xml" saved
    [ 9/22] File(s) "_site/markdown/index.html" saved
    [10/22] File(s) "_site/404.html" saved
    [11/22] File(s) "_site/robots.txt" saved
    [12/22] File(s) "_site/sitemap.xml" saved
    [13/22] File(s) "_site/xsl/atom.xsl" saved
    [14/22] File(s) "_site/xsl/rss.xsl" saved
    [15/22] File(s) "_site/blog/index.html, _site/blog/atom.xml" saved
    [16/22] File(s) "_site/tags/tag-1/index.html, _site/tags/tag-1/atom.xml" saved
    [17/22] File(s) "_site/tags/tag-2/index.html, _site/tags/tag-2/atom.xml" saved
    [18/22] File(s) "_site/tags/index.html" saved
    [19/22] File(s) "_site/page/2/index.html" saved
    [20/22] File(s) "_site/blog/page/2/index.html" saved
    [21/22] File(s) "_site/page/1/index.html" saved
    [22/22] File(s) "_site/blog/page/1/index.html" saved
    Built in 0.16 s (11.97 mb)
    Done! ๐ŸŽ‰
    Starting server (localhost:8000)...
    
    bug 
    opened by benjaminhirsch 4
  • Best practice for a blog with images.

    Best practice for a blog with images.

    Hi, I'd like to manage a blog with a main image for every post. To avoid polluting the 'static' directory with all the images for the posts, I understand that I could have a subfolder for each post and inside a file index.md and the corresponding main image:

    Screen Shot 2020-06-26 at 21 47 08

    Inside my index.md:

    ---
    title: 'This is a sad post.'
    date: '2020-06-22'
    draft: false
    tags: ["sad"]
    categories: ["Social"]
    excerpt: Introduction to a sad post.
    image: 'main_image.jpg'
    ---
    This is the markdown content of the sad post.
    

    Then, inside the template for the page, I should have something like:

    {{ asset(page.image) }}	
    

    But unfortunately this is not working, the file is not found. Is there a better way to do that ? Thanks a lot, Cecil rocks!

    question 
    opened by thomascenni 4
  • Tags are not managed.

    Tags are not managed.

    Following the Quick Start documentation, create a new post and add a tag to it as explained here: https://cecil.app/documentation/content/#front-matter

    To Reproduce

    macbook:Desktop thomas$ ./cecil.phar new:site cecil-test
    Creating a new website...
    Done!
    macbook:Desktop thomas$ cd cecil-test/
    macbook:cecil-test thomas$ ls
    config.yml	content		layouts		static
    macbook:cecil-test thomas$ ../cecil.phar new:page blog/my-first-post.md
    File "content/blog/my-first-post.md" created.
    

    Then just add some tags to the post.

    cat content/blog/my-first-post.md
    ---
    title: 'my-first-post'
    date: '2020-06-21'
    draft: true
    tags: [tag 1, tag 2]
    ---
    

    Serve the application with:

    ../cecil.phar serve --drafts

    And you get this error:

    [ERROR] Template "cecil:_default/list.html.twig" line 19 (for page "tags/tag-1"): Neither the property "all" nor one of the methods "all()", "getall()"/"isall()"/"hasall()" or "__call()" exist and have public access in class "Cecil\Collection\Taxonomy\Term".

    Screen Shot 2020-06-21 at 15 13 51

    bug 
    opened by thomascenni 4
  • Bump symfony/property-access from 4.4.3 to 4.4.4

    Bump symfony/property-access from 4.4.3 to 4.4.4

    Bumps symfony/property-access from 4.4.3 to 4.4.4.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 4
  • Prevent build errors due to incompatible cache content after update

    Prevent build errors due to incompatible cache content after update

    Related to a problem?

    Yesterday I updated Cecil from version 7.1.2 to the latest 7.11.1 and saw my build fail with the following error message:

    Building website...
    
     [ERROR] Template "/Users/paik/Projects/cecil/resources/layouts/partials/metatags.html.twig:114" (page: another-page):
             Neither the property "missing" nor one of the methods "missing()", "getmissing()"/"ismissing()"/"hasmissing()"
             or "__call()" exist and have public access in class "Cecil\Assets\Asset".
    

    I believe this to have been indirectly caused by the changes in #1490.

    The older version of Cecil populated the cache with asset data that has no 'missing' key. The newer Cecil version reads from the cache, expecting the key to exist, causing the error.

    A simple deletion has fixed the problem for me, but I spent some time chasing that problem down.

    Describe the solution you'd like

    Adding the current Cecil version to cache keys could be a simple and pragmatic solution to this kind of problem. Cache entries would be isolated between version, preventing any such incompatibilities.

    I have not looked into the Cecil code base too deeply, but this change could potentially be implemented inside the \Cecil\Assets\Cache class.

    Describe alternatives you've considered

    No response

    Additional context

    I would gladly attempt to provide an implementation if you believe this to be a good solution. Also, I'd be keen to hear of any other ideas you might have.

    enhancement 
    opened by hype09 3
  • Call to a member function getConfig() on null

    Call to a member function getConfig() on null

    Describe the bug

    Hello,

    When I try to add a new page, I get the following error:

    PHP Fatal error:  Uncaught Error: Call to a member function getConfig() on null in phar:///var/www/cecil.test/cecil.phar/src/Command/NewPage.php:70
    Stack trace:
    #0 phar:///var/www/cecil.test/cecil.phar/vendor/symfony/console/Command/Command.php(298): Cecil\Command\NewPage->execute()
    

    To reproduce

    1. Create a new website
    php cecil.phar new:site
    Creating a new website...
    - title: Test
    - baseline (~ 20 characters): Hello!
    - baseurl (e.g.: https://cecil.app/): https://www.example.com
    - description (~ 250 characters): 
    Done!
    
    1. Create a new page:
    php cecil.phar new:page test.md
    

    Expected behavior

    A new page generated.

    Version

    6.2.5

    Operating System

    Ubuntu

    Relevant log output

    PHP Fatal error:  Uncaught Error: Call to a member function getConfig() on null in phar:///var/www/cecil/cecil.phar/src/Command/NewPage.php:70
    Stack trace:
    #0 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Command/Command.php(298): Cecil\Command\NewPage->execute()
    #1 phar:///var/www/cecil/cecil.phar/src/Command/AbstractCommand.php(116): Symfony\Component\Console\Command\Command->run()
    #2 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Application.php(1028): Cecil\Command\AbstractCommand->run()
    #3 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Application.php(299): Symfony\Component\Console\Application->doRunCommand()
    #4 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
    #5 phar:///var/www/cecil/cecil.phar/bin/cecil(82): Symfony\Component\Console\Application->run()
    #6 /var/www/cecil/cecil.phar(14): require('...')
    #7 {main}
      thrown in phar:///var/www/cecil/cecil.phar/src/Command/NewPage.php on line 70
    
    Fatal error: Uncaught Error: Call to a member function getConfig() on null in phar:///var/www/cecil/cecil.phar/src/Command/NewPage.php:70
    Stack trace:
    #0 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Command/Command.php(298): Cecil\Command\NewPage->execute()
    #1 phar:///var/www/cecil/cecil.phar/src/Command/AbstractCommand.php(116): Symfony\Component\Console\Command\Command->run()
    #2 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Application.php(1028): Cecil\Command\AbstractCommand->run()
    #3 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Application.php(299): Symfony\Component\Console\Application->doRunCommand()
    #4 phar:///var/www/cecil/cecil.phar/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
    #5 phar:///var/www/cecil/cecil.phar/bin/cecil(82): Symfony\Component\Console\Application->run()
    #6 /var/www/cecil/cecil.phar(14): require('...')
    #7 {main}
      thrown in phar:///var/www/cecil/cecil.phar/src/Command/NewPage.php on line 70
    
    bug 
    opened by magentix 3
  • Deprecated on PHP 8.1

    Deprecated on PHP 8.1

    Describe the bug

    Deprecated: Return type of _HumbugBox87c495005ea2\KevinGH\RequirementChecker\RequirementCollection::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///cecil.phar/.box/src/RequirementCollection.php on line 15
    
    Deprecated: Return type of _HumbugBox87c495005ea2\KevinGH\RequirementChecker\RequirementCollection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///cecil.phar/.box/src/RequirementCollection.php on line 19
    

    To reproduce

    • PHP 8.1
    • Cecil 5.79.7
    docker run -it --rm php:8.1-cli bash -c "curl -LO https://cecil.app/cecil.phar && chmod +x cecil.phar && ./cecil.phar new:site"
    

    Same on macOS with PHP 8.1.1 (cli) (built: Dec 17 2021 22:38:05) (NTS)

    Expected behavior

    No Deprecated messages

    Version

    5.79.7

    Operating System

    No response

    Relevant log output

    No response

    bug 
    opened by ensimo 3
  • Import remote JSON data

    Import remote JSON data

    Related to a problem?

    It doesn't seem like a big deal, but maybe it would be better if this was realized? I just want to fetch JSON data from outside (remotely), and it looks like Cecil doesn't exist yet? #cmiiw

    Describe the solution you'd like

    I found this plugin on Jekyll, and that's pretty much what I wanted๐Ÿ˜€ brockfanning/jekyll-get-json

    Describe alternatives you've considered

    No response

    Additional context

    Thanks for all the help๐Ÿ˜„

    enhancement question 
    opened by sooluh 3
Releases(7.29.0)
Owner
Cecil
Your content driven static site generator.
Cecil
Image Optimize Command - Easily optimize images using WP CLI

Image Optimize Command is a WP CLI wrapper for spatie/image-optimizer which optimize gif, jpeg, jpg, png, svg, webp images by running them through a chain of various image optimization tools.

Typist Tech Limited 157 Dec 13, 2022
A handy set of Stringable mixins for CLI text.

Laravel Colorize A mixin for Laravel's Stringable to easily apply colors and styles to CLI text. Installation You can install the package via Composer

James Brooks 47 Oct 30, 2022
โ˜„๏ธ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server

โ˜„๏ธ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP ๅ‘ฝไปค่กŒๆจกๅผๅผ€ๅ‘ๆก†ๆžถ๏ผŒๆ”ฏๆŒ Swooleใ€WorkerManใ€FPMใ€CLI-Server

Mix PHP 1.8k Jan 3, 2023
unofficial cli built using php which can be used to upload and download files from anonfiles.com

Anonfiles CLI Table of Contents Introduction Features Screenshots Installation Contributing License Introduction Anon Files CLI can upload and downloa

Albin Varghese 8 Nov 21, 2022
A CLI program that helps you check your endpoints by requesting the given servers and send a report message in any supported channel like Telegram

API Monitor A CLI program that help you check your endpoints by requesting the given servers and send a report message in any supported channel ( Tele

Hussein Feras 51 Aug 21, 2022
A Magento 2 module that adds a CLI bin/magento cms:dump to dump all CMS pages and CMS blocks to a folder var/cms-output.

A Magento 2 module that adds a CLI bin/magento cms:dump to dump all CMS pages and CMS blocks to a folder var/cms-output.

Yireo 16 Dec 16, 2022
A Cli tool to save you time, and gives you the power to scaffold all of your models,controllers,commands

A Cli tool to save you time, and gives you the power to scaffold all of your models,controllers,commands... at once Installation You can install the p

Coderflex 16 Nov 11, 2022
Simple and customizable console log output for CLI apps.

Console Pretty Print Simple and customizable console log output for CLI apps. Highlights Simple installation (Instalaรงรฃo simples) Very easy to customi

William Alvares 3 Aug 1, 2022
๐Ÿ–ฅ Build beautiful PHP CLI menus. Simple yet Powerful. Expressive DSL.

Contents Minimum Requirements Installation Upgrading Usage Quick Setup Examples API Appearance Menu Title Colour Width Padding Margin Borders Exit But

PHP School 1.9k Dec 28, 2022
An Elegant CLI Library for PHP

Commando An Elegant PHP CLI Library Commando is a PHP command line interface library that beautifies and simplifies writing PHP scripts intended for c

Nate Good 793 Dec 25, 2022
Cilex a lightweight framework for creating PHP CLI scripts inspired by Silex

Cilex, a simple Command Line Interface framework Cilex is a simple command line application framework to develop simple tools based on Symfony2 compon

null 624 Dec 6, 2022
PHP Version Manager for the CLI on Windows

This package has a much more niche use case than nvm does. When developing on Windows and using the integrated terminal, it's quite difficult to get those terminals to actually listen to PATH changes.

Harry Bayliss 49 Dec 19, 2022
Library for creating CLI commands or applications

Console Motivation: this library purpose is to provide a lighter and more robust API for console commands and/or applications to symfony/console. It c

Thรฉo FIDRY 16 Dec 28, 2022
PHP CLI tool which allows publishing zipped MODX extra to modstore.pro marketplace

MODX Extra Publisher PHP CLI tool which allows publishing zipped MODX extra to modstore.pro marketplace. Installation global? local? To install packag

Ivan Klimchuk 3 Aug 6, 2021
PHP CLI project to get an appointment from https://vacunacovid.catsalut.gencat.ca

covid_vaccine_bcn PHP CLI project to get an appointment from https://citavacunacovid19.catsalut.gencat.cat/Vacunacio_Covid/Vacunacio/VacunacioCovidRes

Gabriel Noรฉ Gonzรกlez 3 Jul 27, 2021
PHP CLI to add latest release notes to a CHANGELOG

changelog-updater A PHP CLI to update a CHANGELOG following the "Keep a Changelog" format with the latest release notes. Want to automate the process

Stefan Zweifel 15 Sep 21, 2022
WP-CLI Trait Package Command

WP-CLI Trait Package Command Generate plugin or php model files e.g. post-type or taxonomy for WP-Trait Package in Develop WordPress Plugin. Installat

Mehrshad Darzi 2 Dec 17, 2021
A CLI starter pack for developing a package with Laravel 5

Laravel PackMe Laravel PackMe is a project starter pack which combine all basic stuff (src, tests) in order to develop a package for Laravel 5.*. It t

Pierre Tondereau 63 Dec 29, 2021