@@ -19,9 +19,10 @@ TM_CONVERTER := json2tm/target/release/json2tm
1919TM_USER := ~/Library/Application\ Support/TextMate/Themes
2020SUBLIME_USER := ~/Library/Application\ Support/Sublime\ Text/Packages/User
2121
22- INTELLIJDIR := intellij
2322JB_REPO_URL := https://github.com/JetBrains/colorSchemeTool
2423JB_SRC_DIR := target/colorSchemeTool
24+ INTELLIJDIR := intellij
25+ INTELLIJ_CONVERTER := $(JB_SRC_DIR ) /colorSchemeTool.py
2526
2627DEFAULT_THEMES := \
2728 $(THEMESDIR ) /oxocarbon-color-theme.json \
@@ -34,12 +35,9 @@ DEFAULT_THEMES := \
3435 $(THEMESDIR ) /oxocarbon-oled-mono-compat-color-theme.json \
3536 $(THEMESDIR ) /PRINT.json
3637
37- TEXTMATE_THEMES := $(patsubst $(THEMESDIR ) /% .json,$(TMDIR ) /% .tmTheme,$(filter-out $(THEMESDIR ) /% compat% .json,$(DEFAULT_THEMES ) ) )
38-
39- .PHONY : all build clean dotfiles help install mono-coolgray mono-warmgray \
40- PRINT zed setup-zed dotfiles-zed dotfiles-sublime install-zed install-sublime install-textmate textmate intellij
41-
42- .SECONDARY :
38+ .PHONY : all build clean dotfiles help install mono-coolgray mono-warmgray PRINT \
39+ zed setup-zed intellij setup-intellij dotfiles-zed dotfiles-sublime \
40+ install-zed install-sublime install-textmate textmate
4341
4442all : $(DEFAULT_THEMES )
4543
@@ -91,15 +89,18 @@ check-xcode:
9189 exit 1; \
9290 }
9391
94- check-jq : # # Verify jq is available
92+ check-jq :
9593 @command -v jq > /dev/null 2>&1 || { \
9694 echo " Error: jq required" ; \
9795 exit 1; \
9896 }
9997
100- zed : $(ZED_BUNDLE )
98+ check-python :
99+ @PY=$$(command -v python2.7 >/dev/null 2>&1 && echo python2.7 || (command -v python3 >/dev/null 2>&1 && echo python3 || (command -v python >/dev/null 2>&1 && echo python || echo "" ) )); \
100+ if [ -z " $$ PY" ]; then echo " Error: python3 or python required" ; exit 1; fi
101101
102102setup-zed : check-xcode $(ZED_SRC_DIR )
103+ zed : $(ZED_BUNDLE )
103104
104105$(ZED_SRC_DIR ) : | check-xcode
105106 @[ -d " $( ZED_SRC_DIR) /.git" ] || \
@@ -114,7 +115,7 @@ $(ZED_IMPORTER): | setup-zed
114115$(ZED_BUNDLE ) : check-jq setup-zed $(ZED_IMPORTER ) all | $(THEMESDIR ) $(OUTDIR )
115116 @mkdir -p $(dir $(ZED_BUNDLE ) )
116117 @echo " Converting themes for Zed..."
117- @for f in $(filter-out $(THEMESDIR ) /PRINT.json $( ZED_BUNDLE ) ,$(wildcard $(THEMESDIR ) /* .json) ) ; do \
118+ @for f in $(filter-out $(THEMESDIR ) /PRINT.json,$(wildcard $(THEMESDIR ) /* .json) ) ; do \
118119 $(ZED_IMPORTER ) $$ f --output $(OUTDIR ) /zed-$$(basename $$f) ; \
119120 done ; \
120121 jq -s ' def set_accent_and_players: \
@@ -142,7 +143,7 @@ $(ZED_BUNDLE): check-jq setup-zed $(ZED_IMPORTER) all | $(THEMESDIR) $(OUTDIR)
142143 $(OUTDIR ) /zed-* .json > $(ZED_BUNDLE )
143144 @echo " Zed theme bundle created: $( ZED_BUNDLE) "
144145
145- textmate : $(TEXTMATE_THEMES )
146+ textmate : $(foreach f, $( sort $( DEFAULT_THEMES ) $( wildcard $( THEMESDIR ) / * .json) ) , $( if $( findstring compat, $( notdir $( f ) ) ) ,, $( patsubst $( THEMESDIR ) / % .json, $( TMDIR ) / % .tmTheme, $( f ) ) ) )
146147
147148$(TM_CONVERTER ) :
148149 cargo build --release --manifest-path json2tm/Cargo.toml
@@ -151,36 +152,32 @@ $(TMDIR)/%.tmTheme: $(THEMESDIR)/%.json $(TM_CONVERTER)
151152 @mkdir -p $(dir $@ )
152153 $(TM_CONVERTER ) $< $@
153154
154- intellij : textmate
155- @echo " Converting TextMate themes to IntelliJ..."
155+ setup-intellij : check-python $(JB_SRC_DIR )
156+ intellij : $(patsubst $(THEMESDIR ) /% .json,$(INTELLIJDIR ) /% .icls,$(wildcard $(THEMESDIR ) /* .json) )
157+ @echo " IntelliJ schemes written to $( INTELLIJDIR) "
158+
159+ $(JB_SRC_DIR ) :
160+ @[ -d " $( JB_SRC_DIR) /.git" ] || \
161+ git clone --depth 1 $(JB_REPO_URL ) $(JB_SRC_DIR ) ; \
162+ git -C $(JB_SRC_DIR ) fetch --depth 1 origin master > /dev/null 2>&1 && \
163+ git -C $(JB_SRC_DIR ) reset --hard FETCH_HEAD > /dev/null 2>&1
164+
165+ $(INTELLIJ_CONVERTER ) : | setup-intellij
166+ @test -f $@ || { echo " Error: converter not found: $@ " ; exit 1; }
167+
168+ $(INTELLIJDIR ) /% .icls : $(THEMESDIR ) /% .json | setup-intellij $(INTELLIJ_CONVERTER )
169+ @mkdir -p $(dir $@ )
156170 @set -e; \
157171 PY=$$(command -v python2.7 >/dev/null 2>&1 && echo python2.7 || (command -v python3 >/dev/null 2>&1 && echo python3 || (command -v python >/dev/null 2>&1 && echo python || echo "" ) )); \
158172 if [ -z " $$ PY" ]; then echo " Error: python3 or python required" ; exit 1; fi ; \
159- @[ -d " $( JB_SRC_DIR) /.git" ] || git clone --depth 1 $(JB_REPO_URL ) $(JB_SRC_DIR ) ; \
160- git -C $(JB_SRC_DIR ) fetch --depth 1 origin master > /dev/null 2>&1 || true ; \
161- git -C $(JB_SRC_DIR ) reset --hard FETCH_HEAD > /dev/null 2>&1 || true ; \
162- mkdir -p $(INTELLIJDIR ) ; \
163- for f in $( wildcard $( TMDIR) /* .tmTheme) ; do \
164- name=$$(basename $$f .tmTheme) ; \
165- ( cd $( JB_SRC_DIR) && $$ PY colorSchemeTool.py ../..//$$ f ../..//$( INTELLIJDIR) /$$ name.icls ); \
166- done ; \
167- echo " IntelliJ schemes written to $( INTELLIJDIR) "
168-
169- clean :
170- cargo clean; rm -f $(OUTDIR ) /* .json $(THEMESDIR ) /* .json $(ZEDDIR ) /* .json $(TMDIR ) /* .tmTheme $(INTELLIJDIR ) /* .icls
173+ ( cd $( JB_SRC_DIR) && $$ PY colorSchemeTool.py ../..//$< ../..//$@ )
171174
172175dotfiles :
173176 mkdir -p $(ASSETS )
174177 cursor --list-extensions > $(EXTENSIONS )
175178 cp $(CURSOR_CFG ) /settings.json $(ASSETS ) /settings.json
176179 cp $(CURSOR_CFG ) /keybindings.json $(ASSETS ) /keybindings.json
177180
178- install : dotfiles
179- xargs -I {} cursor --install-extension {} < $(EXTENSIONS )
180- mkdir -p $(CURSOR_CFG )
181- cp $(ASSETS ) /settings.json $(CURSOR_CFG ) /
182- cp $(ASSETS ) /keybindings.json $(CURSOR_CFG ) /
183-
184181dotfiles-zed :
185182 mkdir -p $(ASSETS )
186183 cp $(ZED_CFG ) /settings.json $(ASSETS ) /settings-zed.json
@@ -189,16 +186,25 @@ dotfiles-sublime:
189186 mkdir -p $(ASSETS )
190187 cp $(SUBLIME_USER ) /Preferences.sublime-settings $(ASSETS ) /Preferences.sublime-settings
191188
192- install-zed :
189+ install : dotfiles
190+ xargs -I {} cursor --install-extension {} < $(EXTENSIONS )
191+ mkdir -p $(CURSOR_CFG )
192+ cp $(ASSETS ) /settings.json $(CURSOR_CFG ) /
193+ cp $(ASSETS ) /keybindings.json $(CURSOR_CFG ) /
194+
195+ install-zed : zed
193196 mkdir -p $(ZED_CFG ) /themes
194197 if [ -f $( ZED_BUNDLE) ]; then cp -f $( ZED_BUNDLE) $( ZED_CFG) /themes/oxocarbon.json; fi
195- if [ -f $( ASSETS) /settings-zed.json ]; then mv -f $( ASSETS) /settings-zed.json $( ZED_CFG) /settings.json; fi
198+ if [ -f $( ASSETS) /settings-zed.json ]; then cp -f $( ASSETS) /settings-zed.json $( ZED_CFG) /settings.json; fi
196199
197- install-sublime :
200+ install-sublime : textmate
198201 mkdir -p $(SUBLIME_USER )
199- cp $(TMDIR ) /* .tmTheme $(SUBLIME_USER ) /
202+ cp $(wildcard $( THEMESDIR ) /* .json) $(SUBLIME_USER ) /
200203 cp $(ASSETS ) /Preferences.sublime-settings $(SUBLIME_USER ) /Preferences.sublime-settings
201204
202- install-textmate :
205+ install-textmate : textmate
203206 mkdir -p $(TM_USER )
204- cp $(TMDIR ) /* .tmTheme $(TM_USER ) /
207+ cp $(filter-out % compat% .tmTheme,$(wildcard $(TMDIR ) /* .tmTheme) ) $(TM_USER ) /
208+
209+ clean :
210+ cargo clean; rm -f $(OUTDIR ) /* .json $(THEMESDIR ) /* .json $(ZEDDIR ) /* .json $(TMDIR ) /* .tmTheme $(INTELLIJDIR ) /* .icls
0 commit comments