Coder Social home page Coder Social logo

architool's Introduction

Hi there ๐Ÿ‘‹

I'm nidup, co-founder and chief product officer at Akeneo during the day โ˜€, Indiehacker during the night ๐ŸŒ–, I love creating products ๐Ÿ˜

  • ๐Ÿ’ฌ I love discussing product, technology, team work, and business
  • ๐Ÿ“ I write articles (from time to time) on my blog
  • ๐Ÿ’ป I love open source, and I enjoy sharing publically what I learn
  • ๐Ÿ“š I like to read, leadership books during the day, Sci-Fi novels during the night
  • ๐ŸŽฎ I like to practice gam jams, you can find my games in my repos or play them on ldjam.com
  • โœจ I'm a bit addicted to emojis, I use them far too much
  • ๐Ÿฆ You can reach me on Twitter @duponico
  • ๐Ÿ— You can reach me on IndieHacker @nidup

architool's People

Contributors

arnolanglade avatar bitone avatar nidup avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

architool's Issues

Interesting libraries

Add symfony dependency injection component

Symfony framework bundle creates a new application that extends Application class from the component. This new class is used to inject the container into all command.

# file Symfony\Bundle\FrameworkBundle\Console\Application

public function get($name)
{
    $this->registerCommands();

    $command = parent::get($name);

    if ($command instanceof ContainerAwareInterface) {
        $command->setContainer($this->kernel->getContainer());
    }

    return $command;
}

The container should be injected into the Application instead of the a Kernel because we don't need it.

Integration tests / Specs

There are lot of missing specs, we need to add them to avoid some "interesting problem". Plus we don't have any integration tests but we do a lot of thing with file system or git, should we introduce them?

TODO:

  • Add missing spec

Command bus

  • Find a library (SimpleBus ou Tatician for instance).
  • Install and configure a CommandBus library

If we use SimpleBus:

  • We should use the Symfony bridge, it provides container extension to registry easily services.
  • Update the command, they should be "named"

Introduce configuration file

  • a step represent a group of actions
  • an action represent a Command you want to handle, we need to specify its class and those arguments.
steps:
    move_akeneo_bundle_component:
        - name: move_folder
          arguments:
            - 'Akeneo/Component'
            - 'Akeneo/Common/Component'
        - name: move_folder
          arguments:
            - 'Akeneo/Component'
            - 'Akeneo/Common/Component'
    create_product_enrichment:
        - name: move_folder
          arguments:
            - 'Pim/Component/Catalog'
            - 'Akeneo/Pim/ProductEnrichment/Domain'
        - name: move_folder
          arguments:
            - 'Pim/Component/Catalog'
            - 'Akeneo/Pim/ProductEnrichment/Domain'

TODO:

  • Rework HexagonalizeCommand, it should be able to read the configuration file to create command and sent them to the bus.
  • Remove Nidup\Architool\Application\Project

Model actions

Actions

Class

Move a class

  • Update the class name space
  • Move the class file on file system (it should create folder recursively if it does not exist)
  • Update all "use"
  • Move the spec (if it exists)
  • Rename name space in all other file: service definition, comment, doc, configuration, behat configuration

Rename a class

  • Update the class name
  • Rename the class file on file system
  • Update all "use"
  • Rename the spec (if it exists)
  • Rename class in all other file: service definition, comment, doc, configuration, behat configuration

File

Move a file

  • Move the file on the file system

Copy file

  • Copy a file to a destination

Use case:

  • I could be difficult to rewrite/split configuration, it could be useful to prepare them and copy the in the PIM.

Folder

Create a new folder

  • Create an empty folder

We only need this action if we decide that the file system does not support recursive folder creation. For instance Symfony component support that:

// mkdir() creates a directory recursively. 
$fs->mkdir('/tmp/photos', 0700);

Move a folder

  • Move all file to the new folder (it should create folder recursively if it does not exist)
  • Move all class to the right name space

if the file is still in the same bundle / folder, it should work for:

  • routing
  • service declaration

Questions

Dependencies

  • autoloading for composer
  • Javascript โ“

Test configuration

Where do we put phpspec/behat/phpunit configuration?

  • at the root of the application?
  • at the root of the "context"

Do we need to manage configuration automatically? For instance those file can be written before the migration and copy/paste at the end of the migration

And Javascript tests? :trollface:

Javascript stuff

โ“

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.