@git.zone/tsdocker 1.2.43 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
  process.env.CLI_CALL = 'true';
3
- require('./dist/index');
3
+ import('./dist_ts/index.js');
@@ -0,0 +1,8 @@
1
+ /**
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
+ */
4
+ export declare const commitinfo: {
5
+ name: string;
6
+ version: string;
7
+ description: string;
8
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
+ */
4
+ export const commitinfo = {
5
+ name: '@git.zone/tsdocker',
6
+ version: '1.3.0',
7
+ description: 'develop npm modules cross platform with docker'
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxvQkFBb0I7SUFDMUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGdEQUFnRDtDQUM5RCxDQUFBIn0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as cli from './tsdocker.cli.js';
3
+ cli.run();
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sS0FBSyxHQUFHLE1BQU0sbUJBQW1CLENBQUM7QUFFekMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDIn0=
@@ -0,0 +1 @@
1
+ export declare let run: () => void;
@@ -0,0 +1,72 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as paths from './tsdocker.paths.js';
3
+ // modules
4
+ import * as ConfigModule from './tsdocker.config.js';
5
+ import * as DockerModule from './tsdocker.docker.js';
6
+ import { logger, ora } from './tsdocker.logging.js';
7
+ const tsdockerCli = new plugins.smartcli.Smartcli();
8
+ export let run = () => {
9
+ tsdockerCli.standardCommand().subscribe(async (argvArg) => {
10
+ const configArg = await ConfigModule.run().then(DockerModule.run);
11
+ if (configArg.exitCode === 0) {
12
+ logger.log('success', 'container ended all right!');
13
+ }
14
+ else {
15
+ logger.log('error', `container ended with error! Exit Code is ${configArg.exitCode}`);
16
+ process.exit(1);
17
+ }
18
+ });
19
+ /**
20
+ * this command is executed inside docker and meant for use from outside docker
21
+ */
22
+ tsdockerCli.addCommand('runinside').subscribe(async (argvArg) => {
23
+ logger.log('ok', 'Allright. We are now in Docker!');
24
+ ora.text('now trying to run your specified command');
25
+ const configArg = await ConfigModule.run();
26
+ const smartshellInstance = new plugins.smartshell.Smartshell({
27
+ executor: 'bash'
28
+ });
29
+ ora.stop();
30
+ await smartshellInstance.exec(configArg.command).then(response => {
31
+ if (response.exitCode !== 0) {
32
+ process.exit(1);
33
+ }
34
+ });
35
+ });
36
+ tsdockerCli.addCommand('clean').subscribe(async (argvArg) => {
37
+ ora.text('cleaning up docker env...');
38
+ if (argvArg.all) {
39
+ const smartshellInstance = new plugins.smartshell.Smartshell({
40
+ executor: 'bash'
41
+ });
42
+ ora.text('killing any running docker containers...');
43
+ await smartshellInstance.exec(`docker kill $(docker ps -q)`);
44
+ ora.text('removing stopped containers...');
45
+ await smartshellInstance.exec(`docker rm $(docker ps -a -q)`);
46
+ ora.text('removing images...');
47
+ await smartshellInstance.exec(`docker rmi -f $(docker images -q -f dangling=true)`);
48
+ ora.text('removing all other images...');
49
+ await smartshellInstance.exec(`docker rmi $(docker images -a -q)`);
50
+ ora.text('removing all volumes...');
51
+ await smartshellInstance.exec(`docker volume rm $(docker volume ls -f dangling=true -q)`);
52
+ }
53
+ ora.finishSuccess('docker environment now is clean!');
54
+ });
55
+ tsdockerCli.addCommand('speedtest').subscribe(async (argvArg) => {
56
+ const smartshellInstance = new plugins.smartshell.Smartshell({
57
+ executor: 'bash'
58
+ });
59
+ logger.log('ok', 'Starting speedtest');
60
+ await smartshellInstance.exec(`docker pull tianon/speedtest && docker run --rm tianon/speedtest --accept-license --accept-gdpr`);
61
+ });
62
+ tsdockerCli.addCommand('vscode').subscribe(async (argvArg) => {
63
+ const smartshellInstance = new plugins.smartshell.Smartshell({
64
+ executor: 'bash'
65
+ });
66
+ logger.log('ok', `Starting vscode in cwd ${paths.cwd}`);
67
+ await smartshellInstance.execAndWaitForLine(`docker run -p 127.0.0.1:8443:8443 -v "${paths.cwd}:/home/coder/project" registry.gitlab.com/hosttoday/ht-docker-vscode --allow-http --no-auth`, /Connected to shared process/);
68
+ await plugins.smartopen.openUrl('testing-vscode.git.zone:8443');
69
+ });
70
+ tsdockerCli.startParse();
71
+ };
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNkb2NrZXIuY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUU3QyxVQUFVO0FBQ1YsT0FBTyxLQUFLLFlBQVksTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssWUFBWSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBRXBELE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUU7SUFDcEIsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUU7UUFDdEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLFNBQVMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUN0RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDRDQUE0QyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN0RixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVIOztPQUVHO0lBQ0gsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFFO1FBQzVELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMzRCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWCxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9ELElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQyxPQUFPLEVBQUMsRUFBRTtRQUN4RCxHQUFHLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDdEMsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO2dCQUMzRCxRQUFRLEVBQUUsTUFBTTthQUNqQixDQUFDLENBQUM7WUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDckQsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUU3RCxHQUFHLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUU5RCxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDL0IsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUVwRixHQUFHLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDekMsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUVuRSxHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDcEMsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsR0FBRyxDQUFDLGFBQWEsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFFO1FBQzVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMzRCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sa0JBQWtCLENBQUMsSUFBSSxDQUMzQixpR0FBaUcsQ0FDbEcsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFFO1FBQ3pELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMzRCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSwwQkFBMEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEQsTUFBTSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FDekMseUNBQ0UsS0FBSyxDQUFDLEdBQ1IsNkZBQTZGLEVBQzdGLDZCQUE2QixDQUM5QixDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzNCLENBQUMsQ0FBQyJ9
@@ -0,0 +1,10 @@
1
+ export interface IConfig {
2
+ baseImage: string;
3
+ command: string;
4
+ dockerSock: boolean;
5
+ exitCode?: number;
6
+ keyValueObject: {
7
+ [key: string]: any;
8
+ };
9
+ }
10
+ export declare let run: () => Promise<IConfig>;
@@ -0,0 +1,29 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as paths from './tsdocker.paths.js';
3
+ import * as fs from 'fs';
4
+ const getQenvKeyValueObject = async () => {
5
+ let qenvKeyValueObjectArray;
6
+ if (fs.existsSync(plugins.path.join(paths.cwd, 'qenv.yml'))) {
7
+ qenvKeyValueObjectArray = new plugins.qenv.Qenv(paths.cwd, '.nogit/').keyValueObject;
8
+ }
9
+ else {
10
+ qenvKeyValueObjectArray = {};
11
+ }
12
+ return qenvKeyValueObjectArray;
13
+ };
14
+ const buildConfig = async (qenvKeyValueObjectArg) => {
15
+ const npmextra = new plugins.npmextra.Npmextra(paths.cwd);
16
+ const config = npmextra.dataFor('@git.zone/tsdocker', {
17
+ baseImage: 'hosttoday/ht-docker-node:npmdocker',
18
+ init: 'rm -rf node_nodules/ && yarn install',
19
+ command: 'npmci npm test',
20
+ dockerSock: false,
21
+ keyValueObject: qenvKeyValueObjectArg
22
+ });
23
+ return config;
24
+ };
25
+ export let run = async () => {
26
+ const config = await getQenvKeyValueObject().then(buildConfig);
27
+ return config;
28
+ };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNkb2NrZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQVV6QixNQUFNLHFCQUFxQixHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ3ZDLElBQUksdUJBQTJELENBQUM7SUFDaEUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVELHVCQUF1QixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDdkYsQ0FBQztTQUFNLENBQUM7UUFDTix1QkFBdUIsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sdUJBQXVCLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLHFCQUF5RCxFQUFFLEVBQUU7SUFDdEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBVSxvQkFBb0IsRUFBRTtRQUM3RCxTQUFTLEVBQUUsb0NBQW9DO1FBQy9DLElBQUksRUFBRSxzQ0FBc0M7UUFDNUMsT0FBTyxFQUFFLGdCQUFnQjtRQUN6QixVQUFVLEVBQUUsS0FBSztRQUNqQixjQUFjLEVBQUUscUJBQXFCO0tBQ3RDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxLQUFLLElBQXNCLEVBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxxQkFBcUIsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMifQ==
@@ -0,0 +1,2 @@
1
+ import type { IConfig } from './tsdocker.config.js';
2
+ export declare let run: (configArg: IConfig) => Promise<IConfig>;
@@ -0,0 +1,145 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as paths from './tsdocker.paths.js';
3
+ import * as snippets from './tsdocker.snippets.js';
4
+ import { logger, ora } from './tsdocker.logging.js';
5
+ const smartshellInstance = new plugins.smartshell.Smartshell({
6
+ executor: 'bash'
7
+ });
8
+ let config;
9
+ /**
10
+ * the docker data used to build the internal testing container
11
+ */
12
+ const dockerData = {
13
+ imageTag: 'npmdocker-temp-image:latest',
14
+ containerName: 'npmdocker-temp-container',
15
+ dockerProjectMountString: '',
16
+ dockerSockString: '',
17
+ dockerEnvString: ''
18
+ };
19
+ /**
20
+ * check if docker is available
21
+ */
22
+ const checkDocker = () => {
23
+ const done = plugins.smartpromise.defer();
24
+ ora.text('checking docker...');
25
+ if (smartshellInstance.exec('which docker')) {
26
+ logger.log('ok', 'Docker found!');
27
+ done.resolve();
28
+ }
29
+ else {
30
+ done.reject(new Error('docker not found on this machine'));
31
+ }
32
+ return done.promise;
33
+ };
34
+ /**
35
+ * builds the Dockerfile according to the config in the project
36
+ */
37
+ const buildDockerFile = async () => {
38
+ const done = plugins.smartpromise.defer();
39
+ ora.text('building Dockerfile...');
40
+ const dockerfile = snippets.dockerfileSnippet({
41
+ baseImage: config.baseImage,
42
+ command: config.command
43
+ });
44
+ logger.log('info', `Base image is: ${config.baseImage}`);
45
+ logger.log('info', `Command is: ${config.command}`);
46
+ await plugins.smartfs.file(plugins.path.join(paths.cwd, 'npmdocker')).write(dockerfile);
47
+ logger.log('ok', 'Dockerfile created!');
48
+ ora.stop();
49
+ done.resolve();
50
+ return done.promise;
51
+ };
52
+ /**
53
+ * builds the Dockerimage from the built Dockerfile
54
+ */
55
+ const buildDockerImage = async () => {
56
+ logger.log('info', 'pulling latest base image from registry...');
57
+ await smartshellInstance.exec(`docker pull ${config.baseImage}`);
58
+ ora.text('building Dockerimage...');
59
+ const execResult = await smartshellInstance.execSilent(`docker build --load -f npmdocker -t ${dockerData.imageTag} ${paths.cwd}`);
60
+ if (execResult.exitCode !== 0) {
61
+ console.log(execResult.stdout);
62
+ process.exit(1);
63
+ }
64
+ logger.log('ok', 'Dockerimage built!');
65
+ };
66
+ const buildDockerProjectMountString = async () => {
67
+ if (process.env.CI !== 'true') {
68
+ dockerData.dockerProjectMountString = `-v ${paths.cwd}:/workspace`;
69
+ }
70
+ };
71
+ /**
72
+ * builds an environment string that docker cli understands
73
+ */
74
+ const buildDockerEnvString = async () => {
75
+ for (const key of Object.keys(config.keyValueObject)) {
76
+ const envString = (dockerData.dockerEnvString =
77
+ dockerData.dockerEnvString + `-e ${key}=${config.keyValueObject[key]} `);
78
+ }
79
+ };
80
+ /**
81
+ * creates string to mount the docker.sock inside the testcontainer
82
+ */
83
+ const buildDockerSockString = async () => {
84
+ if (config.dockerSock) {
85
+ dockerData.dockerSockString = `-v /var/run/docker.sock:/var/run/docker.sock`;
86
+ }
87
+ };
88
+ /**
89
+ * creates a container by running the built Dockerimage
90
+ */
91
+ const runDockerImage = async () => {
92
+ const done = plugins.smartpromise.defer();
93
+ ora.text('starting Container...');
94
+ ora.stop();
95
+ logger.log('info', 'now running Dockerimage');
96
+ config.exitCode = (await smartshellInstance.exec(`docker run ${dockerData.dockerProjectMountString} ${dockerData.dockerSockString} ${dockerData.dockerEnvString} --name ${dockerData.containerName} ${dockerData.imageTag}`)).exitCode;
97
+ };
98
+ /**
99
+ * cleans up: deletes the test container
100
+ */
101
+ const deleteDockerContainer = async () => {
102
+ await smartshellInstance.execSilent(`docker rm -f ${dockerData.containerName}`);
103
+ };
104
+ /**
105
+ * cleans up deletes the test image
106
+ */
107
+ const deleteDockerImage = async () => {
108
+ await smartshellInstance.execSilent(`docker rmi ${dockerData.imageTag}`).then(async (response) => {
109
+ if (response.exitCode !== 0) {
110
+ console.log(response.stdout);
111
+ }
112
+ });
113
+ };
114
+ const preClean = async () => {
115
+ await deleteDockerImage()
116
+ .then(deleteDockerContainer)
117
+ .then(async () => {
118
+ logger.log('ok', 'ensured clean Docker environment!');
119
+ });
120
+ };
121
+ const postClean = async () => {
122
+ await deleteDockerContainer()
123
+ .then(deleteDockerImage)
124
+ .then(async () => {
125
+ logger.log('ok', 'cleaned up!');
126
+ });
127
+ await plugins.smartfs.file(paths.npmdockerFile).delete();
128
+ };
129
+ export let run = async (configArg) => {
130
+ config = configArg;
131
+ const resultConfig = await checkDocker()
132
+ .then(preClean)
133
+ .then(buildDockerFile)
134
+ .then(buildDockerImage)
135
+ .then(buildDockerProjectMountString)
136
+ .then(buildDockerEnvString)
137
+ .then(buildDockerSockString)
138
+ .then(runDockerImage)
139
+ .then(postClean)
140
+ .catch(err => {
141
+ console.log(err);
142
+ });
143
+ return config;
144
+ };
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuZG9ja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNkb2NrZXIuZG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxLQUFLLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssUUFBUSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzNELFFBQVEsRUFBRSxNQUFNO0NBQ2pCLENBQUMsQ0FBQztBQUtILElBQUksTUFBZSxDQUFDO0FBRXBCOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQUc7SUFDakIsUUFBUSxFQUFFLDZCQUE2QjtJQUN2QyxhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLHdCQUF3QixFQUFFLEVBQUU7SUFDNUIsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixlQUFlLEVBQUUsRUFBRTtDQUNwQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7SUFDdkIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFL0IsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGtDQUFrQyxD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
@@ -0,0 +1,3 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ export declare const logger: plugins.smartlog.Smartlog;
3
+ export declare const ora: plugins.smartlogSouceOra.SmartlogSourceOra;
@@ -0,0 +1,15 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ export const logger = new plugins.smartlog.Smartlog({
3
+ logContext: {
4
+ company: 'Some Company',
5
+ companyunit: 'Some CompanyUnit',
6
+ containerName: 'Some Containername',
7
+ environment: 'local',
8
+ runtime: 'node',
9
+ zone: 'gitzone'
10
+ },
11
+ minimumLogLevel: 'silly'
12
+ });
13
+ logger.addLogDestination(new plugins.smartlogDestinationLocal.DestinationLocal());
14
+ export const ora = new plugins.smartlogSouceOra.SmartlogSourceOra();
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIubG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RzZG9ja2VyLmxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNsRCxVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUUsY0FBYztRQUN2QixXQUFXLEVBQUUsa0JBQWtCO1FBQy9CLGFBQWEsRUFBRSxvQkFBb0I7UUFDbkMsV0FBVyxFQUFFLE9BQU87UUFDcEIsT0FBTyxFQUFFLE1BQU07UUFDZixJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUNELGVBQWUsRUFBRSxPQUFPO0NBQ3pCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUMifQ==
@@ -0,0 +1,4 @@
1
+ export declare let cwd: string;
2
+ export declare let packageBase: string;
3
+ export declare let assets: string;
4
+ export declare let npmdockerFile: string;
@@ -0,0 +1,13 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as fs from 'fs';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname } from 'path';
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = dirname(__filename);
7
+ // directories
8
+ export let cwd = process.cwd();
9
+ export let packageBase = plugins.path.join(__dirname, '../');
10
+ export let assets = plugins.path.join(packageBase, 'assets/');
11
+ fs.mkdirSync(assets, { recursive: true });
12
+ export let npmdockerFile = plugins.path.join(cwd, 'npmdocker');
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c2RvY2tlci5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFdEMsY0FBYztBQUNkLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxDQUFDLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3RCxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzlELEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDMUMsTUFBTSxDQUFDLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyJ9
@@ -0,0 +1,15 @@
1
+ import * as npmextra from '@push.rocks/npmextra';
2
+ import * as path from 'path';
3
+ import * as projectinfo from '@push.rocks/projectinfo';
4
+ import * as smartpromise from '@push.rocks/smartpromise';
5
+ import * as qenv from '@push.rocks/qenv';
6
+ import * as smartcli from '@push.rocks/smartcli';
7
+ import { SmartFs } from '@push.rocks/smartfs';
8
+ import * as smartlog from '@push.rocks/smartlog';
9
+ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
10
+ import * as smartlogSouceOra from '@push.rocks/smartlog-source-ora';
11
+ import * as smartopen from '@push.rocks/smartopen';
12
+ import * as smartshell from '@push.rocks/smartshell';
13
+ import * as smartstring from '@push.rocks/smartstring';
14
+ export declare const smartfs: SmartFs;
15
+ export { npmextra, path, projectinfo, smartpromise, qenv, smartcli, smartlog, smartlogDestinationLocal, smartlogSouceOra, smartopen, smartshell, smartstring };
@@ -0,0 +1,18 @@
1
+ // push.rocks scope
2
+ import * as npmextra from '@push.rocks/npmextra';
3
+ import * as path from 'path';
4
+ import * as projectinfo from '@push.rocks/projectinfo';
5
+ import * as smartpromise from '@push.rocks/smartpromise';
6
+ import * as qenv from '@push.rocks/qenv';
7
+ import * as smartcli from '@push.rocks/smartcli';
8
+ import { SmartFs, SmartFsProviderNode } from '@push.rocks/smartfs';
9
+ import * as smartlog from '@push.rocks/smartlog';
10
+ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
11
+ import * as smartlogSouceOra from '@push.rocks/smartlog-source-ora';
12
+ import * as smartopen from '@push.rocks/smartopen';
13
+ import * as smartshell from '@push.rocks/smartshell';
14
+ import * as smartstring from '@push.rocks/smartstring';
15
+ // Create smartfs instance
16
+ export const smartfs = new SmartFs(new SmartFsProviderNode());
17
+ export { npmextra, path, projectinfo, smartpromise, qenv, smartcli, smartlog, smartlogDestinationLocal, smartlogSouceOra, smartopen, smartshell, smartstring };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RzZG9ja2VyLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxJQUFJLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxLQUFLLGdCQUFnQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELDBCQUEwQjtBQUMxQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFFOUQsT0FBTyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osV0FBVyxFQUNYLFlBQVksRUFDWixJQUFJLEVBQ0osUUFBUSxFQUNSLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNaLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ export interface IDockerfileSnippet {
2
+ baseImage: string;
3
+ command: string;
4
+ }
5
+ export declare let dockerfileSnippet: (optionsArg: IDockerfileSnippet) => string;
@@ -0,0 +1,26 @@
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ let getMountSolutionString = (optionsArg) => {
3
+ if (process.env.CI) {
4
+ return 'COPY ./ /workspace';
5
+ }
6
+ else {
7
+ return '# not copying workspcae since not in CI';
8
+ }
9
+ };
10
+ let getGlobalPreparationString = (optionsArg) => {
11
+ // Always install tsdocker to ensure the latest version is available
12
+ return 'RUN npm install -g @git.zone/tsdocker';
13
+ };
14
+ export let dockerfileSnippet = (optionsArg) => {
15
+ return plugins.smartstring.indent.normalize(`
16
+ FROM ${optionsArg.baseImage}
17
+ # For info about what tsdocker does read the docs at https://gitzone.github.io/tsdocker
18
+ ${getGlobalPreparationString(optionsArg)}
19
+ ${getMountSolutionString(optionsArg)}
20
+ WORKDIR /workspace
21
+ ENV CI=true
22
+ ENTRYPOINT ["tsdocker"]
23
+ CMD ["runinside"]
24
+ `);
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkb2NrZXIuc25pcHBldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c2RvY2tlci5zbmlwcGV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBT2pELElBQUksc0JBQXNCLEdBQUcsQ0FBQyxVQUE4QixFQUFFLEVBQUU7SUFDOUQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLHlDQUF5QyxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixJQUFJLDBCQUEwQixHQUFHLENBQUMsVUFBOEIsRUFBRSxFQUFFO0lBQ2xFLG9FQUFvRTtJQUNwRSxPQUFPLHVDQUF1QyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsVUFBOEIsRUFBVSxFQUFFO0lBQ3hFLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUN6QztPQUNHLFVBQVUsQ0FBQyxTQUFTOztFQUV6QiwwQkFBMEIsQ0FBQyxVQUFVLENBQUM7RUFDdEMsc0JBQXNCLENBQUMsVUFBVSxDQUFDOzs7OztDQUtuQyxDQUNFLENBQUM7QUFDSixDQUFDLENBQUMifQ==
package/npmextra.json CHANGED
@@ -3,11 +3,7 @@
3
3
  "mode": "default",
4
4
  "cli": true
5
5
  },
6
- "npmci": {
7
- "npmGlobalTools": [],
8
- "npmAccessLevel": "public"
9
- },
10
- "gitzone": {
6
+ "@git.zone/cli": {
11
7
  "projectType": "npm",
12
8
  "module": {
13
9
  "githost": "gitlab.com",
@@ -16,6 +12,16 @@
16
12
  "description": "develop npm modules cross platform with docker",
17
13
  "npmPackagename": "@git.zone/tsdocker",
18
14
  "license": "MIT"
15
+ },
16
+ "release": {
17
+ "accessLevel": "public",
18
+ "registries": [
19
+ "https://verdaccio.lossless.digital",
20
+ "https://registry.npmjs.org"
21
+ ]
19
22
  }
23
+ },
24
+ "@ship.zone/szci": {
25
+ "npmGlobalTools": []
20
26
  }
21
- }
27
+ }
package/package.json CHANGED
@@ -1,13 +1,26 @@
1
1
  {
2
2
  "name": "@git.zone/tsdocker",
3
- "version": "1.2.43",
3
+ "version": "1.3.0",
4
4
  "private": false,
5
5
  "description": "develop npm modules cross platform with docker",
6
- "main": "dist/index.js",
7
- "typings": "dist/index.d.ts",
6
+ "main": "dist_ts/index.js",
7
+ "typings": "dist_ts/index.d.ts",
8
8
  "bin": {
9
9
  "tsdocker": "cli.js"
10
10
  },
11
+ "scripts": {
12
+ "test": "(npm run build)",
13
+ "build": "(tsbuild)",
14
+ "testIntegration": "(npm run clean && npm run setupCheck && npm run testStandard)",
15
+ "testStandard": "(cd test/ && tsx ../ts/index.ts)",
16
+ "testSpeed": "(cd test/ && tsx ../ts/index.ts speedtest)",
17
+ "testClean": "(cd test/ && tsx ../ts/index.ts clean --all)",
18
+ "testVscode": "(cd test/ && tsx ../ts/index.ts vscode)",
19
+ "clean": "(rm -rf test/)",
20
+ "compile": "(npmts --notest)",
21
+ "setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
22
+ "buildDocs": "tsdoc"
23
+ },
11
24
  "repository": {
12
25
  "type": "git",
13
26
  "url": "https://gitlab.com/gitzone/tsdocker.git"
@@ -22,18 +35,18 @@
22
35
  },
23
36
  "homepage": "https://gitlab.com/gitzone/tsdocker#readme",
24
37
  "devDependencies": {
25
- "@git.zone/tsbuild": "^3.1.0",
26
- "@git.zone/tsrun": "^2.0.0",
27
- "@git.zone/tstest": "^3.1.3",
28
- "@types/node": "^22.10.2"
38
+ "@git.zone/tsbuild": "^4.1.2",
39
+ "@git.zone/tsrun": "^2.0.1",
40
+ "@git.zone/tstest": "^3.1.6",
41
+ "@types/node": "^25.0.9"
29
42
  },
30
43
  "dependencies": {
31
44
  "@push.rocks/npmextra": "^5.3.3",
32
45
  "@push.rocks/projectinfo": "^5.0.2",
33
46
  "@push.rocks/qenv": "^6.1.3",
34
47
  "@push.rocks/smartanalytics": "^2.0.15",
35
- "@push.rocks/smartcli": "^4.0.19",
36
- "@push.rocks/smartfs": "^1.1.0",
48
+ "@push.rocks/smartcli": "^4.0.20",
49
+ "@push.rocks/smartfs": "^1.3.1",
37
50
  "@push.rocks/smartlog": "^3.1.10",
38
51
  "@push.rocks/smartlog-destination-local": "^9.0.2",
39
52
  "@push.rocks/smartlog-source-ora": "^1.0.9",
@@ -42,6 +55,7 @@
42
55
  "@push.rocks/smartshell": "^3.3.0",
43
56
  "@push.rocks/smartstring": "^4.1.0"
44
57
  },
58
+ "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34",
45
59
  "type": "module",
46
60
  "files": [
47
61
  "ts/**/*",
@@ -55,16 +69,7 @@
55
69
  "npmextra.json",
56
70
  "readme.md"
57
71
  ],
58
- "scripts": {
59
- "test": "(npm run clean && npm run setupCheck && npm run testStandard && npm run testSpeed)",
60
- "build": "(tsbuild)",
61
- "testStandard": "(cd test/ && node ../cli.ts.js)",
62
- "testSpeed": "(cd test/ && node ../cli.ts.js speedtest)",
63
- "testClean": "(cd test/ && node ../cli.ts.js clean --all)",
64
- "testVscode": "(cd test/ && node ../cli.ts.js vscode)",
65
- "clean": "(rm -rf test/)",
66
- "compile": "(npmts --notest)",
67
- "setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
68
- "buildDocs": "tsdoc"
72
+ "pnpm": {
73
+ "overrides": {}
69
74
  }
70
- }
75
+ }
package/readme.md CHANGED
@@ -35,13 +35,13 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
35
35
 
36
36
  - Full TypeScript support with excellent IntelliSense
37
37
  - Type-safe configuration
38
- - Modern async/await patterns throughout
38
+ - Modern ESM with async/await patterns throughout
39
39
 
40
40
  ## Installation
41
41
 
42
42
  ```bash
43
- npm install --save-dev @git.zone/tsdocker
44
- # or
43
+ npm install -g @git.zone/tsdocker
44
+ # or for project-local installation
45
45
  pnpm install --save-dev @git.zone/tsdocker
46
46
  ```
47
47
 
@@ -53,9 +53,9 @@ Create an `npmextra.json` file in your project root:
53
53
 
54
54
  ```json
55
55
  {
56
- "npmdocker": {
57
- "baseImage": "hosttoday/ht-docker-node:npmts",
58
- "command": "npmci test stable",
56
+ "@git.zone/tsdocker": {
57
+ "baseImage": "node:20",
58
+ "command": "npm test",
59
59
  "dockerSock": false
60
60
  }
61
61
  }
@@ -64,7 +64,7 @@ Create an `npmextra.json` file in your project root:
64
64
  ### 2. Run Your Tests
65
65
 
66
66
  ```bash
67
- npx tsdocker
67
+ tsdocker
68
68
  ```
69
69
 
70
70
  That's it! tsdocker will:
@@ -144,7 +144,7 @@ If you need to run Docker commands inside your test container (e.g., testing Doc
144
144
 
145
145
  ```json
146
146
  {
147
- "npmdocker": {
147
+ "@git.zone/tsdocker": {
148
148
  "baseImage": "docker:latest",
149
149
  "command": "docker run hello-world",
150
150
  "dockerSock": true
@@ -160,7 +160,7 @@ You can use any Docker image as your base:
160
160
 
161
161
  ```json
162
162
  {
163
- "npmdocker": {
163
+ "@git.zone/tsdocker": {
164
164
  "baseImage": "node:20-alpine",
165
165
  "command": "npm test"
166
166
  }
@@ -171,13 +171,13 @@ Popular choices:
171
171
 
172
172
  - `node:20` — Official Node.js images
173
173
  - `node:20-alpine` — Lightweight Alpine-based images
174
- - `hosttoday/ht-docker-node:npmts` — Pre-configured with npmts tooling
174
+ - `node:lts` — Long-term support Node.js version
175
175
 
176
176
  ### CI Integration
177
177
 
178
178
  tsdocker automatically detects CI environments (via `CI=true` env var) and adjusts behavior:
179
179
 
180
- - Skips mounting project directory in CI (assumes code is already in container)
180
+ - Copies project files into container in CI (instead of mounting)
181
181
  - Optimizes for CI execution patterns
182
182
 
183
183
  ## Why tsdocker?
@@ -207,7 +207,7 @@ tsdocker ensures every test run happens in a **clean, reproducible environment**
207
207
  tsdocker is built with TypeScript and provides full type definitions:
208
208
 
209
209
  ```typescript
210
- import { IConfig } from '@git.zone/tsdocker/dist/tsdocker.config';
210
+ import type { IConfig } from '@git.zone/tsdocker/dist_ts/tsdocker.config.js';
211
211
 
212
212
  const config: IConfig = {
213
213
  baseImage: 'node:20',
@@ -222,7 +222,7 @@ const config: IConfig = {
222
222
  ## Requirements
223
223
 
224
224
  - **Docker**: Docker must be installed and accessible via CLI
225
- - **Node.js**: Version 14 or higher recommended
225
+ - **Node.js**: Version 18 or higher (ESM support required)
226
226
 
227
227
  ## How It Works
228
228
 
@@ -271,20 +271,20 @@ sudo usermod -aG docker $USER
271
271
 
272
272
  ```json
273
273
  {
274
- "npmdocker": {
274
+ "@git.zone/tsdocker": {
275
275
  "baseImage": "node:20",
276
276
  "command": "npm test"
277
277
  }
278
278
  }
279
279
  ```
280
280
 
281
- ### Using npmci for multiple Node versions
281
+ ### Running pnpm tests
282
282
 
283
283
  ```json
284
284
  {
285
- "npmdocker": {
286
- "baseImage": "hosttoday/ht-docker-node:npmts",
287
- "command": "npmci test stable"
285
+ "@git.zone/tsdocker": {
286
+ "baseImage": "node:20",
287
+ "command": "corepack enable && pnpm install && pnpm test"
288
288
  }
289
289
  }
290
290
  ```
@@ -293,7 +293,7 @@ sudo usermod -aG docker $USER
293
293
 
294
294
  ```json
295
295
  {
296
- "npmdocker": {
296
+ "@git.zone/tsdocker": {
297
297
  "baseImage": "docker:latest",
298
298
  "command": "sh -c 'docker version && docker ps'",
299
299
  "dockerSock": true
@@ -307,25 +307,32 @@ sudo usermod -aG docker $USER
307
307
  🚀 **Layer caching**: Docker caches image layers — your base image only downloads once
308
308
  🚀 **Prune regularly**: Run `docker system prune` periodically to reclaim disk space
309
309
 
310
- ## Migration from legacy npmdocker scope
310
+ ## Migration from legacy npmdocker
311
311
 
312
- This package was previously published under the `npmdocker` name in the old scope. It is now available as `@git.zone/tsdocker` for better naming consistency. Functionality remains the same.
312
+ This package was previously published under the `npmdocker` name. It is now available as `@git.zone/tsdocker` with modernized ESM support and updated dependencies.
313
+
314
+ Key changes:
315
+ - Configuration key changed from `npmdocker` to `@git.zone/tsdocker` in `npmextra.json`
316
+ - CLI command is now `tsdocker` instead of `npmdocker`
317
+ - Full ESM support with `.js` extensions in imports
313
318
 
314
319
  ## License and Legal Information
315
320
 
316
- This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
321
+ This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
317
322
 
318
323
  **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
319
324
 
320
325
  ### Trademarks
321
326
 
322
- This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
327
+ This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.
328
+
329
+ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.
323
330
 
324
331
  ### Company Information
325
332
 
326
333
  Task Venture Capital GmbH
327
- Registered at District court Bremen HRB 35230 HB, Germany
334
+ Registered at District Court Bremen HRB 35230 HB, Germany
328
335
 
329
- For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
336
+ For any legal inquiries or further information, please contact us via email at hello@task.vc.
330
337
 
331
338
  By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tsdocker',
6
- version: '1.2.43',
6
+ version: '1.3.0',
7
7
  description: 'develop npm modules cross platform with docker'
8
8
  }
package/ts/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import * as plugins from './tsdocker.plugins';
2
- import * as cli from './tsdocker.cli';
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as cli from './tsdocker.cli.js';
3
3
 
4
4
  cli.run();
@@ -1,16 +1,16 @@
1
- import * as plugins from './tsdocker.plugins';
2
- import * as paths from './tsdocker.paths';
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as paths from './tsdocker.paths.js';
3
3
 
4
4
  // modules
5
- import * as ConfigModule from './tsdocker.config';
6
- import * as DockerModule from './tsdocker.docker';
5
+ import * as ConfigModule from './tsdocker.config.js';
6
+ import * as DockerModule from './tsdocker.docker.js';
7
7
 
8
- import { logger, ora } from './tsdocker.logging';
8
+ import { logger, ora } from './tsdocker.logging.js';
9
9
 
10
10
  const tsdockerCli = new plugins.smartcli.Smartcli();
11
11
 
12
12
  export let run = () => {
13
- tsdockerCli.standardTask().subscribe(async argvArg => {
13
+ tsdockerCli.standardCommand().subscribe(async argvArg => {
14
14
  const configArg = await ConfigModule.run().then(DockerModule.run);
15
15
  if (configArg.exitCode === 0) {
16
16
  logger.log('success', 'container ended all right!');
@@ -1,5 +1,5 @@
1
- import * as plugins from './tsdocker.plugins';
2
- import * as paths from './tsdocker.paths';
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as paths from './tsdocker.paths.js';
3
3
  import * as fs from 'fs';
4
4
 
5
5
  export interface IConfig {
@@ -22,7 +22,7 @@ const getQenvKeyValueObject = async () => {
22
22
 
23
23
  const buildConfig = async (qenvKeyValueObjectArg: { [key: string]: string | number }) => {
24
24
  const npmextra = new plugins.npmextra.Npmextra(paths.cwd);
25
- const config = npmextra.dataFor<IConfig>('npmdocker', {
25
+ const config = npmextra.dataFor<IConfig>('@git.zone/tsdocker', {
26
26
  baseImage: 'hosttoday/ht-docker-node:npmdocker',
27
27
  init: 'rm -rf node_nodules/ && yarn install',
28
28
  command: 'npmci npm test',
@@ -1,15 +1,15 @@
1
- import * as plugins from './tsdocker.plugins';
2
- import * as paths from './tsdocker.paths';
3
- import * as snippets from './tsdocker.snippets';
1
+ import * as plugins from './tsdocker.plugins.js';
2
+ import * as paths from './tsdocker.paths.js';
3
+ import * as snippets from './tsdocker.snippets.js';
4
4
 
5
- import { logger, ora } from './tsdocker.logging';
5
+ import { logger, ora } from './tsdocker.logging.js';
6
6
 
7
7
  const smartshellInstance = new plugins.smartshell.Smartshell({
8
8
  executor: 'bash'
9
9
  });
10
10
 
11
11
  // interfaces
12
- import { IConfig } from './tsdocker.config';
12
+ import type { IConfig } from './tsdocker.config.js';
13
13
 
14
14
  let config: IConfig;
15
15
 
@@ -67,7 +67,7 @@ const buildDockerImage = async () => {
67
67
  await smartshellInstance.exec(`docker pull ${config.baseImage}`);
68
68
  ora.text('building Dockerimage...');
69
69
  const execResult = await smartshellInstance.execSilent(
70
- `docker build -f npmdocker -t ${dockerData.imageTag} ${paths.cwd}`
70
+ `docker build --load -f npmdocker -t ${dockerData.imageTag} ${paths.cwd}`
71
71
  );
72
72
  if (execResult.exitCode !== 0) {
73
73
  console.log(execResult.stdout);
@@ -1,4 +1,4 @@
1
- import * as plugins from './tsdocker.plugins';
1
+ import * as plugins from './tsdocker.plugins.js';
2
2
 
3
3
  export const logger = new plugins.smartlog.Smartlog({
4
4
  logContext: {
@@ -1,5 +1,10 @@
1
- import * as plugins from './tsdocker.plugins';
1
+ import * as plugins from './tsdocker.plugins.js';
2
2
  import * as fs from 'fs';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname } from 'path';
5
+
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
3
8
 
4
9
  // directories
5
10
  export let cwd = process.cwd();
@@ -1,4 +1,4 @@
1
- import * as plugins from './tsdocker.plugins';
1
+ import * as plugins from './tsdocker.plugins.js';
2
2
 
3
3
  export interface IDockerfileSnippet {
4
4
  baseImage: string;
@@ -14,23 +14,20 @@ let getMountSolutionString = (optionsArg: IDockerfileSnippet) => {
14
14
  };
15
15
 
16
16
  let getGlobalPreparationString = (optionsArg: IDockerfileSnippet) => {
17
- if (optionsArg.baseImage !== 'hosttoday/ht-docker-node:npmdocker') {
18
- return 'RUN npm install -g npmdocker';
19
- } else {
20
- return '# not installing npmdocker since it is included in the base image';
21
- }
17
+ // Always install tsdocker to ensure the latest version is available
18
+ return 'RUN npm install -g @git.zone/tsdocker';
22
19
  };
23
20
 
24
21
  export let dockerfileSnippet = (optionsArg: IDockerfileSnippet): string => {
25
22
  return plugins.smartstring.indent.normalize(
26
23
  `
27
24
  FROM ${optionsArg.baseImage}
28
- # For info about what npmdocker does read the docs at https://gitzone.github.io/npmdocker
25
+ # For info about what tsdocker does read the docs at https://gitzone.github.io/tsdocker
29
26
  ${getGlobalPreparationString(optionsArg)}
30
27
  ${getMountSolutionString(optionsArg)}
31
28
  WORKDIR /workspace
32
29
  ENV CI=true
33
- ENTRYPOINT ["npmdocker"]
30
+ ENTRYPOINT ["tsdocker"]
34
31
  CMD ["runinside"]
35
32
  `
36
33
  );