Clk Maybe List
fleetingThose are stuff that I wish I can do in the future but won’t commit for now. Most of them are fleeting note that still need to be precise. And I won’t work on them till I have a need (pragmatisme).
make eval: not accept any command
Or it might be a security flaw where people provide extensions with parameters that call arbitrary commands.
resource based flow
In addition to the classical command flow, I wish I could have a more makefile-ish way of specifying the flow.
A command could indicate the resources it creates and the resources it needs. A resource could be an abstaction of the form.
class Resource:
def exists():
pass
And I could create more than simple file based resources.
Like a port resource.
class PortResource(Resource):
def __init__(self, port):
self.port = port
def exists(self):
return lib.is_port_available(self.port)
Then, I could have a command that is run only if the resource is not fulfilled.
@command(provides=[PortResource(5432)])
def start_postgres():
pass
I could provide a resource command line handler
clk resource set postgre PortResource 5432
clk resource flow postgre
@command(provides=[FileResource("CMakeLists.txt")], needs=[FileResource("somesourceoftruth.yml")])
def generate():
pass
@command(provides=[FileResource("Makefile")], needs=[FileResource("CMakeLists.txt")])
def configure():
pass
@command(needs=[FileResource("Makefile")])
def build():
pass
But then, changing from makefile to ninja would imply to change the resources as well?
auto exclusive extensions
In case several extensions provides the same features