TODO in org-converge-0.0.14 vs TODO in org-converge-0.0.15

- old
+ new

@@ -1,40 +1,47 @@ # -*- mode: org; mode: auto-fill; -*- #+TODO: TODO | DONE CANCELED #+startup: showeverything -* [0/16] 0.1.0 version +* [0/15] 1.0.0 version +Some of these need further work on the Org Ruby parser. + - [ ] Macros can be loaded and applied to the configuration -- [ ] Actually support converging and idempotency (~--runmode=idempotent~) - + Do not do an operation unless it is required - + Abort in case there was a failure in executing the script. - + This would work by using the ~:cache true~ to a block header argument - [ ] Support for ~#+SETUPFILE~ + To load the macros +- [ ] Support converging and idempotency (~--runmode=idempotent~) + + Do not do an operation unless it is required + + Abort in case there was a failure in executing one of the scripts. - [ ] Heuristics for determining which binary to use for running the script - [ ] Display how the run would look like without making changes : org-converge setupfile.org --dry-run -- [ ] Use =:eval= for evaling blocks (off by default) - [ ] Bugfix for when results blocks have only inline examples or images -- [ ] Bugfix for when the result from a ~org-spec~ run has non-zero exit status -- [ ] Bugfixes for spec run -- [ ] Distributed run helpers for the header arguments - Like remote =:dir= for example. +- [ ] Bugfix for when the result from a ~org-spec~ run has non-zero exit status +- [ ] =:eval= + For evaling blocks (off by default) - [ ] =:onerror= aborteverything, restart, runhandler - [ ] =:asserts= - [ ] =:waits:= Wait for other processes to start before starting. The process does not start until the alive signal to the following list of processes succeeds. - [ ] =:awaits:= Wait for other processes to finish before starting. - [ ] =:file= - For storing the output from the evaluation (already done in spec mode)a -- [ ] Can use =:dir= for running a process remotely via ssh - This needs the credentials to be readily available + For storing the output from the evaluation (already done in spec + mode) +- [ ] =:cache true= + Also part of the idempotency checks. +- [ ] =:env= and =#+envfile:= +* [1/1] 0.0.15 + +- [X] Can use =:dir= for running a process remotely via ssh. + This needs the remote credentials to be available. + * [2/2] 0.0.14 All of the following makes it required to track the result from the runs. @@ -119,12 +126,12 @@ : org-converge setupfile.org --showfiles - [X] ~:tangle~ puts the files in the correct path - [X] ~--tangle~ flag - [X] Support a root dir for when not running relative to the directory -* [6/21] Ideas -** TODO Chaining resources with ~#+NAME:~ directives and ~:notify~ argument +* [9/20] Ideas +** TODO Chaining resources with =#+name:= directives and =:notify= argument One idea is to be able to notify resources by naming the code blocks. Example: Here first the td-agent service would try to start, and if it succeeds, then it would execute the script defined in the @@ -141,30 +148,22 @@ #+end_src - Support for ~:before all~ and ~:after all~ added ** TODO Add namespace dynamically to the tasks using an in buffer setting -When including files there can be some potential scoping issues. +There can be some potential scoping issues when using =#+include:= -** TODO Inject macros within the environment variables from a runnable process ** TODO Clarify which ones of the header arguments to implement http://orgmode.org/manual/Specific-header-arguments.html#Specific-header-arguments - -** TODO Use sshkit for running remote processes -** TODO By default, it should use current dir for tangling -** TODO Converging: Only do an operation when it didn't finish - -Hence the name of the project - ** TODO For now we keep the indentation of the code blocks The indentatin of the ~#+begin_src~ should always be at the beginning of the file, not at the indentation level from when the file was written in Org mode. -** TODO We should have a whitelist of languages that can be executed and ignore everything +** TODO We should have a whitelist of languages that can be executed and ignore everything else Under which heuristics or configuration should we decide which will be the binary that should be used to execute the block? Specify with shebang? - For now, unless shebang is specified it will be executed. @@ -181,41 +180,71 @@ ** TODO Adopting the ~#+SETUPFILE~ for loading a config that is done JSON or YAML It seems that there is support for a ~#+SETUPFILE~ -** TODO Something more flexible than macros: +** TODO Something more flexible than macros for templating -One example of syntax that we could use instead of macros: +One example of syntax that we could use instead of macros. +One idea is to use the =:session= argument and different drivers +for languages that are commonly used for the configuration. +This would inject the settings into a =@macros= hash from where +the values can be picked up to be applied at runtime, sort +of like the overrride attributes feature from Chef. #+begin_src yaml :session fluentd: port: 4224 path: here.log #+end_src -But need to +Or also json could be used: -** TODO Choosing a templating language: default for now is mustache +#+begin_src js :session +{ + "fluentd": { + "port": 4224, + "path": "here.log" + } +} +#+end_src +Or even just plain Ruby? + +#+begin_src ruby :session +session = { + "fluentd" => { + "port" => 4224, + "path" => "here.log" + } +} +#+end_src + +** TODO Choosing a templating language + We could implement the macro systems, but it seems that it may not be strong enough for providing with all the cases we may run into. -** TODO Support caching? +** TODO Support =:cache=? + #+begin_src emacs-lisp :cache yes :exports results (random) #+end_src #+RESULTS[db54597aed193d861d01bf92110e10f28f8f40d4]: : 842438499349743708 -** TODO Support :eval ? +** TODO Support =:eval=? #+begin_src sh :eval (print "Really doing this...") echo "Going ahead with operation X!" #+end_src +** DONE By default, it should use current dir for tangling +** DONE Converging: Only do an operation when it didn't finish +Hence the name of the project + ** DONE ~#+NAME:~ could be used in the logger for identifying the process ** DONE Managing dependencies: could be handled with ~#+include~ directives One idea is that it would be useful to compile different manuals that are dependent among each other. @@ -244,9 +273,11 @@ ,#+begin_src converge ,mkdir -p etc/fluentd/config ,#+end_src #+end_src + +** CANCELED Use sshkit for running remote processes ** CANCELED How to set the permissions from the directory from the file that is being tangled when it does not exists? By default, this would be 0644, but we also need to specify the user:group of it so the syntax would have to be: