@@ -2,32 +2,74 @@ import * as vscode from "vscode";
22
33import { WebVue } from "./panels/WebVue" ;
44import VSCodeLogFileTransport from "./services/logging/vsCodeLogFileTransport" ;
5- import { logger } from "./services/logging.service" ;
5+ import { createChildLogger , logger } from "./services/logging.service" ;
66import dayjs from "dayjs" ;
77import RelativeTime from "dayjs/plugin/relativeTime" ;
88import { setupGit } from "./services/git.service" ;
9+ import { execSync } from "child_process" ;
10+ import { GIT_DOWNLOAD_URL } from "./config" ;
911
1012dayjs . extend ( RelativeTime ) ;
1113
14+ const localLogger = createChildLogger ( "Registration" ) ;
15+
1216/** Set up the addon manager by registering its commands in VS Code */
1317export async function activate ( context : vscode . ExtensionContext ) {
14- const setupPromises = [ ] ;
15- // Register commands
16- context . subscriptions . push (
17- vscode . commands . registerCommand ( "lua.addon_manager.open" , ( ) => {
18- Promise . allSettled ( setupPromises )
19- . then ( ( ) => WebVue . render ( context ) )
20- . catch ( ( e ) => logger . error ( e ) ) ;
21- } )
22- ) ;
23- // Create log file transport and add to logger
24- const fileLogger = new VSCodeLogFileTransport ( context . logUri , {
25- level : "debug" ,
26- } ) ;
27- const promiseFilelogger = await fileLogger . init ( ) ;
28- context . subscriptions . push ( promiseFilelogger ) ;
29- logger . add ( fileLogger ) ;
30- await fileLogger . logStart ( ) ;
31-
32- setupPromises . push ( setupGit ( context ) ) ;
18+ const globalConfig = vscode . workspace . getConfiguration ( "Lua.addonManager" ) ;
19+ const isEnabled = globalConfig . get ( "enable" ) as boolean ;
20+
21+ if ( ! isEnabled ) {
22+ localLogger . warn ( "Addon manager has been disabled" ) ;
23+ return ;
24+ }
25+
26+ try {
27+ execSync ( "git --version" ) ;
28+ } catch ( e ) {
29+ vscode . window
30+ . showErrorMessage (
31+ "Git does not appear to be installed. Please install Git to use the addon manager" ,
32+ "Disable Addon Manager" ,
33+ "Visit Git Website"
34+ )
35+ . then ( ( result ) => {
36+ switch ( result ) {
37+ case "Disable Addon Manager" :
38+ globalConfig . update ( "enable" , false , vscode . ConfigurationTarget . Global ) ;
39+ break ;
40+ case "Visit Git Website" :
41+ vscode . env . openExternal (
42+ vscode . Uri . parse ( GIT_DOWNLOAD_URL )
43+ ) ;
44+ break ;
45+ default :
46+ break ;
47+ }
48+ } ) ;
49+ return ;
50+ }
51+
52+ try {
53+ const setupPromises = [ ] ;
54+ // Register commands
55+ context . subscriptions . push (
56+ vscode . commands . registerCommand ( "lua.addon_manager.open" , ( ) => {
57+ Promise . allSettled ( setupPromises )
58+ . then ( ( ) => WebVue . render ( context ) )
59+ . catch ( ( e ) => logger . error ( e ) ) ;
60+ } )
61+ ) ;
62+ // Create log file transport and add to logger
63+ const fileLogger = new VSCodeLogFileTransport ( context . logUri , {
64+ level : "debug" ,
65+ } ) ;
66+ const promiseFilelogger = await fileLogger . init ( ) ;
67+ context . subscriptions . push ( promiseFilelogger ) ;
68+ logger . add ( fileLogger ) ;
69+ await fileLogger . logStart ( ) ;
70+
71+ setupPromises . push ( setupGit ( context ) ) ;
72+ } catch ( e ) {
73+ localLogger . error ( `Failed to initialize addon manager | ${ e } ` ) ;
74+ }
3375}
0 commit comments