@@ -79,6 +79,9 @@ func newDiscordEnableCmd(state *commandState) *cobra.Command {
7979 if err := writeDiscordWrapper (paths .Wrapper , state .configPath ); err != nil {
8080 return newCLIError (3 , "discord enable: %w" , err )
8181 }
82+ if err := installDiscordTaglines (paths .Taglines ); err != nil {
83+ return newCLIError (3 , "discord enable: %w" , err )
84+ }
8285 if err := writeDiscordStatus (paths .Status , discordStatus {Enabled : true , Mode : mode , AppID : appID , Wrapper : paths .Wrapper }); err != nil {
8386 return newCLIError (3 , "discord enable: %w" , err )
8487 }
@@ -197,6 +200,40 @@ func writeDiscordWrapper(path, configPath string) error {
197200 return os .WriteFile (path , []byte (script ), 0o700 )
198201}
199202
203+ func installDiscordTaglines (path string ) error {
204+ source := resolveDiscordTaglinesAsset ()
205+ if source == "" {
206+ return nil
207+ }
208+ data , err := os .ReadFile (source )
209+ if err != nil {
210+ return err
211+ }
212+ if err := os .MkdirAll (filepath .Dir (path ), 0o700 ); err != nil {
213+ return err
214+ }
215+ return os .WriteFile (path , data , 0o600 )
216+ }
217+
218+ func resolveDiscordTaglinesAsset () string {
219+ filename := filepath .Join ("discord" , "taglines.toml" )
220+ var candidates []string
221+ if root := os .Getenv ("OCA_ASSETS_ROOT" ); root != "" {
222+ candidates = append (candidates , filepath .Join (root , filename ))
223+ }
224+ if exe , err := os .Executable (); err == nil {
225+ candidates = append (candidates , filepath .Join (filepath .Dir (exe ), ".." , "assets" , filename ))
226+ }
227+ candidates = append (candidates , filepath .Join ("assets" , filename ))
228+
229+ for _ , candidate := range candidates {
230+ if info , err := os .Stat (candidate ); err == nil && ! info .IsDir () {
231+ return candidate
232+ }
233+ }
234+ return ""
235+ }
236+
200237func writeDiscordStatus (path string , status discordStatus ) error {
201238 if err := os .MkdirAll (filepath .Dir (path ), 0o700 ); err != nil {
202239 return err
0 commit comments