1- #!/usr/bin/env -S pkgx deno^2 run -A
1+ #!/usr/bin/env -S pkgx --quiet deno^2 run -A
22
33//TODO if you step into dev-dir/subdir and type `dev` does it find the root properly?
44//TODO dev off uses PWD which may not be correct if in subdir (obv)
55
66import { Path } from "libpkgx" ;
7- import shellcode from "./src/shellcode().ts" ;
7+ import shellcode , { datadir } from "./src/shellcode().ts" ;
88import app_version from "./src/app-version.ts" ;
99import integrate from "./src/integrate.ts" ;
10- import { parse } from "jsr:@std/flags " ;
10+ import { parseArgs } from "jsr:@std/cli@^1/parse-args " ;
1111import dump from "./src/dump.ts" ;
12+ import sniff from "./src/sniff.ts" ;
1213
13- const parsedArgs = parse ( Deno . args , {
14+ const parsedArgs = parseArgs ( Deno . args , {
1415 alias : {
1516 n : "dry-run" ,
1617 "just-print" : "dry-run" ,
1718 recon : "dry-run" ,
1819 v : "version" ,
1920 h : "help" ,
21+ q : "quiet" ,
2022 } ,
21- boolean : [ "help" , "version" , "shellcode" ] ,
23+ collect : [ "quiet" ] ,
24+ boolean : [ "help" , "version" , "shellcode" , "quiet" ] ,
2225 default : {
2326 "dry-run" : false ,
2427 } ,
2528} ) ;
2629
2730if ( parsedArgs . help ) {
2831 const status = await new Deno . Command ( "pkgx" , {
29- args : [ "gh" , "repo" , "view" , "pkgxdev/dev" ] ,
32+ args : [ "--quiet" , " gh", "repo" , "view" , "pkgxdev/dev" ] ,
3033 } ) . spawn ( ) . status ;
3134 Deno . exit ( status . code ) ;
3235} else if ( parsedArgs . shellcode ) {
@@ -36,16 +39,31 @@ if (parsedArgs.help) {
3639} else {
3740 const subcommand = parsedArgs . _ [ 0 ] ;
3841 const dryrun = parsedArgs [ "dry-run" ] as boolean ;
42+ const quiet = parsedArgs [ "quiet" ] != undefined ;
3943 switch ( subcommand ) {
4044 case "integrate" :
4145 await integrate ( "install" , { dryrun } ) ;
4246 break ;
4347 case "deintegrate" :
4448 await integrate ( "uninstall" , { dryrun } ) ;
4549 break ;
50+ case "status" :
51+ {
52+ const cwd = Path . cwd ( ) ;
53+ if (
54+ datadir ( ) . join ( cwd . string . slice ( 1 ) , "dev.pkgx.activated" ) . isFile ( )
55+ ) {
56+ //FIXME probably slower than necessary
57+ const { pkgs } = await sniff ( cwd ) ;
58+ Deno . exit ( pkgs . length == 0 ? 1 : 0 ) ;
59+ } else {
60+ Deno . exit ( 1 ) ;
61+ }
62+ }
63+ break ;
4664 default : {
4765 const cwd = Path . cwd ( ) . join ( subcommand as string ) ;
48- await dump ( cwd , { dryrun } ) ;
66+ await dump ( cwd , { dryrun, quiet } ) ;
4967 }
5068 }
5169}
0 commit comments