notedux 1.0.10 → 1.0.11

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.
Files changed (2) hide show
  1. package/notedux +127 -35
  2. package/package.json +2 -5
package/notedux CHANGED
@@ -11,11 +11,96 @@
11
11
  CONFIG_FILE="$HOME/.notedux.conf"
12
12
  API="https://notedux.com/api/note"
13
13
 
14
+ # -------------------------
15
+ # Platform / dependency check
16
+ # -------------------------
17
+
18
+ # Detects OS and picks a clipboard command. Exits with a helpful message
19
+ # if something required is missing.
20
+ check_compatibility() {
21
+
22
+ OS_NAME="$(uname -s)"
23
+
24
+ case "$OS_NAME" in
25
+ Darwin)
26
+ PLATFORM="mac"
27
+ ;;
28
+ Linux)
29
+ PLATFORM="linux"
30
+ ;;
31
+ *)
32
+ echo "Error: unsupported operating system ($OS_NAME)."
33
+ echo "Notedux CLI supports macOS and Linux only."
34
+ exit 1
35
+ ;;
36
+ esac
37
+
38
+ # curl is required everywhere
39
+ if ! command -v curl &>/dev/null; then
40
+ echo "Error: 'curl' is required but not installed."
41
+ case "$PLATFORM" in
42
+ mac)
43
+ echo "Install it with: brew install curl"
44
+ ;;
45
+ linux)
46
+ echo "Install it with your package manager, e.g.:"
47
+ echo " sudo apt install curl (Debian/Ubuntu)"
48
+ echo " sudo dnf install curl (Fedora)"
49
+ echo " sudo pacman -S curl (Arch)"
50
+ ;;
51
+ esac
52
+ exit 1
53
+ fi
54
+
55
+ # Clipboard tool: pick the first available one per platform.
56
+ CLIPBOARD_CMD=""
57
+
58
+ if [ "$PLATFORM" = "mac" ]; then
59
+ if command -v pbcopy &>/dev/null; then
60
+ CLIPBOARD_CMD="pbcopy"
61
+ fi
62
+ else
63
+ if command -v xclip &>/dev/null; then
64
+ CLIPBOARD_CMD="xclip -selection clipboard"
65
+ elif command -v xsel &>/dev/null; then
66
+ CLIPBOARD_CMD="xsel --clipboard --input"
67
+ elif command -v wl-copy &>/dev/null; then
68
+ CLIPBOARD_CMD="wl-copy"
69
+ fi
70
+ fi
71
+
72
+ # No clipboard tool found - warn once, don't block usage.
73
+ if [ -z "$CLIPBOARD_CMD" ]; then
74
+ CLIPBOARD_WARNED=1
75
+ if [ "$PLATFORM" = "mac" ]; then
76
+ echo "Warning: 'pbcopy' not found. Links will not be copied to clipboard."
77
+ else
78
+ echo "Warning: no clipboard tool found (xclip, xsel, or wl-copy)."
79
+ echo "Links will not be copied to clipboard. Install one with, e.g.:"
80
+ echo " sudo apt install xclip (Debian/Ubuntu, X11)"
81
+ echo " sudo dnf install xclip (Fedora, X11)"
82
+ echo " sudo pacman -S xclip (Arch, X11)"
83
+ echo " sudo apt install wl-clipboard (Wayland)"
84
+ fi
85
+ fi
86
+ }
87
+
88
+ # Copies stdin to the clipboard using whatever tool was detected.
89
+ # Silently does nothing if no clipboard tool is available.
90
+ copy_to_clipboard() {
91
+ if [ -n "$CLIPBOARD_CMD" ]; then
92
+ eval "$CLIPBOARD_CMD"
93
+ else
94
+ cat >/dev/null
95
+ fi
96
+ }
97
+
98
+
14
99
  show_help() {
15
100
  cat <<EOF
16
101
 
17
102
  Notedux CLI - Command-line client for the Notedux service (notedux.com).
18
- Version 1.0.10
103
+ Version 1.0.11
19
104
  Copyright (C) 2026 Dejan Sabados
20
105
  Licensed under the GNU GPL v3 or later.
21
106
  This program comes with ABSOLUTELY NO WARRANTY.
@@ -44,7 +129,7 @@ Examples:
44
129
  notedux generate
45
130
  notedux add "Do one thing and do it well."
46
131
  notedux show
47
- notedux dell 3
132
+ notedux del 3
48
133
 
49
134
  EOF
50
135
  }
@@ -149,13 +234,17 @@ show_note() {
149
234
  echo ""
150
235
  HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
151
236
  RESPONSE=$(echo "$RESPONSE" | sed '$d')
152
-
237
+
153
238
  LINK=$(grep -i '^x-note-link:' "$HEADERS" | cut -d' ' -f2- | tr -d '\r')
154
239
  if [ "$HTTP_CODE" == "200" ]; then
155
240
  echo "$RESPONSE"| nl -ba
156
241
  echo ""
157
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
158
- echo "$LINK" | pbcopy
242
+ echo "$LINK" | copy_to_clipboard
243
+ if [ -n "$CLIPBOARD_CMD" ]; then
244
+ echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
245
+ else
246
+ echo -e "Link: \033[1;34m$LINK\033[0m"
247
+ fi
159
248
  else
160
249
  echo "$RESPONSE"
161
250
  echo ""
@@ -190,8 +279,12 @@ add_note() {
190
279
  echo ""
191
280
  LINK="https://notedux.com/n/$TOKEN"
192
281
  if [ "$HTTP_CODE" = "200" ]; then
193
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
194
- echo "$LINK" | pbcopy
282
+ echo "$LINK" | copy_to_clipboard
283
+ if [ -n "$CLIPBOARD_CMD" ]; then
284
+ echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
285
+ else
286
+ echo -e "Link: \033[1;34m$LINK\033[0m"
287
+ fi
195
288
  fi
196
289
  }
197
290
 
@@ -221,8 +314,12 @@ set_note() {
221
314
  echo ""
222
315
  LINK="https://notedux.com/n/$TOKEN"
223
316
  if [ "$HTTP_CODE" = "200" ]; then
224
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
225
- echo "$LINK" | pbcopy
317
+ echo "$LINK" | copy_to_clipboard
318
+ if [ -n "$CLIPBOARD_CMD" ]; then
319
+ echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
320
+ else
321
+ echo -e "Link: \033[1;34m$LINK\033[0m"
322
+ fi
226
323
  fi
227
324
  ;;
228
325
  *)
@@ -252,8 +349,12 @@ delete_all() {
252
349
  echo ""
253
350
  LINK="https://notedux.com/n/$TOKEN"
254
351
  if [ "$HTTP_CODE" = "200" ]; then
255
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
256
- echo "$LINK" | pbcopy
352
+ echo "$LINK" | copy_to_clipboard
353
+ if [ -n "$CLIPBOARD_CMD" ]; then
354
+ echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
355
+ else
356
+ echo -e "Link: \033[1;34m$LINK\033[0m"
357
+ fi
257
358
  fi
258
359
  ;;
259
360
  *)
@@ -263,24 +364,6 @@ delete_all() {
263
364
  }
264
365
 
265
366
 
266
- delete_last() {
267
-
268
- if ! confirm "Delete last line"; then
269
- echo "Cancelled."
270
- exit
271
- fi
272
-
273
-
274
- RESPONSE=$(curl -s -X POST "$API/dellast" \
275
- --data-urlencode "token=$TOKEN")
276
-
277
- echo "$RESPONSE"
278
- # get and show the link to the note
279
- LINK=$(echo "$RESPONSE" | grep -o '"link"[ ]*:[ ]*"[^"]*"' | sed 's/.*:\s*"//;s/"//')
280
- echo "$LINK" | pbcopy
281
- echo -e "\033[1;34m$LINK\033[0m"
282
- echo "Copied to clipboard."
283
- }
284
367
  delete_last() {
285
368
 
286
369
  read -p "Delete last line. Are you sure ? [y/N] " answer
@@ -300,8 +383,12 @@ delete_last() {
300
383
  echo ""
301
384
  LINK="https://notedux.com/n/$TOKEN"
302
385
  if [ "$HTTP_CODE" = "200" ]; then
303
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
304
- echo "$LINK" | pbcopy
386
+ echo "$LINK" | copy_to_clipboard
387
+ if [ -n "$CLIPBOARD_CMD" ]; then
388
+ echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
389
+ else
390
+ echo -e "Link: \033[1;34m$LINK\033[0m"
391
+ fi
305
392
  fi
306
393
  ;;
307
394
  *)
@@ -311,11 +398,11 @@ delete_last() {
311
398
  }
312
399
 
313
400
  delete_line() {
314
-
401
+
315
402
  NUMBER="$1"
316
403
  if [ -z "$NUMBER" ]; then
317
404
  echo "Error: line number required."
318
- echo "Usage: notedux dell <number>"
405
+ echo "Usage: notedux del <number>"
319
406
  exit 1
320
407
  fi
321
408
  read -p "Delete line $NUMBER. Are you sure ? [y/N] " answer
@@ -336,8 +423,12 @@ delete_line() {
336
423
  echo ""
337
424
  LINK="https://notedux.com/n/$TOKEN"
338
425
  if [ "$HTTP_CODE" = "200" ]; then
339
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
340
- echo "$LINK" | pbcopy
426
+ echo "$LINK" | copy_to_clipboard
427
+ if [ -n "$CLIPBOARD_CMD" ]; then
428
+ echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
429
+ else
430
+ echo -e "Link: \033[1;34m$LINK\033[0m"
431
+ fi
341
432
  fi
342
433
  ;;
343
434
  *)
@@ -352,6 +443,7 @@ delete_line() {
352
443
  # MAIN
353
444
  # -------------------------
354
445
 
446
+ check_compatibility
355
447
 
356
448
  load_config
357
449
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "notedux",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "Take notes from terminal",
5
5
  "bin": {
6
6
  "notedux": "notedux"
@@ -17,8 +17,5 @@
17
17
  ],
18
18
  "author": "Dejan Sabados",
19
19
  "license": "GPL-2.0-only",
20
- "preferGlobal": true,
21
- "dependencies": {
22
- "notedux": "^1.0.8"
23
- }
20
+ "preferGlobal": true
24
21
  }