@ecmaos/coreutils 0.3.1 → 0.4.2
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +48 -0
- package/dist/commands/awk.d.ts +4 -0
- package/dist/commands/awk.d.ts.map +1 -0
- package/dist/commands/awk.js +324 -0
- package/dist/commands/awk.js.map +1 -0
- package/dist/commands/chgrp.d.ts +4 -0
- package/dist/commands/chgrp.d.ts.map +1 -0
- package/dist/commands/chgrp.js +187 -0
- package/dist/commands/chgrp.js.map +1 -0
- package/dist/commands/chmod.d.ts.map +1 -1
- package/dist/commands/chmod.js +139 -2
- package/dist/commands/chmod.js.map +1 -1
- package/dist/commands/chown.d.ts +4 -0
- package/dist/commands/chown.d.ts.map +1 -0
- package/dist/commands/chown.js +257 -0
- package/dist/commands/chown.js.map +1 -0
- package/dist/commands/cksum.d.ts +4 -0
- package/dist/commands/cksum.d.ts.map +1 -0
- package/dist/commands/cksum.js +124 -0
- package/dist/commands/cksum.js.map +1 -0
- package/dist/commands/cmp.d.ts +4 -0
- package/dist/commands/cmp.d.ts.map +1 -0
- package/dist/commands/cmp.js +120 -0
- package/dist/commands/cmp.js.map +1 -0
- package/dist/commands/column.d.ts +4 -0
- package/dist/commands/column.d.ts.map +1 -0
- package/dist/commands/column.js +274 -0
- package/dist/commands/column.js.map +1 -0
- package/dist/commands/cp.d.ts.map +1 -1
- package/dist/commands/cp.js +81 -4
- package/dist/commands/cp.js.map +1 -1
- package/dist/commands/cron.d.ts.map +1 -1
- package/dist/commands/cron.js +116 -23
- package/dist/commands/cron.js.map +1 -1
- package/dist/commands/curl.d.ts +4 -0
- package/dist/commands/curl.d.ts.map +1 -0
- package/dist/commands/curl.js +238 -0
- package/dist/commands/curl.js.map +1 -0
- package/dist/commands/du.d.ts +4 -0
- package/dist/commands/du.d.ts.map +1 -0
- package/dist/commands/du.js +168 -0
- package/dist/commands/du.js.map +1 -0
- package/dist/commands/echo.d.ts.map +1 -1
- package/dist/commands/echo.js +125 -2
- package/dist/commands/echo.js.map +1 -1
- package/dist/commands/env.d.ts +4 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +129 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/expand.d.ts +4 -0
- package/dist/commands/expand.d.ts.map +1 -0
- package/dist/commands/expand.js +197 -0
- package/dist/commands/expand.js.map +1 -0
- package/dist/commands/factor.d.ts +4 -0
- package/dist/commands/factor.d.ts.map +1 -0
- package/dist/commands/factor.js +141 -0
- package/dist/commands/factor.js.map +1 -0
- package/dist/commands/fmt.d.ts +4 -0
- package/dist/commands/fmt.d.ts.map +1 -0
- package/dist/commands/fmt.js +278 -0
- package/dist/commands/fmt.js.map +1 -0
- package/dist/commands/fold.d.ts +4 -0
- package/dist/commands/fold.d.ts.map +1 -0
- package/dist/commands/fold.js +253 -0
- package/dist/commands/fold.js.map +1 -0
- package/dist/commands/groups.d.ts +4 -0
- package/dist/commands/groups.d.ts.map +1 -0
- package/dist/commands/groups.js +61 -0
- package/dist/commands/groups.js.map +1 -0
- package/dist/commands/head.d.ts.map +1 -1
- package/dist/commands/head.js +184 -77
- package/dist/commands/head.js.map +1 -1
- package/dist/commands/hostname.d.ts +4 -0
- package/dist/commands/hostname.d.ts.map +1 -0
- package/dist/commands/hostname.js +80 -0
- package/dist/commands/hostname.js.map +1 -0
- package/dist/commands/less.d.ts.map +1 -1
- package/dist/commands/less.js +1 -0
- package/dist/commands/less.js.map +1 -1
- package/dist/commands/man.d.ts.map +1 -1
- package/dist/commands/man.js +3 -1
- package/dist/commands/man.js.map +1 -1
- package/dist/commands/mount.d.ts +4 -0
- package/dist/commands/mount.d.ts.map +1 -0
- package/dist/commands/mount.js +1136 -0
- package/dist/commands/mount.js.map +1 -0
- package/dist/commands/od.d.ts +4 -0
- package/dist/commands/od.d.ts.map +1 -0
- package/dist/commands/od.js +342 -0
- package/dist/commands/od.js.map +1 -0
- package/dist/commands/pr.d.ts +4 -0
- package/dist/commands/pr.d.ts.map +1 -0
- package/dist/commands/pr.js +298 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/commands/printf.d.ts +4 -0
- package/dist/commands/printf.d.ts.map +1 -0
- package/dist/commands/printf.js +271 -0
- package/dist/commands/printf.js.map +1 -0
- package/dist/commands/readlink.d.ts +4 -0
- package/dist/commands/readlink.d.ts.map +1 -0
- package/dist/commands/readlink.js +104 -0
- package/dist/commands/readlink.js.map +1 -0
- package/dist/commands/realpath.d.ts +4 -0
- package/dist/commands/realpath.d.ts.map +1 -0
- package/dist/commands/realpath.js +111 -0
- package/dist/commands/realpath.js.map +1 -0
- package/dist/commands/rev.d.ts +4 -0
- package/dist/commands/rev.d.ts.map +1 -0
- package/dist/commands/rev.js +134 -0
- package/dist/commands/rev.js.map +1 -0
- package/dist/commands/shuf.d.ts +4 -0
- package/dist/commands/shuf.d.ts.map +1 -0
- package/dist/commands/shuf.js +221 -0
- package/dist/commands/shuf.js.map +1 -0
- package/dist/commands/sleep.d.ts +4 -0
- package/dist/commands/sleep.d.ts.map +1 -0
- package/dist/commands/sleep.js +102 -0
- package/dist/commands/sleep.js.map +1 -0
- package/dist/commands/strings.d.ts +4 -0
- package/dist/commands/strings.d.ts.map +1 -0
- package/dist/commands/strings.js +170 -0
- package/dist/commands/strings.js.map +1 -0
- package/dist/commands/tac.d.ts +4 -0
- package/dist/commands/tac.d.ts.map +1 -0
- package/dist/commands/tac.js +130 -0
- package/dist/commands/tac.js.map +1 -0
- package/dist/commands/time.d.ts +4 -0
- package/dist/commands/time.d.ts.map +1 -0
- package/dist/commands/time.js +126 -0
- package/dist/commands/time.js.map +1 -0
- package/dist/commands/umount.d.ts +4 -0
- package/dist/commands/umount.d.ts.map +1 -0
- package/dist/commands/umount.js +103 -0
- package/dist/commands/umount.js.map +1 -0
- package/dist/commands/uname.d.ts +4 -0
- package/dist/commands/uname.d.ts.map +1 -0
- package/dist/commands/uname.js +149 -0
- package/dist/commands/uname.js.map +1 -0
- package/dist/commands/unexpand.d.ts +4 -0
- package/dist/commands/unexpand.d.ts.map +1 -0
- package/dist/commands/unexpand.js +286 -0
- package/dist/commands/unexpand.js.map +1 -0
- package/dist/commands/uptime.d.ts +4 -0
- package/dist/commands/uptime.d.ts.map +1 -0
- package/dist/commands/uptime.js +62 -0
- package/dist/commands/uptime.js.map +1 -0
- package/dist/commands/view.d.ts +1 -0
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +408 -66
- package/dist/commands/view.js.map +1 -1
- package/dist/commands/yes.d.ts +4 -0
- package/dist/commands/yes.d.ts.map +1 -0
- package/dist/commands/yes.js +58 -0
- package/dist/commands/yes.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -1
- package/package.json +12 -3
- package/src/commands/awk.ts +340 -0
- package/src/commands/chmod.ts +141 -2
- package/src/commands/chown.ts +321 -0
- package/src/commands/cksum.ts +133 -0
- package/src/commands/cmp.ts +126 -0
- package/src/commands/column.ts +273 -0
- package/src/commands/cp.ts +93 -4
- package/src/commands/cron.ts +115 -23
- package/src/commands/curl.ts +231 -0
- package/src/commands/echo.ts +122 -2
- package/src/commands/env.ts +143 -0
- package/src/commands/expand.ts +207 -0
- package/src/commands/factor.ts +151 -0
- package/src/commands/fmt.ts +293 -0
- package/src/commands/fold.ts +257 -0
- package/src/commands/groups.ts +72 -0
- package/src/commands/head.ts +176 -77
- package/src/commands/hostname.ts +81 -0
- package/src/commands/less.ts +1 -0
- package/src/commands/man.ts +4 -1
- package/src/commands/mount.ts +1302 -0
- package/src/commands/od.ts +327 -0
- package/src/commands/pr.ts +291 -0
- package/src/commands/printf.ts +271 -0
- package/src/commands/readlink.ts +102 -0
- package/src/commands/realpath.ts +126 -0
- package/src/commands/rev.ts +143 -0
- package/src/commands/shuf.ts +218 -0
- package/src/commands/sleep.ts +109 -0
- package/src/commands/strings.ts +176 -0
- package/src/commands/tac.ts +138 -0
- package/src/commands/time.ts +144 -0
- package/src/commands/umount.ts +116 -0
- package/src/commands/uname.ts +130 -0
- package/src/commands/unexpand.ts +305 -0
- package/src/commands/uptime.ts +73 -0
- package/src/commands/view.ts +463 -73
- package/src/index.ts +82 -0
- package/tsconfig.json +4 -0
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @ecmaos/coreutils
|
|
2
2
|
|
|
3
|
+
## 0.4.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 53068e0: Many new coreutils added
|
|
8
|
+
|
|
9
|
+
## 0.4.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- c6d3ea8: Filesystem & Mount System
|
|
14
|
+
|
|
15
|
+
- Added fstab file processing and parsing utilities
|
|
16
|
+
- Implemented mount and umount commands with full filesystem support
|
|
17
|
+
- Changed environment variable prefix handling
|
|
18
|
+
- Enhanced filesystem configuration and mount management
|
|
19
|
+
|
|
20
|
+
Environment Management
|
|
21
|
+
|
|
22
|
+
- Added support for global /etc/env file
|
|
23
|
+
- Fixed env command argument handling
|
|
24
|
+
- New env command implementation in core/utils
|
|
25
|
+
|
|
26
|
+
Documentation & SEO
|
|
27
|
+
|
|
28
|
+
- Enhanced HTML metadata and SEO improvements
|
|
29
|
+
- Added AI and passkey tutorials
|
|
30
|
+
- Updated README with expanded documentation
|
|
31
|
+
- Added lighthouse performance report
|
|
32
|
+
- Updated project description
|
|
33
|
+
|
|
34
|
+
Bug Fixes & Enhancements
|
|
35
|
+
|
|
36
|
+
- Enhanced cron command with improved parsing and functionality
|
|
37
|
+
- Fixed readline bug in terminal
|
|
38
|
+
- Fixed less command first-line offset display issue
|
|
39
|
+
|
|
40
|
+
Miscellaneous
|
|
41
|
+
|
|
42
|
+
- Removed offers metadata from HTML
|
|
43
|
+
- Sorted package.json scripts
|
|
44
|
+
- Synced documentation across codebase
|
|
45
|
+
|
|
46
|
+
### Patch Changes
|
|
47
|
+
|
|
48
|
+
- Updated dependencies [c6d3ea8]
|
|
49
|
+
- @ecmaos/types@0.7.0
|
|
50
|
+
|
|
3
51
|
## 0.3.1
|
|
4
52
|
|
|
5
53
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awk.d.ts","sourceRoot":"","sources":["../../src/commands/awk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AA2H/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAqN/F"}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { TerminalEvents } from '@ecmaos/types';
|
|
3
|
+
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
4
|
+
import { writelnStderr } from '../shared/helpers.js';
|
|
5
|
+
function printUsage(process, terminal) {
|
|
6
|
+
const usage = `Usage: awk [OPTION]... 'program' [FILE]...
|
|
7
|
+
Pattern scanning and text processing language.
|
|
8
|
+
|
|
9
|
+
-F, --field-separator=FS set field separator (default: whitespace)
|
|
10
|
+
-v, --assign=VAR=VAL assign variable VAR to value VAL
|
|
11
|
+
--help display this help and exit
|
|
12
|
+
|
|
13
|
+
Basic usage:
|
|
14
|
+
awk '{ print $1 }' file Print first field of each line
|
|
15
|
+
awk '/pattern/ { print }' file Print lines matching pattern
|
|
16
|
+
awk 'BEGIN { print "start" } { print } END { print "end" }' file
|
|
17
|
+
|
|
18
|
+
Variables:
|
|
19
|
+
$0 whole line
|
|
20
|
+
$1, $2, ... field numbers
|
|
21
|
+
NR record number (line number)
|
|
22
|
+
NF number of fields`;
|
|
23
|
+
writelnStderr(process, terminal, usage);
|
|
24
|
+
}
|
|
25
|
+
function parseAwkProgram(program) {
|
|
26
|
+
const result = {};
|
|
27
|
+
let beginMatch = program.match(/BEGIN\s*\{([^}]*)\}/);
|
|
28
|
+
if (beginMatch) {
|
|
29
|
+
result.begin = beginMatch[1]?.split(';').map(s => s.trim()).filter(s => s) ?? [];
|
|
30
|
+
}
|
|
31
|
+
let endMatch = program.match(/END\s*\{([^}]*)\}/);
|
|
32
|
+
if (endMatch) {
|
|
33
|
+
result.end = endMatch[1]?.split(';').map(s => s.trim()).filter(s => s) ?? [];
|
|
34
|
+
}
|
|
35
|
+
let mainMatch = program.match(/(?:BEGIN\s*\{[^}]*\})?\s*([^}]*?)\s*(?:\{([^}]*)\})?\s*(?:END\s*\{[^}]*\})?/);
|
|
36
|
+
if (!mainMatch) {
|
|
37
|
+
const simpleMatch = program.match(/\{([^}]*)\}/);
|
|
38
|
+
if (simpleMatch) {
|
|
39
|
+
result.action = simpleMatch[1]?.trim() ?? '';
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const patternPart = mainMatch[1]?.trim();
|
|
47
|
+
const actionPart = mainMatch[2]?.trim();
|
|
48
|
+
if (patternPart && !patternPart.startsWith('{')) {
|
|
49
|
+
if (patternPart.startsWith('/') && patternPart.endsWith('/')) {
|
|
50
|
+
result.pattern = patternPart.slice(1, -1);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
result.pattern = patternPart;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (actionPart) {
|
|
57
|
+
result.action = actionPart;
|
|
58
|
+
}
|
|
59
|
+
else if (!patternPart) {
|
|
60
|
+
result.action = 'print';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!result.action && !result.begin && !result.end) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
function splitFields(line, fs) {
|
|
69
|
+
if (fs === ' ') {
|
|
70
|
+
return line.trim().split(/\s+/);
|
|
71
|
+
}
|
|
72
|
+
return line.split(fs);
|
|
73
|
+
}
|
|
74
|
+
function executeAction(action, fields, line, NR, NF) {
|
|
75
|
+
if (!action || action.trim() === 'print' || action.trim() === '') {
|
|
76
|
+
return line;
|
|
77
|
+
}
|
|
78
|
+
const printMatch = action.match(/print\s+(.+)/);
|
|
79
|
+
if (printMatch) {
|
|
80
|
+
const args = printMatch[1]?.trim() ?? '';
|
|
81
|
+
const parts = args.split(',').map(s => s.trim());
|
|
82
|
+
const output = [];
|
|
83
|
+
for (const part of parts) {
|
|
84
|
+
if (part === '$0') {
|
|
85
|
+
output.push(line);
|
|
86
|
+
}
|
|
87
|
+
else if (part.match(/^\$\d+$/)) {
|
|
88
|
+
const fieldNum = parseInt(part.slice(1), 10);
|
|
89
|
+
if (fieldNum >= 1 && fieldNum <= fields.length) {
|
|
90
|
+
output.push(fields[fieldNum - 1] || '');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (part === 'NR') {
|
|
94
|
+
output.push(String(NR));
|
|
95
|
+
}
|
|
96
|
+
else if (part === 'NF') {
|
|
97
|
+
output.push(String(NF));
|
|
98
|
+
}
|
|
99
|
+
else if (part.startsWith('"') && part.endsWith('"')) {
|
|
100
|
+
output.push(part.slice(1, -1));
|
|
101
|
+
}
|
|
102
|
+
else if (part.startsWith("'") && part.endsWith("'")) {
|
|
103
|
+
output.push(part.slice(1, -1));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
output.push(part);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return output.join(' ');
|
|
110
|
+
}
|
|
111
|
+
return line;
|
|
112
|
+
}
|
|
113
|
+
export function createCommand(kernel, shell, terminal) {
|
|
114
|
+
return new TerminalCommand({
|
|
115
|
+
command: 'awk',
|
|
116
|
+
description: 'Pattern scanning and text processing language',
|
|
117
|
+
kernel,
|
|
118
|
+
shell,
|
|
119
|
+
terminal,
|
|
120
|
+
run: async (pid, argv) => {
|
|
121
|
+
const process = kernel.processes.get(pid);
|
|
122
|
+
if (!process)
|
|
123
|
+
return 1;
|
|
124
|
+
if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
|
|
125
|
+
printUsage(process, terminal);
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
let fieldSeparator = ' ';
|
|
129
|
+
const variables = {};
|
|
130
|
+
const args = [];
|
|
131
|
+
let program;
|
|
132
|
+
for (let i = 0; i < argv.length; i++) {
|
|
133
|
+
const arg = argv[i];
|
|
134
|
+
if (!arg)
|
|
135
|
+
continue;
|
|
136
|
+
if (arg === '--help' || arg === '-h') {
|
|
137
|
+
printUsage(process, terminal);
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
else if (arg === '-F' || arg === '--field-separator') {
|
|
141
|
+
if (i + 1 < argv.length) {
|
|
142
|
+
fieldSeparator = argv[++i] || ' ';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (arg.startsWith('--field-separator=')) {
|
|
146
|
+
fieldSeparator = arg.slice(18);
|
|
147
|
+
}
|
|
148
|
+
else if (arg.startsWith('-F')) {
|
|
149
|
+
fieldSeparator = arg.slice(2) || ' ';
|
|
150
|
+
}
|
|
151
|
+
else if (arg === '-v' || arg === '--assign') {
|
|
152
|
+
if (i + 1 < argv.length) {
|
|
153
|
+
const assign = argv[++i] || '';
|
|
154
|
+
const [key, ...valueParts] = assign.split('=');
|
|
155
|
+
if (key) {
|
|
156
|
+
variables[key] = valueParts.join('=');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else if (arg.startsWith('--assign=')) {
|
|
161
|
+
const assign = arg.slice(9);
|
|
162
|
+
const [key, ...valueParts] = assign.split('=');
|
|
163
|
+
if (key) {
|
|
164
|
+
variables[key] = valueParts.join('=');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if (arg.startsWith('-v')) {
|
|
168
|
+
const assign = arg.slice(2);
|
|
169
|
+
const [key, ...valueParts] = assign.split('=');
|
|
170
|
+
if (key) {
|
|
171
|
+
variables[key] = valueParts.join('=');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
else if (!arg.startsWith('-')) {
|
|
175
|
+
if (!program && (arg.startsWith("'") || arg.startsWith('"'))) {
|
|
176
|
+
program = arg.slice(1, -1);
|
|
177
|
+
}
|
|
178
|
+
else if (!program) {
|
|
179
|
+
program = arg;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
args.push(arg);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (!program) {
|
|
187
|
+
await writelnStderr(process, terminal, 'awk: program is required');
|
|
188
|
+
await writelnStderr(process, terminal, "Try 'awk --help' for more information.");
|
|
189
|
+
return 1;
|
|
190
|
+
}
|
|
191
|
+
const parsedProgram = parseAwkProgram(program);
|
|
192
|
+
if (!parsedProgram) {
|
|
193
|
+
await writelnStderr(process, terminal, 'awk: invalid program');
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
const writer = process.stdout.getWriter();
|
|
197
|
+
try {
|
|
198
|
+
let lines = [];
|
|
199
|
+
if (args.length === 0) {
|
|
200
|
+
if (!process.stdin) {
|
|
201
|
+
return 0;
|
|
202
|
+
}
|
|
203
|
+
const reader = process.stdin.getReader();
|
|
204
|
+
const decoder = new TextDecoder();
|
|
205
|
+
let buffer = '';
|
|
206
|
+
try {
|
|
207
|
+
while (true) {
|
|
208
|
+
const { done, value } = await reader.read();
|
|
209
|
+
if (done)
|
|
210
|
+
break;
|
|
211
|
+
if (value) {
|
|
212
|
+
buffer += decoder.decode(value, { stream: true });
|
|
213
|
+
const newLines = buffer.split('\n');
|
|
214
|
+
buffer = newLines.pop() || '';
|
|
215
|
+
lines.push(...newLines);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (buffer) {
|
|
219
|
+
lines.push(buffer);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
reader.releaseLock();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
for (const file of args) {
|
|
228
|
+
const fullPath = path.resolve(shell.cwd, file);
|
|
229
|
+
let interrupted = false;
|
|
230
|
+
const interruptHandler = () => { interrupted = true; };
|
|
231
|
+
kernel.terminal.events.on(TerminalEvents.INTERRUPT, interruptHandler);
|
|
232
|
+
try {
|
|
233
|
+
if (fullPath.startsWith('/dev')) {
|
|
234
|
+
await writelnStderr(process, terminal, `awk: ${file}: cannot process device files`);
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
const handle = await shell.context.fs.promises.open(fullPath, 'r');
|
|
238
|
+
const stat = await shell.context.fs.promises.stat(fullPath);
|
|
239
|
+
const decoder = new TextDecoder();
|
|
240
|
+
let content = '';
|
|
241
|
+
let bytesRead = 0;
|
|
242
|
+
const chunkSize = 1024;
|
|
243
|
+
while (bytesRead < stat.size) {
|
|
244
|
+
if (interrupted)
|
|
245
|
+
break;
|
|
246
|
+
const data = new Uint8Array(chunkSize);
|
|
247
|
+
const readSize = Math.min(chunkSize, stat.size - bytesRead);
|
|
248
|
+
await handle.read(data, 0, readSize, bytesRead);
|
|
249
|
+
const chunk = data.subarray(0, readSize);
|
|
250
|
+
content += decoder.decode(chunk, { stream: true });
|
|
251
|
+
bytesRead += readSize;
|
|
252
|
+
}
|
|
253
|
+
const fileLines = content.split('\n');
|
|
254
|
+
if (fileLines[fileLines.length - 1] === '') {
|
|
255
|
+
fileLines.pop();
|
|
256
|
+
}
|
|
257
|
+
lines.push(...fileLines);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
await writelnStderr(process, terminal, `awk: ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
261
|
+
}
|
|
262
|
+
finally {
|
|
263
|
+
kernel.terminal.events.off(TerminalEvents.INTERRUPT, interruptHandler);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (parsedProgram.begin) {
|
|
268
|
+
for (const stmt of parsedProgram.begin) {
|
|
269
|
+
if (stmt.trim() === 'print' || stmt.trim().startsWith('print ')) {
|
|
270
|
+
const output = executeAction(stmt, [], '', 0, 0);
|
|
271
|
+
if (output) {
|
|
272
|
+
await writer.write(new TextEncoder().encode(output + '\n'));
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
let NR = 0;
|
|
278
|
+
for (const line of lines) {
|
|
279
|
+
NR++;
|
|
280
|
+
const fields = splitFields(line, fieldSeparator);
|
|
281
|
+
const NF = fields.length;
|
|
282
|
+
let shouldProcess = true;
|
|
283
|
+
if (parsedProgram.pattern) {
|
|
284
|
+
try {
|
|
285
|
+
const regex = new RegExp(parsedProgram.pattern);
|
|
286
|
+
shouldProcess = regex.test(line);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
shouldProcess = false;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (shouldProcess && parsedProgram.action) {
|
|
293
|
+
const output = executeAction(parsedProgram.action, fields, line, NR, NF);
|
|
294
|
+
if (output !== null) {
|
|
295
|
+
await writer.write(new TextEncoder().encode(output + '\n'));
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else if (shouldProcess && !parsedProgram.action && !parsedProgram.pattern) {
|
|
299
|
+
await writer.write(new TextEncoder().encode(line + '\n'));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (parsedProgram.end) {
|
|
303
|
+
for (const stmt of parsedProgram.end) {
|
|
304
|
+
if (stmt.trim() === 'print' || stmt.trim().startsWith('print ')) {
|
|
305
|
+
const output = executeAction(stmt, [], '', NR + 1, 0);
|
|
306
|
+
if (output) {
|
|
307
|
+
await writer.write(new TextEncoder().encode(output + '\n'));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return 0;
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
await writelnStderr(process, terminal, `awk: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
316
|
+
return 1;
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
writer.releaseLock();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=awk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awk.js","sourceRoot":"","sources":["../../src/commands/awk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Kernel, Shell, Terminal } from '@ecmaos/types';
|
|
2
|
+
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
3
|
+
export declare function createCommand(kernel: Kernel, shell: Shell, terminal: Terminal): TerminalCommand;
|
|
4
|
+
//# sourceMappingURL=chgrp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chgrp.d.ts","sourceRoot":"","sources":["../../src/commands/chgrp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAQ,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AA2F/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAsH/F"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
4
|
+
import { writelnStderr, writelnStdout } from '../shared/helpers.js';
|
|
5
|
+
function printUsage(process, terminal) {
|
|
6
|
+
const usage = `Usage: chgrp [OPTION]... GROUP FILE...
|
|
7
|
+
or: chgrp [OPTION]... --reference=RFILE FILE...
|
|
8
|
+
Change the group of each FILE to GROUP.
|
|
9
|
+
|
|
10
|
+
-R, --recursive operate on files and directories recursively
|
|
11
|
+
-v, --verbose output a diagnostic for every file processed
|
|
12
|
+
-c, --changes like verbose but report only when a change is made
|
|
13
|
+
--help display this help and exit
|
|
14
|
+
|
|
15
|
+
GROUP can be specified as:
|
|
16
|
+
- A numeric group ID (GID)
|
|
17
|
+
- A group name (resolved to GID, if supported)
|
|
18
|
+
|
|
19
|
+
Examples:
|
|
20
|
+
chgrp users file Change group of file to users
|
|
21
|
+
chgrp -R users /dir Recursively change group
|
|
22
|
+
chgrp -v 100 file Verbose output while changing group
|
|
23
|
+
chgrp -c users file Report only when changes are made`;
|
|
24
|
+
writelnStderr(process, terminal, usage);
|
|
25
|
+
}
|
|
26
|
+
function resolveGroup(groupSpec, kernel) {
|
|
27
|
+
const numericGid = parseInt(groupSpec, 10);
|
|
28
|
+
if (!isNaN(numericGid) && numericGid.toString() === groupSpec) {
|
|
29
|
+
return numericGid;
|
|
30
|
+
}
|
|
31
|
+
const user = Array.from(kernel.users.all.values()).find((u) => u.username === groupSpec);
|
|
32
|
+
if (user) {
|
|
33
|
+
return user.gid;
|
|
34
|
+
}
|
|
35
|
+
throw new Error(`Invalid group: ${groupSpec}`);
|
|
36
|
+
}
|
|
37
|
+
async function processFile(fs, filePath, groupId, options, process, terminal, relativePath) {
|
|
38
|
+
try {
|
|
39
|
+
const stats = await fs.stat(filePath);
|
|
40
|
+
const currentGid = stats.gid;
|
|
41
|
+
const changed = currentGid !== groupId;
|
|
42
|
+
if (changed) {
|
|
43
|
+
await fs.chown(filePath, stats.uid, groupId);
|
|
44
|
+
}
|
|
45
|
+
if (options.verbose || (options.changes && changed)) {
|
|
46
|
+
const changeInfo = changed
|
|
47
|
+
? `changed group of '${relativePath}' from ${currentGid} to ${groupId}`
|
|
48
|
+
: `group of '${relativePath}' retained as ${groupId}`;
|
|
49
|
+
await writelnStdout(process, terminal, changeInfo);
|
|
50
|
+
}
|
|
51
|
+
if (options.recursive) {
|
|
52
|
+
try {
|
|
53
|
+
if (stats.isDirectory()) {
|
|
54
|
+
const entries = await fs.readdir(filePath);
|
|
55
|
+
for (const entry of entries) {
|
|
56
|
+
const entryPath = path.join(filePath, entry);
|
|
57
|
+
const entryRelativePath = path.join(relativePath, entry);
|
|
58
|
+
await processFile(fs, entryPath, groupId, options, process, terminal, entryRelativePath);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
64
|
+
await writelnStderr(process, terminal, `chgrp: ${relativePath}: ${errorMessage}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
71
|
+
await writelnStderr(process, terminal, `chgrp: ${relativePath}: ${errorMessage}`);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function createCommand(kernel, shell, terminal) {
|
|
76
|
+
return new TerminalCommand({
|
|
77
|
+
command: 'chgrp',
|
|
78
|
+
description: 'Change file group ownership',
|
|
79
|
+
kernel,
|
|
80
|
+
shell,
|
|
81
|
+
terminal,
|
|
82
|
+
run: async (pid, argv) => {
|
|
83
|
+
const process = kernel.processes.get(pid);
|
|
84
|
+
if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
|
|
85
|
+
printUsage(process, terminal);
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
let recursive = false;
|
|
89
|
+
let verbose = false;
|
|
90
|
+
let changes = false;
|
|
91
|
+
let referenceFile;
|
|
92
|
+
const args = [];
|
|
93
|
+
for (let i = 0; i < argv.length; i++) {
|
|
94
|
+
const arg = argv[i];
|
|
95
|
+
if (!arg)
|
|
96
|
+
continue;
|
|
97
|
+
if (arg === '--help' || arg === '-h') {
|
|
98
|
+
printUsage(process, terminal);
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
101
|
+
else if (arg === '-R' || arg === '--recursive') {
|
|
102
|
+
recursive = true;
|
|
103
|
+
}
|
|
104
|
+
else if (arg === '-v' || arg === '--verbose') {
|
|
105
|
+
verbose = true;
|
|
106
|
+
}
|
|
107
|
+
else if (arg === '-c' || arg === '--changes') {
|
|
108
|
+
changes = true;
|
|
109
|
+
}
|
|
110
|
+
else if (arg === '--reference') {
|
|
111
|
+
if (i + 1 < argv.length) {
|
|
112
|
+
referenceFile = argv[++i];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if (arg.startsWith('--reference=')) {
|
|
116
|
+
referenceFile = arg.slice(12);
|
|
117
|
+
}
|
|
118
|
+
else if (arg.startsWith('-')) {
|
|
119
|
+
const flags = arg.slice(1).split('');
|
|
120
|
+
if (flags.includes('R'))
|
|
121
|
+
recursive = true;
|
|
122
|
+
if (flags.includes('v'))
|
|
123
|
+
verbose = true;
|
|
124
|
+
if (flags.includes('c'))
|
|
125
|
+
changes = true;
|
|
126
|
+
const invalidFlags = flags.filter(f => !['R', 'v', 'c'].includes(f));
|
|
127
|
+
if (invalidFlags.length > 0) {
|
|
128
|
+
await writelnStderr(process, terminal, `chgrp: invalid option -- '${invalidFlags[0]}'`);
|
|
129
|
+
await writelnStderr(process, terminal, "Try 'chgrp --help' for more information.");
|
|
130
|
+
return 1;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
args.push(arg);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (args.length === 0) {
|
|
138
|
+
await writelnStderr(process, terminal, chalk.red('chgrp: missing operand'));
|
|
139
|
+
await writelnStderr(process, terminal, "Try 'chgrp --help' for more information.");
|
|
140
|
+
return 1;
|
|
141
|
+
}
|
|
142
|
+
let groupId;
|
|
143
|
+
if (referenceFile) {
|
|
144
|
+
const refPath = path.resolve(shell.cwd, referenceFile);
|
|
145
|
+
try {
|
|
146
|
+
const stats = await shell.context.fs.promises.stat(refPath);
|
|
147
|
+
groupId = stats.gid;
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
await writelnStderr(process, terminal, `chgrp: cannot access ${referenceFile}: ${error instanceof Error ? error.message : String(error)}`);
|
|
151
|
+
return 1;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
const groupSpec = args[0];
|
|
156
|
+
if (!groupSpec) {
|
|
157
|
+
await writelnStderr(process, terminal, chalk.red('chgrp: missing operand'));
|
|
158
|
+
await writelnStderr(process, terminal, "Try 'chgrp --help' for more information.");
|
|
159
|
+
return 1;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
groupId = resolveGroup(groupSpec, kernel);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
await writelnStderr(process, terminal, `chgrp: ${error instanceof Error ? error.message : String(error)}`);
|
|
166
|
+
return 1;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const targets = referenceFile ? args : args.slice(1);
|
|
170
|
+
if (targets.length === 0) {
|
|
171
|
+
await writelnStderr(process, terminal, chalk.red('chgrp: missing operand'));
|
|
172
|
+
await writelnStderr(process, terminal, "Try 'chgrp --help' for more information.");
|
|
173
|
+
return 1;
|
|
174
|
+
}
|
|
175
|
+
let hasError = false;
|
|
176
|
+
for (const target of targets) {
|
|
177
|
+
const fullPath = path.resolve(shell.cwd, target);
|
|
178
|
+
const error = await processFile(shell.context.fs.promises, fullPath, groupId, { recursive, verbose, changes }, process, terminal, target);
|
|
179
|
+
if (error) {
|
|
180
|
+
hasError = true;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return hasError ? 1 : 0;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=chgrp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chgrp.js","sourceRoot":"","sources":["../../src/commands/chgrp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chmod.d.ts","sourceRoot":"","sources":["../../src/commands/chmod.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"chmod.d.ts","sourceRoot":"","sources":["../../src/commands/chmod.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAqJ/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAuD/F"}
|