@@ -726,23 +726,18 @@ enum ShowCommands {
726726 #[ structopt( name = "user-cache-dir" ) ]
727727 /// Print the location of the default per-user cache directory
728728 UserCacheDir ( ShowUserCacheDirCommand ) ,
729-
730- /// Show metadata from the current environment
731- Metadata ( ShowMetadataCommand ) ,
732729}
733730
734731impl ShowCommand {
735732 fn customize ( & self , cc : & mut CommandCustomizations ) {
736733 match & self . command {
737734 ShowCommands :: UserCacheDir ( c) => c. customize ( cc) ,
738- ShowCommands :: Metadata ( c) => c. customize ( cc) ,
739735 }
740736 }
741737
742738 fn execute ( self , config : PersistentConfig , status : & mut dyn StatusBackend ) -> Result < i32 > {
743739 match self . command {
744740 ShowCommands :: UserCacheDir ( c) => c. execute ( config, status) ,
745- ShowCommands :: Metadata ( c) => c. execute ( config, status) ,
746741 }
747742 }
748743}
@@ -762,111 +757,3 @@ impl ShowUserCacheDirCommand {
762757 Ok ( 0 )
763758 }
764759}
765-
766- #[ derive( Debug , Eq , PartialEq , StructOpt ) ]
767- struct ShowMetadataCommand {
768- #[ structopt( help = "The metadata key to get" ) ]
769- key : String ,
770- }
771-
772-
773- fn get_metadata ( meta : & toml:: Value , mut parts : core:: str:: Split < & str > ) -> Option < String > {
774- match meta {
775- toml:: Value :: String ( _)
776- | toml:: Value :: Boolean ( _)
777- | toml:: Value :: Integer ( _)
778- | toml:: Value :: Float ( _)
779- | toml:: Value :: Datetime ( _) => {
780- if parts. next ( ) . is_some ( ) {
781- // None of these types may be indexed further
782- return None ;
783- }
784-
785- return Some ( match meta {
786- toml:: Value :: String ( s) => s. clone ( ) ,
787- toml:: Value :: Datetime ( d) => format ! ( "{}" , d) ,
788- _ => format ! ( "{}" , meta) ,
789- } ) ;
790- }
791-
792- toml:: Value :: Array ( a) => {
793- match parts. next ( ) {
794- None => return None ,
795- Some ( s) => {
796- if s == "len" {
797- // Magic key to get array length.
798- // Allows easy iteration.
799- return Some ( format ! ( "{}" , a. len( ) ) ) ;
800- } else {
801- let i: usize = match s. parse ( ) {
802- Ok ( i) => i,
803- Err ( _) => return None ,
804- } ;
805-
806- let meta = match a. get ( i) {
807- Some ( v) => v,
808- None => return None ,
809- } ;
810-
811- return get_metadata ( meta, parts) ;
812- }
813- }
814- }
815- }
816-
817- toml:: Value :: Table ( t) => {
818- match parts. next ( ) {
819- None => return None ,
820- Some ( s) => {
821- let meta = match t. get ( s) {
822- Some ( v) => v,
823- None => return None ,
824- } ;
825-
826- return get_metadata ( meta, parts) ;
827- }
828- }
829- }
830- } ;
831- }
832-
833-
834-
835- impl ShowMetadataCommand {
836- fn customize ( & self , cc : & mut CommandCustomizations ) {
837- cc. always_stderr = true ;
838- }
839-
840- fn execute ( self , _config : PersistentConfig , _status : & mut dyn StatusBackend ) -> Result < i32 > {
841- // `tectonic show metadata` should be as shell-script-friendly as possible.
842- // It should either print a value or return an error code, and produce NO OTHER OUTPUT.
843- //
844- // We return code 1 if `key` doesn't exist
845- // We return code 2 if we can't open a workspace.
846-
847- let meta = match Workspace :: open_from_environment ( ) {
848- Ok ( ws) => {
849- let doc = ws. first_document ( ) ;
850- let meta = doc. metadata . clone ( ) ;
851- if meta. is_none ( ) {
852- return Ok ( 1 ) ;
853- }
854- meta. unwrap ( )
855- }
856-
857- Err ( _) => {
858- return Ok ( 2 ) ;
859- }
860- } ;
861-
862- let parts = self . key . split ( "." ) ;
863-
864- let meta = get_metadata ( & meta, parts) ;
865- if meta. is_none ( ) {
866- return Ok ( 1 ) ;
867- }
868-
869- println ! ( "{}" , meta. unwrap( ) ) ;
870- Ok ( 0 )
871- }
872- }
0 commit comments