notedux 1.0.9 → 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 -34
  2. package/package.json +2 -5
package/notedux CHANGED
@@ -11,10 +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).
103
+ Version 1.0.11
18
104
  Copyright (C) 2026 Dejan Sabados
19
105
  Licensed under the GNU GPL v3 or later.
20
106
  This program comes with ABSOLUTELY NO WARRANTY.
@@ -43,7 +129,7 @@ Examples:
43
129
  notedux generate
44
130
  notedux add "Do one thing and do it well."
45
131
  notedux show
46
- notedux dell 3
132
+ notedux del 3
47
133
 
48
134
  EOF
49
135
  }
@@ -148,13 +234,17 @@ show_note() {
148
234
  echo ""
149
235
  HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
150
236
  RESPONSE=$(echo "$RESPONSE" | sed '$d')
151
-
237
+
152
238
  LINK=$(grep -i '^x-note-link:' "$HEADERS" | cut -d' ' -f2- | tr -d '\r')
153
239
  if [ "$HTTP_CODE" == "200" ]; then
154
240
  echo "$RESPONSE"| nl -ba
155
241
  echo ""
156
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
157
- 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
158
248
  else
159
249
  echo "$RESPONSE"
160
250
  echo ""
@@ -189,8 +279,12 @@ add_note() {
189
279
  echo ""
190
280
  LINK="https://notedux.com/n/$TOKEN"
191
281
  if [ "$HTTP_CODE" = "200" ]; then
192
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
193
- 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
194
288
  fi
195
289
  }
196
290
 
@@ -220,8 +314,12 @@ set_note() {
220
314
  echo ""
221
315
  LINK="https://notedux.com/n/$TOKEN"
222
316
  if [ "$HTTP_CODE" = "200" ]; then
223
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
224
- 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
225
323
  fi
226
324
  ;;
227
325
  *)
@@ -251,8 +349,12 @@ delete_all() {
251
349
  echo ""
252
350
  LINK="https://notedux.com/n/$TOKEN"
253
351
  if [ "$HTTP_CODE" = "200" ]; then
254
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
255
- 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
256
358
  fi
257
359
  ;;
258
360
  *)
@@ -262,24 +364,6 @@ delete_all() {
262
364
  }
263
365
 
264
366
 
265
- delete_last() {
266
-
267
- if ! confirm "Delete last line"; then
268
- echo "Cancelled."
269
- exit
270
- fi
271
-
272
-
273
- RESPONSE=$(curl -s -X POST "$API/dellast" \
274
- --data-urlencode "token=$TOKEN")
275
-
276
- echo "$RESPONSE"
277
- # get and show the link to the note
278
- LINK=$(echo "$RESPONSE" | grep -o '"link"[ ]*:[ ]*"[^"]*"' | sed 's/.*:\s*"//;s/"//')
279
- echo "$LINK" | pbcopy
280
- echo -e "\033[1;34m$LINK\033[0m"
281
- echo "Copied to clipboard."
282
- }
283
367
  delete_last() {
284
368
 
285
369
  read -p "Delete last line. Are you sure ? [y/N] " answer
@@ -299,8 +383,12 @@ delete_last() {
299
383
  echo ""
300
384
  LINK="https://notedux.com/n/$TOKEN"
301
385
  if [ "$HTTP_CODE" = "200" ]; then
302
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
303
- 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
304
392
  fi
305
393
  ;;
306
394
  *)
@@ -310,11 +398,11 @@ delete_last() {
310
398
  }
311
399
 
312
400
  delete_line() {
313
-
401
+
314
402
  NUMBER="$1"
315
403
  if [ -z "$NUMBER" ]; then
316
404
  echo "Error: line number required."
317
- echo "Usage: notedux dell <number>"
405
+ echo "Usage: notedux del <number>"
318
406
  exit 1
319
407
  fi
320
408
  read -p "Delete line $NUMBER. Are you sure ? [y/N] " answer
@@ -335,8 +423,12 @@ delete_line() {
335
423
  echo ""
336
424
  LINK="https://notedux.com/n/$TOKEN"
337
425
  if [ "$HTTP_CODE" = "200" ]; then
338
- echo -e "Link: \033[1;34m$LINK\033[0m (Copied to clipboard.)"
339
- 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
340
432
  fi
341
433
  ;;
342
434
  *)
@@ -351,6 +443,7 @@ delete_line() {
351
443
  # MAIN
352
444
  # -------------------------
353
445
 
446
+ check_compatibility
354
447
 
355
448
  load_config
356
449
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "notedux",
3
- "version": "1.0.9",
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
  }