You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
8b33429 a nice upgrade with all the new features that I refactored and rewrote over the last months
6eb82c2 - allow pushing - add way to list all hooks - add way to remove all scripts from a single hook
aafbac5 - fix the create network functionality - refactor the docker functions into a separate file - fix the problem where network-name option has to be at the beginning of the options
6ea3be5 I should not have exposed this information through the public interface, since I don't know how to implement this feature on linux too and that causes a crash
e8fde0c I updated these configuration keys to be more obvious
c73cbce I was incorrected detecting true, not false
3893819 I was using the wrong way to add text to a config file
8cfbf40 If the config is readonly, don't do any self-update since it can't work in readonly mode
29b3758 Implement a more generic way for tools to registry themselves, letting me use tools from extensions for the first time
911d3b4 Implement a way to directly read json data into models instead of dealing with arrays and use it extensively in the project models
5fcf32b Make a change that will use your current network ip addresses and respect that setup instead of overriding it with 1&1 servers
d2f4a7b Make the container use an instantiator callable to make objects and tell the autowirer to use the containers resolver when doing dependency resolution, lol
4ef6e26 Make this exception a little more flexible on how it describes the exception so i can use it with more scenarios
a8f9d8e Merge branch 'cth/chris-master' into master
8298844 Prevent overwriting the $group variable with another variable for this loop
ccb2925 Refactor things towards the new Text/Table classes which are instance based
cfff7e5 Refactor this code to eliminate the reflection from methods which don't need it and put it together with other reflection that will make debugging and testing this code easier
57c483a Rename BaseConfig to JsonConfig because it's actually a more descriptive name
a353efd a pretty cheap way to handle dealing with setting keys of non-scalar values and stripping them of objects by decomposing them to plain json objects and back again
18a580e a rewrite of the terminal code so it's functioning with "streams" instead of just outputting text raw to the terminal
75d9a8b a simple config() function and use realpath to resolve the path from being relative
bc1769d a simpler and more powerful run script logic
513e344 actually, the autoloader can't throw exceptions, but must just return false
821103a add 127.0.0.1 to this since on big sur 0.0.0.0 has stopped working like it did before
7c62c1a add a --config option which dumps the nginx config to the terminal
fcc3654 add a basic method for using scripts which are installed into each project (this actually works too)
2ddaad1 add a better way to print debugging information
bc74e46 add a new tool which can git pull all projects in the main project directory, makes updating lots of projects easier
01f85ef add a nicer way to acquire the groups as a csv string rather than letting everybody write their own logic for every situation
92a4aa3 add a package configuration for extension files (initial code)
94919ba add a passthru command to the container object
4297b8f add a php version check to ensure at least 7.2 is being used
583d488 add a run function here, because I'm migrating from allowing docker to run arbitrary containers
9b3e290 add a shorthand syntax for dependency scripts to just provide an array of strings to enable as true instead of mandating an object key/value map of each script
d410201 add a simple function to check has the group or not
c27ba87 add a way to find a container name by a set of filters
4730545 add a way to fliter the run script list by group
22738d1 add a way to manipulate the resolv.conf file directly
37f2a06 add a way to match an input string against the type of exception
81df052 add a way to obtain the dependencies from a project config
f31575c add a way to run containers with labels and retrieve them afterwards
a4e734c add a way to run the proxy alongside the docker-config-gen project, which is now the new setup of how it generates it's config files
ed915c5 add a way to show the status of the proxy and all its configured containers and relevent data
305daa7 add a way to tag debugging information with a counter to show which output belongs to which exec statement if they happen to be nested
5a60822 add an address object, which can take care of resolving addresses and extracting information about them during a ping
2793fc7 add an array collection interface and implementation, I want to use it to replace the older IteratorIterator pattern that I didn't like so much with it
46d07da add an autowiring di container to help with object construction
7b52b43 add an example of what the projects structure should look like when upgraded to v3 so I can continue to work on this later
4dccb8f add an exception when the tool can't be decoded from the input string
4bca51c add the tools path to the container config values, I think this should replace what I did with the config.paths.tools, which turned out to be a mistake
69de55d add these classes to handle reading external project configurations
b26c4a8 add these modifications to the entrypoint package cause it needs to return the test to run after installation
94c653b add these new configuration objects to take care of dns and ip config data
b296421 add these useful methods to list projects by various filters
9937e08 add this annotation to prevent warnings for php 7.3
26f6dc4 add this exception, which mimics a comment on lower versions of php
587cb8c adjusted how the inspect function accepts filters, made them mandatory now cause really, I was always filtering and there was never a case where I wasn't
7b2271a allow Address objects to be cast to strings, which renders them, gets rid of the ugly ui/Ping object
7f7b1ac allow a common way for scripts to know what architecture they are running on
76f2dae allow a double-dash command to act like an option but really is a command, this is useful when having default commands which cause the command line processor to confuse a parameter with a command
b364981 allow a filename and readonly status to be given
c3609d4 allow dependencies to start an array of services instead of just one
ba7bd34 allow empty/null renderer and column mapping so you can know which column is being processed (would allow callbacks to be more intelligent if they knew what field they are rendering)
b88bbaa allow extra command line parameters to be inserted into the exec/passthru statements
80fbc16 allow retrieving the name of the configuration file if present
3dd0507 allow run --list --script=start type filtering
aae04b7 allow simple ways to know the operating system name
18355cb allow sudo to take a custom command and allow sudo to be bypassed when you're root
93a5f1a allow support for the __call interface in the autowiring as a fallback option
20ed74f allow the add-project to clone repositories when it doesn't find the project installed where it needs to be and a repo url is given
c6feeab allow the cli to return the exit code in a more standardised way
baa8bd9 allow the configuration to set a device to use for the dns, this might be a mac only command
6108d39 allow the container debugging to be turned on or off using the --debug=container flag
7b2cfc4 allow the container to instantiate classes or delegate to an external callable (this suits the case for the Autowire class, without directly linking the two classes together)
ac6dd30 allow the display of sequences of commands and a little table footnote to explain it
7349f8e allow the dns upstreams to be configured or default to better linux settings
be6ff77 allow the docker object to return what exit code docker exec commands returned
bc1e8cc allow the extraArgs param to be null, resulting in a no-op
458ec77 allow the filename to be updated when writing a new SystemConfig to a new file
960d026 allow the group parameter to be null, it'll default to empty group array
0750091 allow the logs functionality to support a --since parameter
493e94f allow the network name for the containers to be customised from the command line
db5546a allow the project path to be omitted because it can just use the current working directory
4b18073 allow the proxy to output the names of the networks it's listening on
17163aa allow the proxy tool to output the networks when using --domains
1a201b6 allow the rendering of arrays and objects, but with some caveats but callback functionality which lets the user decide how to render the data
2e7b27e allow the return of the foreground containers exit code
de4be1e allow the run tool to support passing command line arguments to each script it runs
fb85f59 allow the silence channel method to return from the callback information that might be useful
926907c allow these configurations to be constructed by path name, hiding more internal details which were previously exposed publicly
2ea766c allow this project variable to be used from the exception object
f2e42fa allow to find out whether the configuration is readonly or not
68759e0 allow token replacements in the common errors
590c9d8 allow tool methods to use named arguments, reduces boilerplate code
e9ac6c8 allow ways to update the tools and projects location, also add help to this tool
265d618 allow writing to the stderr directory and change the name of the channels write method to process to stop it from being confusing when you write to it and nothing happens
6c936fe always add a newline at the end of the text
c6ab680 change to use config() instead of container('config.xxx')
d3d4a5d change to use the new docker exec/passthru methods, since it was determined that the docker object should remain low level and the other docker objects can provide the customised functionality on a scope level
72dbbd4 change to using ProjectGroupModel instead of a raw string, and assorted cleanups
21b372b cleanup old shell garbage code, we don't need it anymore
532e158 cleanup some internal logic details and hide them inside the project service and model instead of exposing them in the run tool
b75f9df cleanup the --version command, I realised that actually, I don't want the entrypoint to have tool commands after all, it makes everything messy
e5d3757 commit a change to allow the user to safely include TLS certs into the project so it can auto-include them
cd1fd01 correctly filter based on information passed to the function
62c14bb correctly filter the projects by script and change the return type to the ProjectListModel
6779cee correctly remove projects from the configuration
c8b309c create a ToolException parent class and move all other Tool exceptions under it and then use it to catch the instances where the exception is thrown and handle it more gracefully
aa6e6ee create a basic tool for adding project groups and projects themselves to your configuration
cbc476d create a better way to way to render formatted elements of text
0808ea4 create a docker image object to be able to build docker images programatically
fc4fe69 create a function to resetUpstreams when dns is refreshed and also started
a3350e9 create a git service for interacting with a projects git repository
fac966a create a new aws command and refactor the aws-creds to use it
b600729 create a way to filter out unwanted information from the terminal
f3df8a4 create the first version of the project service
0b69ee0 customise error message when project exists already
eb2ff61 customise the exception for docker being missing or not
88d0852 delete all these distro specific objects because they are defunct now
0195061 fix a bug where I was outputting everything to the stderr, even the normal printed output
e998b3a fix a bug where a multi-part option would not be matched or reformatted correctly, so it wouldn't autowire correctly
5d3fa84 fix a bug where if the path ends with /, it won't be able to test successfully
c5d647d fix a bug where if the table was empty, it'd throw errors from dealing with strings and not arrays, so the solution was to add an empty "no-op" array, therefore always making sure there is at least two rows (including the table headers)
2f5d88e fix a bug where if you call addUpstream multiple times, it will create multiple lines with the same data in it
4ca4190 fix a bug where isOptional is a function and add the ability to resolve interfaces to class implementations and instantiate them
d9ff032 fix a bug where it was imploding with a string instead of an array
36081f4 fix a bug where it was mangling input data for anonymous args
6e4e88b fix a bug where it was not properly detecting the response from the handler and sending invalid data to the print command
46e656f fix a bug where it was passing in parameters that are not used anymore
de9d86c fix a bug where it would attempt to use an array index that doesn't exist
5a8e08a fix a bug where it would throw an exception but that would mean all tools would need to catch and handle it, better dying directly
8e0ae53 fix a bug where passthru output was being output buffered, making it practically useless
169a213 fix a bug where setFilename could fix broken filenames but anything it fixed was ignored subsequently
96677cb fix a bug where the domains would not show correctly because the string needs trimming first
3bef996 fix a bug where the filter was wrong and caused the proxy command to fail
9f6d47c fix a bug where the wrong variable was used
dc7f9d3 fix a bug where values used in a loop were being incorrectly overridden causing other services afterwards to not run correctly
044b7c2 fix a bug working with the project group model
ec88996 fix a mistake where the wrong method was used, causing infinite loop
a856dd4 fix a problem calling depedencies because it was getting the project and group parameters mixed up
c3bc31c fix a problem when tools return null, they cause an exception
6732092 fix a problem where if the file doesnt exist, it won't crash because of trying to call is_file with a boolean
d176e21 fix a problem with the getToolsPath method
794f33d fix a problem writing the tools path, it should be double quotes
3dbf2c3 fix a small issue ben reported where if you don't supply an arguments, it appears to show you an error message when no error has occurred. Thanks!
a6b3178 fix the passthru debugging output not outputting the command
4e32bb1 fix the problem where if you kill the docker dns server, your computer can't resolve dns anymore by appending the router dns entries to the end of the system dns list, meaning it'll fallback to them when the docker one isn't available
54104c4 fix the proxy tool able to attach to existing networks
27612cc give the option for not-caching the docker build
0406c25 go back to requiring the path, if there is no system config, it'll default to the one in the project folder, which will not be correct and it'll break
c1e86a2 handle better when the container is not running
820ef01 handle missing command parameters more gracefully by outputting help the user can see rather than just a mindless exception which is really rough
e59626a handle project configuration upgrade exceptions more gracefully
26714bd if composer.json and package.json are both detected, default to composer type
0ea6bdc if docker inspect doesn't return exit code 0, consider this a failure and throw exception
214e176 if double-dash is found in the command line, stop processing anonymous arguments and drop out, double-dash is a special bash command line escape sequence
45a7067 if inspecting a container returns an empty result, it should only default if the result is not a valid array, which is ok to return, it means there was no results to the query
6999cd8 if the proxy is already running, don't run it again
6283b21 if you have no projects setup, it'll crash, this small change means it'll show no projects instead
c465f42 if you try to restart a dead container, make it so it restarts it
62e846e implement Docker as DockerService, a singleton service instead of creating instances of the same thing which does the same thing no matter if you create 1 or 100 of them, better performance
9192da6 implement a --skip-update flag for situations where you have no internet
ab6efd1 implement a better way to detect the cpu platform
e041c07 implement a cleaner way to enable debugging
cb20740 implement a constructor to ensure the configuration is correct
e4b8db3 implement a proper contract and abstract class instead of just using standard project as a base class, which is not very pure oop of me :)
c93757e implement a slightly better way to run commands, starting with named commands and default commands when nothing was found, rather than the other way around
55f38fc implement a way (unused right now) to customise the colour palette
4c0c7b7 implement a way to auto-detect the project type based off what files are inside the project
813a094 implement a way to stop and delete a container
8e0b544 implement a way to update and list extensions
5696c0f implement a way to upgrade to config version 3
a660ae6 implement a way to use the default.ddt-system.json file as a way to get defaults, I want to replace all the bootstrap defaults with this method
423a888 improve the base tool class so it can abstract how to respond to tool output and how to customise how to react when the default tool action is called
66d6090 improve the config upgrade logic to be more universal
0dada80 improve the error output when the port is already used by something
50a5da2 improve the functionality of this and fix the remove network feature, it was not working correctly
fda36e9 improve the logic of how to write new files, the old one had a bug where the filename was being checked for existence even when you knew the file did not exist (thats why you are writing it)
bf36d99 improve the self-update tool so running it now will actually work in a nicer way without the need for that doubleRun mutex thing, which was pretty ugly
e2592bd improve these exception classes to be more consistent
a499361 in order to support more complex filtering, I just reverted to using the filter in it's entirety rather than play funny games with it
35420d5 make --debug a standard feature in all tools
e68579e make a better way to debug by using parameters to insert into a string without pre-formatting rather than just a complete string which gets colourised and played about with, means you don't get any corrupted output when something in your string just happens to look like a template parameter
cbd2672 make a cleaner and clearer way to filter project lists
710d30d make a cleaner way to execute scripts and their dependencies and add a tool to explain what each script run would execute
2aff0db make a fix so ping always uses decimal instead of locale dependent numeric separator
24e638e make a more flexible distro map instead of a fixed piece of code
954cdce make a small change to account for difference between using exec and the new proc_open method that caused some commands to behave slightly differently
96def70 make a way to know if a found container is running or exited
cf90ed3 make an aws creds too for wrapping up aws cli commands wiht the right env vars
9421cd0 make change that allow for the tool to be used without installation, if it's specified on the path
baccbf9 make consistent with the ddt dns config command
6e2fe32 make everything a tool, it simplifies how to run the code
df1cd41 make initDataStore abstract, cause an empty default function is lame
11d7f30 make it easier to detect when docker is not running
c6c58e9 make it possible for running a script on every project in an entire group at once, without specifying a single project
93bf2d8 make official the ability for every tool to create an instance of another tool for use in subrequests or similar
6538d59 make some improvements to the list model where it would have the right functionality in the right layer of the class heirarchy
f453a71 move all rendering of text into the cli, update how the text renderer gets colours and start to remodel it as an object and not a namespace
6ee13a1 move all the code for these tools into the new objects
38114b0 move all the code from these tools into the new tool objects, even if the code isn't yet usable
6e7e08c move all the shell functionality into the cli, remove all the dead code related to the Text and Shell classes
fbac2af move around the debugging code so I can use it to enable/disable the container logging dynamically
8ed5669 move away from individual functions instead to a metadata concept, it's much easier to manage
701a5f0 move getData into the ModelInterface, cause actually all Models of any type should implement this function
9334cfe move list and search functionality into the ProjectListModel where it's more centralised and obvious, then refactor the other code around it
d42dfcf move network and volume functionality to their individual objects
6a6a3cd move the array iterator stuff into the ListModel class and fix up the array callback functions to work in a generic way
8b2b135 move the autowire object into the base tool, since it's better to use it like this
1354bf8 move the code which instantiates something into a static function of the container, where it can be reused at least
7d68fef move the exception handling into the bootstrap where it's a bit clearer what to do and less spread about the place
37c7dc5 move the place where the special codes are replaced, so you can do in-place column rendering using the new callbacks as you add rows dynamically
6365e2f move the writing of configuration data out of the proxy object and back into the tool, where it makes more sense
0df8a1b refactor some of the models to be cleaner and implement add/remove paths
7cac667 refactor the cli to get rid of junk functionality and streamline what I really need
6b28c7d refactor the colours so they can be used in the plista extension
b6ce9af refactor the passthru method against exec and start to use the parseErrors method to detect exception conditions
5f61f5b refactor the service configurations into their own namespace and update all the code that depends on them
a2a8bf9 refactor the way I interact with the ip and dns tools to work more in the way of capabilities rather than operating systems, which makes things a lot more flexible
237f498 refactor these reflection use cases into the Autowire object
f2efbbe refactor this tool so it's constructor doesn't do any work which can throw unnecessary exceptions
1cb944f rename name -> script cause it makes more sense and also support running some script functionality here because it helps to simplify the interaction with the shell
56f1455 return the systemconfig, even if you don't write to it
7ff79fa revert the tool back to just outputting environment variables
db55637 revert these methods back to the old names, it made more sense
f476284 rewrite how the config tool uses SystemConfig objects because registered commands are like controller functions now, can be dependency injected
6715b53 rewrite the argument processing because I found a bug where when there is no args, you can't automatically assume to run help, but need to run the default command with no parameters, but this caused a logic error. So I had to rewrite it
6add5ac rewrite the autowirer so it'll dependency inject constructors AND functions and then use this to cleanup the entrypoint and base tool class
c637880 rewrite the container setup for linux cause it was wrong in some cases
3d501b7 rewrite the implementation to be much simpler
784f7c4 rewrite the terraform code so it follows the same style as the aws one
cc38305 run whatever hooks need to be executed after pulling
654503c satisfy the IDE by saying ext-json is required
03ccd6d set filename as a variable so it's better controlled instead of letting this be a magic string
a047a99 set the exit code also when you use passthru
ea11eaa split getTool from getToolByClass because it was incorrectly uppercasing the class name depending on the situation
eb46508 split the DockerContainer::instance into three methods for the different use cases, get/foreground/background
b4a2722 split the network from the dnsmasq object so I can control the dns settings without docker being started, it also makes a lot of sense because I only try to use docker when docker is needed
4b4b077 start refactoring the argument code from the cli object
ec5199f start refactoring the channel output code from the CLI object
2c86754 start switching the code to use the ProjectService instead of the ProjectConfig directly cause I'm trying to present access to the Project data through the service layer instead of directly reading and writing to the file, it's safer
1f61d27 start the basis of a php composer wrapper tool
8a5c9cf the old code was really a bit clunky, so this time I decided to make it cleaner
2b9044e the path of the colours.ini file has changed
18749be the quiet flag turns OFF the channel which is enabled by default
36d5ab9 the second parameter of exec is no longer user for obtaining the first line of output, which wasn't really nice functionality in the first place
fae12e3 the terminal should do nothing more than output information, not attempt to process or manipulate it
09e9d0e the timeout for the stream to wait was too low for composer and it would timeout before getting any meaningful output
be5033a the way of building the argument stream here was not quite correct for all circumstances
32fb17b update CLI argument processing to not put a value key when there is none, this sidesteps a confusing scenario where a default "NULL" was being inserted, but what about other times when NULL is actually a valid value?
a0010f4 update Execute object to Shell, change Execute::run to Shell::exec
b78fada update a little bit how the tool outputs text to make it easier
1a6e401 update a little bit the configuration with regard to toplevel and main
4a64bf2 update a reference to 'table' to Table::class
8ada1c2 update all the tool commands and process them correctly from dash to camel case automatically
a03ed77 update the getDefaultFilename to be a static because it's more flexible and it's statically defined anyway, so doesn't change anything, but helps simplify the code a bit
7d772b4 update the method to remove the weird null thing I was doing
cd93472 update the model clases to have a standard Model postfix
f9ee180 update the output for system like statements regarding the tool status
8c42d64 update the profile table to show no in red colour
fb8e0cd update the terraform script with one which builds a local image to use and add an awscli wrapper so this can be used without needing to install it
e5f38b8 update the terraform tool to have the right description
fb69cfc update these messages so they're more useful
afdaae7 when autowiring, allow a function to have default arguments
98f8125 when installing, reset the .ddt-system.json configuration file
49c3736 when listing the tools, if a tool can't be constructed, omit it from the list, but don't crash out
0609929 when the project doesn't exist during the process to add it, we should catch the exception and continue, since this is actually not an error, but expected.
7ba4716 when the top level is empty, it must mean to edit the actual array instead of an element of the array itself
3830441 when using the sudo method, it was not correctly executing when a root user is detected
eb346e4 when you try to use a script which doesn't exist, it should say it doesn't, but inform the user what alternatives there are
833b01c whether or not to colour the output for ease of reading
b679ae5 write code for this function to know whether the dnsmasq container is running or not
edc006e write the basic information needed to start writing a self-updater
bd1c8ad you can't set the type anymore, it's detected automatically
18013eb you can't use the SystemConfig in the constructor, because if you're not installed the system yet, the system config doesn't yet exist. So you have to create it on demand as you need it in the places you need it