···22.PHONY: docker-build docker-buildx docker-push docker-run docker-clean docker-shell compose-up compose-down compose-logs
3344# Binary name
55-BINARY_NAME=plcbundle
55+BINARY_NAME=plcbundle-go
66INSTALL_PATH=$(GOPATH)/bin
7788# Docker configuration
99-DOCKER_IMAGE=plcbundle
99+DOCKER_IMAGE=plcbundle-go
1010DOCKER_TAG=$(VERSION)
1111DOCKER_REGISTRY?=atscan
1212DOCKER_FULL_IMAGE=$(if $(DOCKER_REGISTRY),$(DOCKER_REGISTRY)/,)$(DOCKER_IMAGE):$(DOCKER_TAG)
···157157158158# Run Docker container as CLI
159159docker-run:
160160- @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle $(CMD)
160160+ @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go $(CMD)
161161162162# Shortcuts
163163docker-info:
164164- @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle info
164164+ @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go info
165165166166docker-fetch:
167167- @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle fetch
167167+ @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go fetch
168168169169docker-verify:
170170- @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle verify
170170+ @docker run --rm -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go verify
171171172172# Run as server
173173docker-serve:
174174- docker run --rm -it -p 8080:8080 -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle serve --host 0.0.0.0
174174+ docker run --rm -it -p 8080:8080 -v $(PWD)/data:/data $(DOCKER_FULL_IMAGE) plcbundle-go serve --host 0.0.0.0
175175176176# Open shell
177177docker-shell:
+9-9
README.md
···70707171```bash
7272# CLI tool
7373-go install tangled.org/atscan.net/plcbundle/cmd/plcbundle@latest
7373+go install tangled.org/atscan.net/plcbundle-go/cmd/plcbundle@latest
74747575# Library
7676-go get tangled.org/atscan.net/plcbundle
7676+go get tangled.org/atscan.net/plcbundle-go
7777```
78787979### Docker
···8787docker pull atscan/plcbundle:latest
88888989# Run CLI
9090-docker run --rm -v $(pwd)/data:/data atscan/plcbundle info
9090+docker run --rm -v $(pwd)/data:/data atscan/plcbundle-go info
91919292# Run as server
9393-docker run -d -p 8080:8080 -v $(pwd)/data:/data atscan/plcbundle serve --host 0.0.0.0
9393+docker run -d -p 8080:8080 -v $(pwd)/data:/data atscan/plcbundle-go serve --host 0.0.0.0
94949595# Or use docker compose
9696curl -O https://tangled.org/@atscan.net/plcbundle/raw/main/docker-compose.yaml
···111111### As a Library
112112113113```go
114114-import plcbundle "tangled.org/atscan.net/plcbundle"
114114+import plcbundle "tangled.org/atscan.net/plcbundle-go"
115115116116mgr, _ := plcbundle.New("./plc_data", "https://plc.directory")
117117defer mgr.Close()
···126126127127```bash
128128# Fetch bundles from plc.directory
129129-plcbundle sync
129129+plcbundle-go sync
130130131131# Clone from remote
132132-plcbundle clone https://plc.example.com
132132+plcbundle-go clone https://plc.example.com
133133134134# Verify integrity
135135-plcbundle verify
135135+plcbundle-go verify
136136```
137137138138[See full CLI reference →](./docs/cli.md)
···141141142142```bash
143143# CLI usage
144144-docker run --rm -v $(pwd)/data:/data plcbundle info
144144+docker run --rm -v $(pwd)/data:/data plcbundle-go info
145145146146# Server mode
147147docker-compose up -d
+1-1
bundle.go
···44 "context"
55 "io"
6677- "tangled.org/atscan.net/plcbundle/bundle"
77+ "tangled.org/atscan.net/plcbundle-go/bundle"
88)
991010// Manager is the main entry point for plcbundle operations
···99 "sync"
1010 "time"
11111212- "tangled.org/atscan.net/plcbundle/internal/bundleindex"
1212+ "tangled.org/atscan.net/plcbundle-go/internal/bundleindex"
1313)
14141515// ScanDirectory scans the bundle directory and rebuilds the index
···15151616 "github.com/goccy/go-json"
1717 "github.com/spf13/cobra"
1818- "tangled.org/atscan.net/plcbundle/cmd/plcbundle/ui"
1919- "tangled.org/atscan.net/plcbundle/detector"
2020- "tangled.org/atscan.net/plcbundle/internal/plcclient"
1818+ "tangled.org/atscan.net/plcbundle-go/cmd/plcbundle/ui"
1919+ "tangled.org/atscan.net/plcbundle-go/detector"
2020+ "tangled.org/atscan.net/plcbundle-go/internal/plcclient"
2121)
22222323func NewDetectorCommand() *cobra.Command {
···4141 Load JavaScript detectors from .js files with a detect() function.`,
42424343 Example: ` # List available detectors
4444- plcbundle detector list
4444+ plcbundle-go detector list
45454646 # Run detector on bundles
4747- plcbundle detector run invalid_handle --bundles 1-100
4747+ plcbundle-go detector run invalid_handle --bundles 1-100
48484949 # Run with parallel processing
5050- plcbundle detector run invalid_handle --bundles 1-100 --workers 8
5050+ plcbundle-go detector run invalid_handle --bundles 1-100 --workers 8
51515252 # Run custom detector script
5353- plcbundle detector run ./my_detector.js --bundles 1-100
5353+ plcbundle-go detector run ./my_detector.js --bundles 1-100
54545555 # Run multiple detectors
5656- plcbundle detector run invalid_handle aka_spam --bundles 1-100
5656+ plcbundle-go detector run invalid_handle aka_spam --bundles 1-100
57575858 # Run all detectors
5959- plcbundle detector run all --bundles 1-100
5959+ plcbundle-go detector run all --bundles 1-100
60606161 # Filter JSONL from stdin
6262- cat ops.jsonl | plcbundle detector filter invalid_handle > clean.jsonl
6262+ cat ops.jsonl | plcbundle-go detector filter invalid_handle > clean.jsonl
63636464 # Get detector info
6565- plcbundle detector info invalid_handle`,
6565+ plcbundle-go detector info invalid_handle`,
6666 }
67676868 // Add subcommands
···8686 Long: `List all available built-in and loaded detectors`,
87878888 Example: ` # List all detectors
8989- plcbundle detector list`,
8989+ plcbundle-go detector list`,
90909191 RunE: func(cmd *cobra.Command, args []string) error {
9292 registry := detector.DefaultRegistry()
···100100 for _, d := range detectors {
101101 fmt.Printf(" %-20s %s (v%s)\n", d.Name(), d.Description(), d.Version())
102102 }
103103- fmt.Printf("\nUse 'plcbundle detector info <name>' for details\n")
103103+ fmt.Printf("\nUse 'plcbundle-go detector info <name>' for details\n")
104104105105 return nil
106106 },
···124124 Long: `Test a detector on a specific bundle and show results`,
125125126126 Example: ` # Test on bundle 42
127127- plcbundle detector test invalid_handle --bundle 42
127127+ plcbundle-go detector test invalid_handle --bundle 42
128128129129 # Verbose output with samples
130130- plcbundle detector test aka_spam --bundle 100 -v
130130+ plcbundle-go detector test aka_spam --bundle 100 -v
131131132132 # Custom confidence threshold
133133- plcbundle detector test spam_pds --bundle 50 --confidence 0.85`,
133133+ plcbundle-go detector test spam_pds --bundle 50 --confidence 0.85`,
134134135135 Args: cobra.ExactArgs(1),
136136···234234 • Special keyword 'all' to run all built-in detectors`,
235235236236 Example: ` # Run single detector
237237- plcbundle detector run invalid_handle --bundles 1-100
237237+ plcbundle-go detector run invalid_handle --bundles 1-100
238238239239 # Run with 8 parallel workers (faster)
240240- plcbundle detector run invalid_handle --bundles 1-1000 --workers 8
240240+ plcbundle-go detector run invalid_handle --bundles 1-1000 --workers 8
241241242242 # Run multiple detectors in parallel
243243- plcbundle detector run invalid_handle aka_spam --bundles 1-100 -w 4
243243+ plcbundle-go detector run invalid_handle aka_spam --bundles 1-100 -w 4
244244245245 # Run custom script
246246- plcbundle detector run ./my_detector.js --bundles 1-100
246246+ plcbundle-go detector run ./my_detector.js --bundles 1-100
247247248248 # Run all built-in detectors
249249- plcbundle detector run all --bundles 1-100 --workers 8
249249+ plcbundle-go detector run all --bundles 1-100 --workers 8
250250251251 # Save results to file
252252- plcbundle detector run all --bundles 1-100 -w 8 > results.csv
252252+ plcbundle-go detector run all --bundles 1-100 -w 8 > results.csv
253253254254 # Disable progress bar (for scripting)
255255- plcbundle detector run spam --bundles 1-100 --no-progress
255255+ plcbundle-go detector run spam --bundles 1-100 --no-progress
256256257257 # Enable profiling
258258- plcbundle detector run all --bundles 1-100 --pprof :6060`,
258258+ plcbundle-go detector run all --bundles 1-100 --pprof :6060`,
259259260260 Args: cobra.MinimumNArgs(1),
261261···344344Perfect for cleaning datasets or pre-processing.`,
345345346346 Example: ` # Filter with built-in detector
347347- cat ops.jsonl | plcbundle detector filter invalid_handle > clean.jsonl
347347+ cat ops.jsonl | plcbundle-go detector filter invalid_handle > clean.jsonl
348348349349 # Filter with custom script
350350- plcbundle export --all | plcbundle detector filter ./spam.js > clean.jsonl
350350+ plcbundle export --all | plcbundle-go detector filter ./spam.js > clean.jsonl
351351352352 # Chain multiple detectors
353353- cat ops.jsonl | plcbundle detector filter invalid_handle aka_spam > clean.jsonl
353353+ cat ops.jsonl | plcbundle-go detector filter invalid_handle aka_spam > clean.jsonl
354354355355 # Custom confidence
356356- cat ops.jsonl | plcbundle detector filter spam_pds --confidence 0.95 > clean.jsonl`,
356356+ cat ops.jsonl | plcbundle-go detector filter spam_pds --confidence 0.95 > clean.jsonl`,
357357358358 Args: cobra.MinimumNArgs(1),
359359···388388 Long: `Show detailed information about a specific detector`,
389389390390 Example: ` # Show detector info
391391- plcbundle detector info invalid_handle
392392- plcbundle detector info aka_spam`,
391391+ plcbundle-go detector info invalid_handle
392392+ plcbundle-go detector info aka_spam`,
393393394394 Args: cobra.ExactArgs(1),
395395···408408409409 fmt.Printf("Usage examples:\n")
410410 fmt.Printf(" # Test on single bundle\n")
411411- fmt.Printf(" plcbundle detector test %s --bundle 42\n\n", d.Name())
411411+ fmt.Printf(" plcbundle-go detector test %s --bundle 42\n\n", d.Name())
412412 fmt.Printf(" # Run on range and save\n")
413413- fmt.Printf(" plcbundle detector run %s --bundles 1-100 > results.csv\n\n", d.Name())
413413+ fmt.Printf(" plcbundle-go detector run %s --bundles 1-100 > results.csv\n\n", d.Name())
414414 fmt.Printf(" # Filter JSONL stream\n")
415415- fmt.Printf(" cat ops.jsonl | plcbundle detector filter %s > clean.jsonl\n\n", d.Name())
415415+ fmt.Printf(" cat ops.jsonl | plcbundle-go detector filter %s > clean.jsonl\n\n", d.Name())
416416417417 return nil
418418 },
+36-36
cmd/plcbundle/commands/did.go
···11111212 "github.com/goccy/go-json"
1313 "github.com/spf13/cobra"
1414- "tangled.org/atscan.net/plcbundle/cmd/plcbundle/ui"
1515- "tangled.org/atscan.net/plcbundle/internal/didindex"
1616- "tangled.org/atscan.net/plcbundle/internal/plcclient"
1414+ "tangled.org/atscan.net/plcbundle-go/cmd/plcbundle/ui"
1515+ "tangled.org/atscan.net/plcbundle-go/internal/didindex"
1616+ "tangled.org/atscan.net/plcbundle-go/internal/plcclient"
1717)
18181919func NewDIDCommand() *cobra.Command {
···2727require a DID index to be built for optimal performance.`,
28282929 Example: ` # Lookup all operations for a DID
3030- plcbundle did lookup did:plc:524tuhdhh3m7li5gycdn6boe
3030+ plcbundle-go did lookup did:plc:524tuhdhh3m7li5gycdn6boe
31313232 # Resolve to current DID document
3333- plcbundle did resolve did:plc:524tuhdhh3m7li5gycdn6boe
3333+ plcbundle-go did resolve did:plc:524tuhdhh3m7li5gycdn6boe
34343535 # Show complete audit log
3636- plcbundle did history did:plc:524tuhdhh3m7li5gycdn6boe
3636+ plcbundle-go did history did:plc:524tuhdhh3m7li5gycdn6boe
37373838 # Show DID statistics
3939- plcbundle did stats did:plc:524tuhdhh3m7li5gycdn6boe
3939+ plcbundle-go did stats did:plc:524tuhdhh3m7li5gycdn6boe
40404141 # Batch process from file
4242- plcbundle did batch dids.txt`,
4242+ plcbundle-go did batch dids.txt`,
4343 }
44444545 // Add subcommands
···7676Requires DID index to be built.`,
77777878 Example: ` # Lookup by DID
7979- plcbundle did lookup did:plc:524tuhdhh3m7li5gycdn6boe
7979+ plcbundle-go did lookup did:plc:524tuhdhh3m7li5gycdn6boe
80808181 # Lookup by handle
8282- plcbundle did lookup tree.fail
8383- plcbundle did lookup ngerakines.me
8282+ plcbundle-go did lookup tree.fail
8383+ plcbundle-go did lookup ngerakines.me
84848585 # With non-default handle resolver configured
8686 plcbundle --handle-resolver https://quickdid.smokesignal.tools did lookup tree.fail`,
···105105106106 stats := mgr.GetDIDIndexStats()
107107 if !stats["exists"].(bool) {
108108- fmt.Fprintf(os.Stderr, "⚠️ DID index not found. Run: plcbundle index build\n")
108108+ fmt.Fprintf(os.Stderr, "⚠️ DID index not found. Run: plcbundle-go index build\n")
109109 fmt.Fprintf(os.Stderr, " Falling back to full scan (slow)...\n\n")
110110 }
111111···175175O(1) lookup of latest operation.`,
176176177177 Example: ` # Resolve DID
178178- plcbundle did resolve did:plc:524tuhdhh3m7li5gycdn6boe
178178+ plcbundle-go did resolve did:plc:524tuhdhh3m7li5gycdn6boe
179179180180 # Show timings and other details
181181- plcbundle did resolve did:plc:524tuhdhh3m7li5gycdn6boe --verbose
181181+ plcbundle-go did resolve did:plc:524tuhdhh3m7li5gycdn6boe --verbose
182182183183 # Get raw PLC state (not W3C format)
184184- plcbundle did resolve did:plc:524tuhdhh3m7li5gycdn6boe --raw
184184+ plcbundle-go did resolve did:plc:524tuhdhh3m7li5gycdn6boe --raw
185185186186 # Pipe to jq
187187- plcbundle did resolve did:plc:524tuhdhh3m7li5gycdn6boe | jq .service
187187+ plcbundle-go did resolve did:plc:524tuhdhh3m7li5gycdn6boe | jq .service
188188189189 # Resolve by handle
190190- plcbundle did resolve tree.fail`,
190190+ plcbundle-go did resolve tree.fail`,
191191192192 Args: cobra.ExactArgs(1),
193193···272272This provides a full audit trail of all changes to the DID.`,
273273274274 Example: ` # Show full history
275275- plcbundle did history did:plc:524tuhdhh3m7li5gycdn6boe
275275+ plcbundle-go did history did:plc:524tuhdhh3m7li5gycdn6boe
276276277277 # Include nullified operations
278278- plcbundle did history did:plc:524tuhdhh3m7li5gycdn6boe --include-nullified
278278+ plcbundle-go did history did:plc:524tuhdhh3m7li5gycdn6boe --include-nullified
279279280280 # Compact one-line format
281281- plcbundle did history did:plc:524tuhdhh3m7li5gycdn6boe --compact
281281+ plcbundle-go did history did:plc:524tuhdhh3m7li5gycdn6boe --compact
282282283283 # JSON output
284284- plcbundle did history did:plc:524tuhdhh3m7li5gycdn6boe --json`,
284284+ plcbundle-go did history did:plc:524tuhdhh3m7li5gycdn6boe --json`,
285285286286 Args: cobra.ExactArgs(1),
287287···360360 - Omit file + use --stdin: reads from stdin`,
361361362362 Example: ` # Batch lookup from file
363363- plcbundle did batch dids.txt --action lookup
363363+ plcbundle-go did batch dids.txt --action lookup
364364365365 # Read from stdin
366366- cat dids.txt | plcbundle did batch --stdin --action lookup
367367- cat dids.txt | plcbundle did batch - --action resolve
366366+ cat dids.txt | plcbundle-go did batch --stdin --action lookup
367367+ cat dids.txt | plcbundle-go did batch - --action resolve
368368369369 # Export operations for DIDs from stdin
370370- echo "did:plc:524tuhdhh3m7li5gycdn6boe" | plcbundle did batch - --action export
370370+ echo "did:plc:524tuhdhh3m7li5gycdn6boe" | plcbundle-go did batch - --action export
371371372372 # Pipe results
373373- plcbundle did batch dids.txt --action resolve -o resolved.jsonl
373373+ plcbundle-go did batch dids.txt --action resolve -o resolved.jsonl
374374375375 # Parallel processing
376376- cat dids.txt | plcbundle did batch --stdin --action lookup --workers 8
376376+ cat dids.txt | plcbundle-go did batch --stdin --action lookup --workers 8
377377378378 # Chain commands
379379- grep "did:plc:" some_file.txt | plcbundle did batch - --action export > ops.jsonl`,
379379+ grep "did:plc:" some_file.txt | plcbundle-go did batch - --action export > ops.jsonl`,
380380381381 Args: cobra.MaximumNArgs(1),
382382···392392 } else if !fromStdin {
393393 return fmt.Errorf("either provide filename or use --stdin flag\n" +
394394 "Examples:\n" +
395395- " plcbundle did batch dids.txt\n" +
396396- " plcbundle did batch --stdin\n" +
397397- " cat dids.txt | plcbundle did batch -")
395395+ " plcbundle-go did batch dids.txt\n" +
396396+ " plcbundle-go did batch --stdin\n" +
397397+ " cat dids.txt | plcbundle-go did batch -")
398398 }
399399400400 mgr, _, err := getManager(&ManagerOptions{Cmd: cmd})
···441441Without DID: shows global index statistics`,
442442443443 Example: ` # Stats for specific DID
444444- plcbundle did stats did:plc:524tuhdhh3m7li5gycdn6boe
444444+ plcbundle-go did stats did:plc:524tuhdhh3m7li5gycdn6boe
445445446446 # Global index stats
447447- plcbundle did stats --global
448448- plcbundle did stats
447447+ plcbundle-go did stats --global
448448+ plcbundle-go did stats
449449450450 # JSON output
451451- plcbundle did stats did:plc:524tuhdhh3m7li5gycdn6boe --json`,
451451+ plcbundle-go did stats did:plc:524tuhdhh3m7li5gycdn6boe --json`,
452452453453 Args: cobra.MaximumNArgs(1),
454454···573573574574 if !stats["exists"].(bool) {
575575 fmt.Printf("DID index does not exist\n")
576576- fmt.Printf("Run: plcbundle index build\n")
576576+ fmt.Printf("Run: plcbundle-go index build\n")
577577 return nil
578578 }
579579
+10-10
cmd/plcbundle/commands/diff.go
···11111212 "github.com/goccy/go-json"
1313 "github.com/spf13/cobra"
1414- "tangled.org/atscan.net/plcbundle/bundle"
1515- "tangled.org/atscan.net/plcbundle/internal/bundleindex"
1616- "tangled.org/atscan.net/plcbundle/internal/plcclient"
1414+ "tangled.org/atscan.net/plcbundle-go/bundle"
1515+ "tangled.org/atscan.net/plcbundle-go/internal/bundleindex"
1616+ "tangled.org/atscan.net/plcbundle-go/internal/plcclient"
1717)
18181919func NewDiffCommand() *cobra.Command {
···4545 • Local file path (e.g., /path/to/plc_bundles.json)`,
46464747 Example: ` # High-level comparison
4848- plcbundle diff https://plc.example.com
4848+ plcbundle-go diff https://plc.example.com
49495050 # Show all differences (verbose)
5151- plcbundle diff https://plc.example.com -v
5151+ plcbundle-go diff https://plc.example.com -v
52525353 # Deep dive into specific bundle
5454- plcbundle diff https://plc.example.com --bundle 23
5454+ plcbundle-go diff https://plc.example.com --bundle 23
55555656 # Compare bundle with operation samples
5757- plcbundle diff https://plc.example.com --bundle 23 --show-operations
5757+ plcbundle-go diff https://plc.example.com --bundle 23 --show-operations
58585959 # Show first 50 operations
6060- plcbundle diff https://plc.example.com --bundle 23 --sample 50
6060+ plcbundle-go diff https://plc.example.com --bundle 23 --sample 50
61616262 # Using alias
6363- plcbundle compare https://plc.example.com`,
6363+ plcbundle-go compare https://plc.example.com`,
64646565 Args: cobra.ExactArgs(1),
6666···116116 // If there are hash mismatches, suggest deep dive
117117 if len(comparison.HashMismatches) > 0 {
118118 fmt.Printf("\n💡 Tip: Use --bundle flag to investigate specific mismatches:\n")
119119- fmt.Printf(" plcbundle diff %s --bundle %d --show-operations\n",
119119+ fmt.Printf(" plcbundle-go diff %s --bundle %d --show-operations\n",
120120 target, comparison.HashMismatches[0].BundleNumber)
121121 }
122122
···10101111 "github.com/goccy/go-json"
1212 "github.com/spf13/cobra"
1313- "tangled.org/atscan.net/plcbundle/internal/plcclient"
1414- "tangled.org/atscan.net/plcbundle/internal/types"
1313+ "tangled.org/atscan.net/plcbundle-go/internal/plcclient"
1414+ "tangled.org/atscan.net/plcbundle-go/internal/types"
1515)
16161717func NewOpCommand() *cobra.Command {
···2929Example: 88410345 = bundle 8841, position 345`,
30303131 Example: ` # Get operation as JSON
3232- plcbundle op get 42 1337
3333- plcbundle op get 420000
3232+ plcbundle-go op get 42 1337
3333+ plcbundle-go op get 420000
34343535 # Show operation (formatted)
3636- plcbundle op show 42 1337
3737- plcbundle op show 88410345
3636+ plcbundle-go op show 42 1337
3737+ plcbundle-go op show 88410345
38383939 # Find by CID
4040- plcbundle op find bafyreig3...`,
4040+ plcbundle-go op find bafyreig3...`,
4141 }
42424343 // Add subcommands
···6969Use -v/--verbose to see detailed timing breakdown.`,
70707171 Example: ` # By bundle + position
7272- plcbundle op get 42 1337
7272+ plcbundle-go op get 42 1337
73737474 # By global position
7575- plcbundle op get 88410345
7575+ plcbundle-go op get 88410345
76767777 # With timing metrics
7878- plcbundle op get 42 1337 -v
7979- plcbundle op get 88410345 --verbose
7878+ plcbundle-go op get 42 1337 -v
7979+ plcbundle-go op get 88410345 --verbose
80808181 # Pipe to jq
8282- plcbundle op get 42 1337 | jq .did`,
8282+ plcbundle-go op get 42 1337 | jq .did`,
83838484 Args: cobra.RangeArgs(1, 2),
8585···154154 • Performance metrics (with -v)`,
155155156156 Example: ` # By bundle + position
157157- plcbundle op show 42 1337
157157+ plcbundle-go op show 42 1337
158158159159 # By global position
160160- plcbundle op show 88410345
160160+ plcbundle-go op show 88410345
161161162162 # Verbose with timing and full JSON
163163- plcbundle op show 42 1337 -v`,
163163+ plcbundle-go op show 42 1337 -v`,
164164165165 Args: cobra.RangeArgs(1, 2),
166166···218218Note: This performs a full scan and can be slow on large repositories.`,
219219220220 Example: ` # Find by CID
221221- plcbundle op find bafyreig3tg4k...
221221+ plcbundle-go op find bafyreig3tg4k...
222222223223 # Pipe to op get
224224- plcbundle op find bafyreig3... | awk '{print $3, $5}' | xargs plcbundle op get`,
224224+ plcbundle-go op find bafyreig3... | awk '{print $3, $5}' | xargs plcbundle-go op get`,
225225226226 Args: cobra.ExactArgs(1),
227227
+1-1
cmd/plcbundle/commands/progress_helper.go
···11package commands
2233import (
44- "tangled.org/atscan.net/plcbundle/cmd/plcbundle/ui"
44+ "tangled.org/atscan.net/plcbundle-go/cmd/plcbundle/ui"
55)
6677// NewBundleProgressBar creates a progress bar with auto-calculated bytes from bundles
···44 "context"
55 "time"
6677- "tangled.org/atscan.net/plcbundle/internal/plcclient"
77+ "tangled.org/atscan.net/plcbundle-go/internal/plcclient"
88)
991010// BundleProvider is an interface to avoid circular dependencies
+1-1
internal/didindex/lookup.go
···66 "sort"
77 "sync"
8899- "tangled.org/atscan.net/plcbundle/internal/plcclient"
99+ "tangled.org/atscan.net/plcbundle-go/internal/plcclient"
1010)
11111212// GetDIDOperations retrieves all operations for a DID WITH location metadata
+1-1
internal/didindex/manager.go
···13131414 "github.com/goccy/go-json"
1515 "golang.org/x/sys/unix"
1616- "tangled.org/atscan.net/plcbundle/internal/plcclient"
1616+ "tangled.org/atscan.net/plcbundle-go/internal/plcclient"
1717)
18181919// NewManager creates a new DID index manager
···55 "net/http"
66 "time"
7788- "tangled.org/atscan.net/plcbundle/bundle"
88+ "tangled.org/atscan.net/plcbundle-go/bundle"
99)
10101111// New creates a new HTTP server