<feed xmlns='http://www.w3.org/2005/Atom'>
<title>awwan/awwan_play_test.go, branch main</title>
<subtitle>Configuration management software, scriptable shell with SSH support.</subtitle>
<id>http://git.kilabit.info/awwan/atom?h=main</id>
<link rel='self' href='http://git.kilabit.info/awwan/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/'/>
<updated>2026-02-15T06:37:31Z</updated>
<entry>
<title>all: fix data race in Play and in integration tests</title>
<updated>2026-02-15T06:37:31Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2026-02-15T06:03:38Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=19d58e9a4c900aec1d63de45a655657c760b1235'/>
<id>urn:sha1:19d58e9a4c900aec1d63de45a655657c760b1235</id>
<content type='text'>
When the Play command executed from the web user interface, there is a
possibility that concurrent requests set the sshConfig field in Awwan
struct at the same time.

In the integration tests for TestAwwan_Play_withLocal and
TestExecLocal_sudo, the data race happens when writing to the same
buffer for stdout and stderr, so we split them into separate buffers.

There is also data race in SSE connection, when handler for ExecuteTail
write to the same buffer with worker keep alive.
This has been fixed on pakakeh.go module.
</content>
</entry>
<entry>
<title>all: add option "$noparse" for magic "#put" command</title>
<updated>2025-10-02T17:15:29Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2025-10-02T17:15:29Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=1003a18b85cffac4b9a92ee787fd8a9bdfca072d'/>
<id>urn:sha1:1003a18b85cffac4b9a92ee787fd8a9bdfca072d</id>
<content type='text'>
The "$noparse" option allow copying file without reading and parsing
the input file.

</content>
</entry>
<entry>
<title>all: replace module "share" with "pakakeh.go"</title>
<updated>2024-03-22T13:12:34Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-03-22T13:11:57Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=62bf073d3d5b55a7e76cf5d9cebefdc9c00cbcee'/>
<id>urn:sha1:62bf073d3d5b55a7e76cf5d9cebefdc9c00cbcee</id>
<content type='text'>
The "share" project has been moved to SourceHut with new name
"pakakeh.go".
</content>
</entry>
<entry>
<title>all: add [context.Context] to Local and Play</title>
<updated>2023-12-21T20:07:52Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-12-21T19:04:11Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=c0d336ca456093b2b7c0b585dbe08f62cbc8ca83'/>
<id>urn:sha1:c0d336ca456093b2b7c0b585dbe08f62cbc8ca83</id>
<content type='text'>
Passing context allow the command Local or Play to be cancelled when
running in asynchronous mode, in this case when awwan run with WUI.
</content>
</entry>
<entry>
<title>all: check script file is a directory</title>
<updated>2023-12-21T17:18:56Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-12-21T17:18:24Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=66a18a789edaa35dfa4446846eeeffabfee0b269'/>
<id>urn:sha1:66a18a789edaa35dfa4446846eeeffabfee0b269</id>
<content type='text'>
This changes we make sure that the passed script path is not a directory
to prevent error when running play with unknown host name.
</content>
</entry>
<entry>
<title>all: refactoring, rename Request to ExecRequest</title>
<updated>2023-11-16T15:59:22Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-11-16T15:59:22Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=4c17c972104e2dc50dbee4138c992f620e7f10bd'/>
<id>urn:sha1:4c17c972104e2dc50dbee4138c992f620e7f10bd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>all: pass Request when creating new SSH client</title>
<updated>2023-10-30T15:00:34Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-30T14:59:17Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=209e9ddd1d49fd6b9384fa0dab27760480fba442'/>
<id>urn:sha1:209e9ddd1d49fd6b9384fa0dab27760480fba442</id>
<content type='text'>
Instead of passing stdout and stderr as "io.Writer", pass the Request,
so we can log using the Request mlog.

While at it, return error from sshClient rmdirAll so the caller can log
the error.
</content>
</entry>
<entry>
<title>all: log all execution into file</title>
<updated>2023-10-30T12:31:06Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-30T12:31:06Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=4726a28cee89f542eb3b0569639069a05d1df6b0'/>
<id>urn:sha1:4726a28cee89f542eb3b0569639069a05d1df6b0</id>
<content type='text'>
For each script execution, a file suffixed with ".log" will be created
in the same directory with the same name as script file.
For example, if the script is path is "a/b/c.aww" then the log file
would named "a/b/c.aww.log".

This is to provides history and audit in the future.
</content>
</entry>
<entry>
<title>all: use "mlog.MultiLogger" to log Request output and error</title>
<updated>2023-10-26T15:24:16Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-26T15:23:58Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=f2b0021604e898e78ad53100057fd7da0b2187a6'/>
<id>urn:sha1:f2b0021604e898e78ad53100057fd7da0b2187a6</id>
<content type='text'>
By using "mlog.MultiLogger" every output or error can be written to
stdout/stderr and additional log writer that can collect both of them,
buffered and returned to the caller.

This changes simplify the HttpResponse to use only single output that
combine both stdout and stderr.
</content>
</entry>
<entry>
<title>all: add magic command "#local"</title>
<updated>2023-10-21T18:32:42Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2023-10-21T18:06:38Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/awwan/commit/?id=fc7cd444e7d637c291a3f9ba9987ba0335af4809'/>
<id>urn:sha1:fc7cd444e7d637c291a3f9ba9987ba0335af4809</id>
<content type='text'>
The magic command "#local" define the command to be executed using
shell in local environment.
Its have effect and can only be used in script that executed using
"play".
In script that is executed using "local" it does nothing.
</content>
</entry>
</feed>
