magarena/Makefile

995 lines
35 KiB
Makefile
Raw Normal View History

2013-11-09 17:57:06 -08:00
MIN_MEM=256M
MAX_MEM=512M
MAG:=release/Magarena.jar
EXE:=release/Magarena.exe
JAR:=release/Magarena.jar
2014-07-21 20:57:01 -07:00
JAVA=java -Xms$(MIN_MEM) -Xmx$(MAX_MEM) -noverify
2013-05-26 23:02:30 -07:00
DEBUG=$(JAVA) -ea
2014-05-05 19:28:41 -07:00
LIBS=.:lib/annotations.jar:lib/jsr305.jar:release/lib/groovy-all-*.jar
RUN=$(JAVA) -Dcom.sun.management.jmxremote -cp $(LIBS):$(MAG)
SHELL=/bin/bash
BUILD=build
SRC=$(shell find src -iname "*.java")
2013-07-16 22:31:42 -07:00
NO_OUTPUT:=awk 'BEGIN{RS="\a"}{print; exit 1}'
2011-05-22 19:23:49 -07:00
2013-02-18 01:20:00 -08:00
all: tags $(MAG) $(EXE)
zips:
make M`grep Release release/README.txt | head -1 | cut -d' ' -f2`
2011-11-15 18:11:34 -08:00
cards_diff: $(MAG)
2011-11-15 18:21:14 -08:00
for i in `hg stat -q src/magic/card release/Magarena/scripts | cut -d' ' -f2 | sort -t'/' -k4`; do hg diff $$i; done | flip -u - > $@
2011-11-15 18:11:34 -08:00
findbugs_warnings.txt: $(MAG)
2012-06-12 23:35:26 -07:00
~/App/findbugs/bin/findbugs \
2011-08-30 21:40:36 -07:00
-textui \
-progress \
-sortByClass \
-emacs \
-effort:max \
-output $@ \
-sourcepath src \
build
build_warnings.txt:
make clean all > $@
FILTER_DECKBOX := grep deckbox.org/mtg | grep -o ">[A-Z].*<" | sed 's/^>//;s/<$$//'
cards/standard_all.out:
touch $@
$(eval PAGES := $(shell curl http://deckbox.org/games/mtg/cards?f=b31 | grep -o "1 of [0-9]\+" | sed 's/1 of //' | head -1))
echo processing ${PAGES} pages
seq ${PAGES} | parallel -q -j 20 -k wget "http://deckbox.org/games/mtg/cards?f=b31&p={}" -O - | ${FILTER_DECKBOX} >> $@
cards/modern_all.out:
touch $@
$(eval PAGES := $(shell curl http://deckbox.org/games/mtg/cards?f=b35 | grep -o "1 of [0-9]\+" | sed 's/1 of //' | head -1))
echo processing ${PAGES} pages
seq ${PAGES} | parallel -q -j 20 -k wget "http://deckbox.org/games/mtg/cards?f=b35&p={}" -O - | ${FILTER_DECKBOX} >> $@
2012-08-23 06:31:54 -07:00
cards/%_all.txt: cards/%_all.out
cat $^ | sort | uniq | sed 's/Aether/Æther/' > $@
cards/new.txt: cards/existing_master.txt
2014-10-29 20:28:57 -07:00
$(eval LAST := $(shell git tag | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1 | cut -d' ' -f1))
make cards/new_$(LAST).txt
mv cards/new_$(LAST).txt $@
make wiki/UpcomingCards.md
cards/fmt.txt: cards/new.txt
cat $^ | tr " " "@" | tr "\n" "#" | sed 's/#/, /g' | sed 's/, $$//' | fmt | sed 's/@/ /g' > $@
changelog:
$(eval LAST := $(shell git tag | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1 | cut -d' ' -f1))
git log ${LAST}..master > changelog
people: changelog
grep Author: $^ | sed 's/Author:[ ]*//;s/ <.*>//' | sort | uniq | sort > $@
cards/new_%.txt: cards/existing_master.txt cards/existing_%.txt
2012-06-12 20:27:08 -07:00
join -v1 -t"|" <(sort $(word 1,$^)) <(sort $(word 2,$^)) > $@
cards/new_scripts_%.txt: release/Magarena/scripts
grep "name=" -h $$(hg diff -r $* | grep -B 1 "^--- /dev/null" | grep $^ | cut -d' ' -f4) | sed 's/name=//' > $@
flip -u $@
cards/existing_scripts_%.txt: $(wildcard release/Magarena/scripts/*.txt)
git show $*:release/Magarena/scripts \
| grep ".txt" \
| sed 's/^/$*:release\/Magarena\/scripts\//' \
| git cat-file --batch \
| grep "name=" \
| sed 's/.*name=//' \
| sort > $@
sed -i 's/\r//' $@
cards/existing_tokens_%.txt: $(wildcard release/Magarena/scripts/*.txt)
git show $*:release/Magarena/scripts \
| grep ".txt" \
| sed 's/^/$*:release\/Magarena\/scripts\//' \
| git cat-file --batch \
| awk -f scripts/extract_token_name.awk | sort > $@
cards/existing_code.txt: cards/groovy.txt
cp cards/groovy.txt $@
cards/existing_%.txt: cards/existing_scripts_%.txt cards/existing_tokens_%.txt
join -v1 -t"|" <(sort $(word 1,$^)) <(sort $(word 2,$^)) > $@
cards/groovy.txt: $(wildcard release/Magarena/scripts/*.txt)
grep -ho "name=.*" `grep requires_groovy_code -lr release/Magarena/scripts` | sed 's/name=//' | sort > $@
cards/non-groovy.txt: $(wildcard release/Magarena/scripts/*.txt)
grep -ho "name=.*" `grep requires_groovy_code -L release/Magarena/scripts/*.txt` | sed 's/name=//' | sort > $@
2013-05-10 21:44:48 -07:00
cards/unimplementable.tsv.add: cards/candidates_full.txt
grep "|" $^ | sed 's/NAME://;s/|/\t/' >> $(basename $@)
2013-05-10 21:44:48 -07:00
make $^
cards/staples.txt:
curl \
2016-08-16 01:09:38 -07:00
https://www.mtggoldfish.com/format-staples/standard/full/creatures \
https://www.mtggoldfish.com/format-staples/standard/full/lands \
https://www.mtggoldfish.com/format-staples/standard/full/spells \
https://www.mtggoldfish.com/format-staples/modern/full/creatures \
https://www.mtggoldfish.com/format-staples/modern/full/lands \
https://www.mtggoldfish.com/format-staples/modern/full/spells \
https://www.mtggoldfish.com/format-staples/pauper/full/creatures \
https://www.mtggoldfish.com/format-staples/pauper/full/lands \
https://www.mtggoldfish.com/format-staples/pauper/full/spells \
https://www.mtggoldfish.com/format-staples/legacy/full/creatures \
https://www.mtggoldfish.com/format-staples/legacy/full/lands \
https://www.mtggoldfish.com/format-staples/legacy/full/spells \
https://www.mtggoldfish.com/format-staples/vintage/full/creatures \
https://www.mtggoldfish.com/format-staples/vintage/full/lands \
https://www.mtggoldfish.com/format-staples/vintage/full/spells \
| pup ".col-card a text{}" | sed "s/&#39;/'/g;s/ (.*)//g" | sort | uniq > $@
2016-08-16 01:09:38 -07:00
cards/unknown.txt:
grep name= `grep "status=" -Lr release/Magarena/scripts_missing` -h | sed 's/name=//' | sort > $@
cards/unknown_oracle.txt:
grep oracle= `grep -L status= -r release/Magarena/scripts_missing` | sed 's/oracle=/\n/;s/release/\nrelease/' > $@
cards/unknown_%.txt:
grep oracle $$(grep -L status $$(grep /$*/ -r release/Magarena/scripts_missing/ -l)) > $@
cards/groovy_oracle.txt:
grep oracle= `grep requires_groovy_code -r release/Magarena/scripts -l` | sed 's/oracle=/\n/;s/release/\nrelease/' > $@
2016-08-16 01:09:38 -07:00
cards/staples_unknown.txt: cards/staples.txt cards/unknown.txt
join -t"|" <(sort $(word 1,$^)) <(sort $(word 2,$^)) > $@
%.out: $(MAG)
2011-06-10 23:03:02 -07:00
SGE_TASK_ID=$* exp/eval_mcts.sh
2012-08-25 07:09:10 -07:00
2016-09-09 18:07:29 -07:00
release/Magarena/themes/felt_theme.zip:
-mkdir release/Magarena/themes
2014-10-19 17:23:25 -07:00
wget https://github.com/magarena/magarena-themes/releases/download/1.0/felt_theme.zip -O $@
M1.%: clean $(EXE) release/Magarena/themes/felt_theme.zip
grep "VERSION.*1.$*" -Ir src/
grep "Release.*1.$*" release/README.txt
grep 1.$* -Ir Magarena.app/
-rm -rf Magarena-1.$*
-rm -rf Magarena-1.$*.app
-rm Magarena-1.$*.zip
2011-11-25 21:55:03 -08:00
-rm Magarena-1.$*.app.zip
2013-09-28 22:59:47 -07:00
echo "preparing Lin/Win dist"
mkdir Magarena-1.$*
2013-01-05 22:20:50 -08:00
cp -r \
2011-05-27 00:34:47 -07:00
release/gpl-3.0.html \
release/Magarena.jar \
2011-05-27 00:34:47 -07:00
release/Magarena.exe \
release/Magarena.sh \
release/README.txt \
2013-01-05 22:20:50 -08:00
release/lib \
Magarena-1.$*
mkdir Magarena-1.$*/Magarena
cp -r \
release/Magarena/avatars \
release/Magarena/decks \
release/Magarena/scripts \
release/Magarena/scripts_missing \
release/Magarena/translations \
Magarena-1.$*/Magarena
mkdir Magarena-1.$*/Magarena/mods
cp \
release/Magarena/mods/*.txt \
Magarena-1.$*/Magarena/mods
mkdir Magarena-1.$*/Magarena/themes
cp \
release/Magarena/themes/felt_theme.zip \
Magarena-1.$*/Magarena/themes
-zip -r Magarena-1.$*.zip Magarena-1.$*
2013-09-28 22:59:47 -07:00
echo "preparing Mac dist"
2013-09-30 23:09:13 -07:00
cp -r Magarena.app Magarena-1.$*.app
2013-09-30 23:11:52 -07:00
cd Magarena-1.$*.app/Contents; ln -s ../../Magarena-1.$* Java
2013-09-30 23:09:13 -07:00
chmod a+x Magarena-1.$*.app/Contents/MacOS/MagarenaLauncher.sh
-zip -r Magarena-1.$*.app.zip Magarena-1.$*.app
2011-05-27 00:34:47 -07:00
$(JAR): $(SRC)
2012-01-27 18:08:39 -08:00
ant -f build.xml
release/Magarena-%.jar:
make clean $(JAR)
mv $(JAR) $@
tags: $(SRC)
2012-03-10 01:59:23 -08:00
ctags -R src
2011-05-22 19:23:49 -07:00
%.game.run: $(MAG)
$(DEBUG) -DsaveGame=$*.game -Dmagarena.dir=`pwd`/release -jar $^ 2>&1
2012-06-11 07:25:45 -07:00
Test%.run: $(MAG)
2013-09-25 23:12:41 -07:00
$(DEBUG) -DtestGame=Test$* -Dmagarena.dir=`pwd`/release -jar $^ 2>&1 | tee Test$*.log
2019-12-28 17:55:29 -08:00
AllCardsTest.log: $(MAG)
$(DEBUG) -Dmagarena.dir=`pwd`/release -jar $^ --cardtest 2>&1 | tee $@
$(EXE): $(MAG)
cd launch4j; ./launch4j ../release/magarena.xml
2011-05-22 19:40:28 -07:00
2011-05-22 19:23:49 -07:00
clean:
-ant clean
-rm -f $(MAG)
2012-08-25 07:09:10 -07:00
clean/%: Magarena-%.zip Magarena-%.app.zip
-rm -rf Magarena-$*
-rm -rf Magarena-$*.app
-rm Magarena-$*.zip
-rm Magarena-$*.app.zip
log.clean:
-rm -f *.log
inf: $(MAG)
2013-06-01 05:15:09 -07:00
-while true; do make debug=true 0`date +%s`.t; done
circleci:
make clean $(MAG)
make debug
2014-05-31 02:04:48 -07:00
$(eval MAG_ID := $(shell date +%s))
make games=50 ai1=MMABC ai2=MCTS ${MAG_ID}.t || (cat ${MAG_ID}.out && tail -20 ${MAG_ID}.log && false)
$(eval MAG_ID := $(shell date +%s))
make games=50 ai1=MMAB ai2=MCTSC ${MAG_ID}.t || (cat ${MAG_ID}.out && tail -20 ${MAG_ID}.log && false)
make zips
mkdir /tmp/artifacts
mv release/Magarena.jar *.zip /tmp/artifacts
2013-02-11 20:20:22 -08:00
2015-07-27 05:33:09 -07:00
test-self-play:
for i in `seq 1 5`; do \
tsp make games=100 ai1=MMABC ai2=MCTS flags=-ea `date +%N`.t; \
tsp make games=100 ai1=MMAB ai2=MCTSC flags=-ea `date +%N`.t; \
done
2015-07-27 05:33:09 -07:00
games ?= 10000
str1 ?= 1
str2 ?= 1
life ?= 10
ai1 ?= MMABFast
ai2 ?= MMABFast
debug ?= false
parseMissing ?= false
2015-12-10 04:52:40 -08:00
devMode ?= false
selfMode ?= false
flags ?=
%.t: $(MAG)
$(eval VER := $(shell git rev-parse --short HEAD))
echo ${VER} > $*.log
$(RUN) ${flags} \
-Dmagarena.dir=`pwd`/release \
-Ddebug=${debug} \
-DparseMissing=${parseMissing} \
2015-11-11 06:02:44 -08:00
-DdevMode=${devMode} \
2014-04-01 22:54:29 -07:00
-Dgame.log=$*.log \
-Djava.awt.headless=true \
magic.DeckStrCal \
--seed $* \
2013-03-31 04:25:52 -07:00
--ai1 ${ai1} --str1 ${str1} \
2013-03-24 05:12:22 -07:00
--ai2 ${ai2} --str2 ${str2} \
--life ${life} \
--games 1 \
2015-01-23 21:13:14 -08:00
--repeat ${games} > $*.out 2>&1
2014-03-10 20:21:53 -07:00
test: 100.d
2013-05-16 01:13:28 -07:00
debug: $(MAG)
2014-06-05 20:57:26 -07:00
make 101.t debug=true games=0 flags=-ea || (cat 101.out && false)
2012-04-14 18:10:16 -07:00
%.d: $(MAG)
2015-12-15 18:32:09 -08:00
$(DEBUG) \
-DrndSeed=$* \
-DselfMode=$(selfMode) \
-Ddebug=${debug} \
-DdevMode=${devMode} \
-Dmagarena.dir=`pwd`/release \
-jar $^ |& tee $*.log
2012-07-26 01:42:56 -07:00
# Z = 4.4172 (99.999%)
# E = 0.01
# best estimator for r is p = h / (h + t)
2012-08-05 07:18:42 -07:00
# this estimator has a margin of error E, |p - r| < E at a particular Z, p - E < r < p + E
2012-07-26 01:42:56 -07:00
# n = Z^2 / 4E^2
# = 48780
# ~ 50000
%.str: $(MAG) deck1.dec deck2.dec
$(RUN) -ea -Dmagarena.dir=`pwd`/release \
magic.DeckStrCal \
--ai1 $* \
--str1 1 \
--deck1 $(word 2,$^) \
--ai2 $* \
--str2 1 \
--deck2 $(word 3,$^) \
--games 50000 >> $@ 2>&1
2012-04-14 18:10:16 -07:00
#exp/%.log: $(MAG)
# scripts/evaluate_ai.sh $* > $@
decks/dl:
2012-06-02 02:49:07 -07:00
for i in `curl http://www.wizards.com/magic/magazine/archive.aspx?tag=dailydeck | grep -o mtg/daily/deck/[0-9]* | cut -d'/' -f4`; do make decks/dd_$$i.dec; done
for i in `curl http://www.wizards.com/magic/magazine/archive.aspx?tag=topdeck | grep -o mtg/daily/td/[0-9]* | cut -d'/' -f4`; do make decks/td_$$i.dec; done
2014-09-01 20:22:00 -07:00
grep "name=" -r incomplete | sed 's/.*name=/100 /' > decks/with_scripts.dec
2014-09-01 20:22:00 -07:00
decks/with_scripts.dec: $(wildcard incomplete/*.txt)
cat $^ | grep "name=" | sed 's/.*name=//;s/^/100 /' | sort > $@
%.fix_date:
touch $* -d "`cat $* | head -2 | tail -1 | sed 's/# //'`"
# Daily Deck
decks/dd_%.dec:
curl "http://www.wizards.com/Magic/Magazine/Article.aspx?x=mtg/daily/deck/$*" | awk -f scripts/dailyhtml2dec.awk > $@
make $@.fix_date
# Top Decks
decks/td_%.dec:
curl http://www.wizards.com/Magic/Magazine/Article.aspx?x=mtg/daily/td/$* | awk -f scripts/dailyhtml2dec.awk > $@
make $@.fix_date
# Mike Flores
decks/mf_%.dec:
curl http://www.wizards.com/Magic/Magazine/Article.aspx?x=mtgcom/daily/mf$* | awk -f scripts/dailyhtml2dec.awk > $@
make $@.fix_date
2013-02-14 21:45:23 -08:00
# Decks from magic-league.com
decks/ml_%.dec: scripts/apprentice2dec.awk
wget "http://www.magic-league.com/decks/download.php?deck=$*&index=1" -O - | flip -u - | awk -f $^ > $@
2013-02-14 21:45:23 -08:00
# Decks from www.mtgtop8.com
decks/mtgtop8_%.dec:
wget "http://www.mtgtop8.com/export_files/deck$*.mwDeck" -O $@
2013-02-14 21:45:23 -08:00
decks/update:
2014-01-01 05:50:49 -08:00
$(eval LAST := $(shell curl http://mtgtop8.com/search | grep "&d=[0-9]\+" -o | sort | tail -1 | sed 's/&d=//'))
-seq `expr ${LAST} - 200` ${LAST} | parallel make decks/mtgtop8_{}.dec
find decks -size 0 -delete
2015-01-18 17:11:33 -08:00
ref/MagicCompRules_latest.txt:
wget `curl https://magic.wizards.com/en/game-info/gameplay/rules-and-formats/rules | grep -o "http://media.*\.txt"` -O $@
2015-01-18 17:11:33 -08:00
ref/rules.txt: ref/MagicCompRules_latest.txt
2017-04-25 07:16:13 -07:00
iconv -f ISO-8859-1 -t UTF-8 $^ | fmt -s > $@
2013-07-13 04:56:40 -07:00
flip -bu $@
2011-06-20 18:58:22 -07:00
resources/magic/data/icons/missing_card.png:
2011-06-20 19:27:14 -07:00
convert -background gray -bordercolor black -border 5x5 -size 302x435 \
-pointsize 30 label:'\nNo card image found\n\nSelect\n\"Download images\"\nfrom Arena menu\n\nOR\n\nSwitch to text mode\nusing the Enter key' $@
2011-06-22 19:02:22 -07:00
cards/evan_cube.txt:
curl http://www.cubedrafting.com/view-the-cube/ | grep jTip | sed "s/<[^>]*>//g;s/\&\#8217;/'/" > $@
cards/brett_cube.txt:
curl http://www.snazzorama.com/magic/cube/ | grep ":WizardsAutoCard" | sed "s/<\/td>.*//;s/<[^>]*>//g;s/\&\#8217;/'/" > $@
2011-06-28 19:05:50 -07:00
cards/tom_cube.txt:
wget -O - http://www.tomlapille.com/cube/tom_list.html | sed 's/<[^>]*>//g;s/^[ ]*//g;/^$$/d' > $@
cards/adam_cube.txt:
wget -O - http://www.tomlapille.com/cube/adam_list.html | sed 's/<[^>]*>//g;s/^[ ]*//g;/^$$/d' > $@
cards/AWinnarIsYou_cube.txt:
wget -O - http://www.tomlapille.com/cube/winnar_list.html | sed 's/<[^>]*>//g;s/^[ ]*//g;/^$$/d' > $@
2011-06-28 19:05:50 -07:00
2012-03-13 01:13:52 -07:00
cards/mtgo_cube.txt:
wget -O - https://www.wizards.com/magic/magazine/article.aspx?x=mtg/daily/arcana/927 | grep autoCard | sed 's/<[^<]*>//g;s/^[ ]*//g' > $@
2012-07-05 00:53:36 -07:00
cards/mtgo_cube2.txt:
wget -O - https://www.wizards.com/magic/magazine/article.aspx?x=mtg/daily/other/07032012d | grep autoCard | sed 's/<[^<]*>//g;s/^[ ]*//g' > $@
upload/%: Magarena-%.zip Magarena-%.app.zip
2012-07-28 22:52:49 -07:00
make upload/Magarena-$*.app.zip
make upload/Magarena-$*.zip
upload/Magarena-%.app.zip: Magarena-%.app.zip
scripts/googlecode_upload.py \
-p magarena \
-u melvinzhang@gmail.com \
-w `cat ~/Modules/notes/keys/googlecode_pw.txt` \
-s "Magarena $* (Mac)" \
-l Featured,Type-Installer,OpSys-OSX \
2012-07-28 22:52:49 -07:00
$^
2012-07-28 22:52:49 -07:00
upload/Magarena-%.zip: Magarena-%.zip
scripts/googlecode_upload.py \
-p magarena \
-u melvinzhang@gmail.com \
-w `cat ~/Modules/notes/keys/googlecode_pw.txt` \
-s "Magarena $*" \
-l Featured,Type-Archive,OpSys-Linux,OpSys-Windows \
2012-07-28 22:52:49 -07:00
$^
2011-10-26 20:06:12 -07:00
%.up: %
scripts/googlecode_upload.py \
-p magarena \
-u melvinzhang@gmail.com \
-w `cat ~/Modules/notes/keys/googlecode_pw.txt` \
-s "$^" \
2011-10-26 20:06:12 -07:00
$^
2014-09-16 22:02:42 -07:00
# correct phyrexian mana from {P/.} -> {./P}
cards/cards.xml: cards/cards.orig.xml
sed "s/{P\/\(.\)}/{\1\/P}/g;s//'/g" $^ > $@
cards/scriptable.txt: scripts/analyze_cards.scala scripts/effects.txt cards/cards.xml cards/existing_master.txt
scala $^ > $@
cards/magicdraftsim-sets:
curl www.magicdraftsim.com/card-ratings | \
grep Kamigawa | \
head -1 | \
sed 's/value=/\n/g' | \
sed 's/<.*//' | \
cut -d\' -f2 | \
sed '/^$$/d' > $@
cards/magicdraftsim-rating: cards/magicdraftsim-sets
for i in `cat $^`; do \
curl http://www.magicdraftsim.com/card-ratings/$$i | \
pandoc -f html -t plain | \
grep "^[ ]*[0-9]" | \
sed "s/^[ ]*[0-9]*/$$i/;s/[ ][ ][ ]*/\t/g"; \
done > $@
cards/current-magic-excel.txt:
wget http://www.magictraders.com/pricelists/current-magic-excel.txt -O $@
2012-03-11 08:12:49 -07:00
code_clones:
java -jar ~/App/simian/bin/simian.jar release/Magarena/scripts/*.groovy > $@
2012-04-09 07:14:14 -07:00
unique_property:
grep "=" release/Magarena/scripts/*.txt| cut -d'=' -f1 | sort | uniq -c | sort -n
cards/scored_by_dec.tsv: cards/existing_master.txt cards/unimplementable.tsv $(wildcard decks/*.dec)
2013-02-14 21:45:23 -08:00
./scripts/score_card.awk decks/*.dec |\
sort -rg |\
2014-03-03 21:21:06 -08:00
unaccent iso-8859-15 |\
./scripts/keep_unimplemented.awk $(word 1,$^) /dev/stdin |\
./scripts/keep_unimplemented.awk <(cut -f1 $(word 2,$^)) /dev/stdin > $@
cards/mtg_mana_costs:
grep -ho "\(\{[^\}]\+\}\)\+" -r cards/cards.xml | sort | uniq > $@
cards/mag_mana_costs:
grep -ho "\(\{[^\}]\+\}\)\+" -r src/magic/model/MagicManaCost.java release/Magarena/scripts | sort | uniq > $@
cards/mana_cost_graph.dot: cards/mtg_mana_costs
cat $^ |\
sed 's/{X}//g;s/{[[:digit:]]*}//g;s/{[CPQT]*}//g;/^$$/d' |\
awk -f scripts/mana_cost_graph.awk > $@
cards/mana_cost_graph.png: cards/mana_cost_graph.dot
circo $^ -Tpng -o $@
verify_mana_cost_order: cards/mtg_mana_costs cards/mag_mana_costs
join -v2 $^
%.update_value: %
if grep token= $^; then \
echo "ERROR: Not applicable to tokens"; \
else \
name=$$(grep name= $^ | sed 's/name=//');\
value=$$(curl -sLG http://gatherer.wizards.com/pages/card/details.aspx --data-urlencode "name=$$name" | grep "textRatingValue" | grep -o "[0-9]\.[^<]*" | head -1);\
if [ ! -z "$$value" ]; then sed -i "s/value=.*/value=$$value/" $^; fi;\
fi \
2012-08-18 18:05:00 -07:00
%.normalize: %
flip -u $^
make $^.update_value
vim $^
hg add $^
2012-09-07 21:18:30 -07:00
update_default_value:
grep value=2.500 -r release/Magarena/scripts release/Magarena/scripts_missing -l | parallel -j 30 make {}.update_value
git checkout -- `grep "value=$$" -r release/Magarena/scripts release/Magarena/scripts_missing -l`
update_all_value:
grep value= -r release/Magarena/scripts release/Magarena/scripts_missing -l | parallel -j 30 make {}.update_value
git checkout -- `grep "value=$$" -r release/Magarena/scripts release/Magarena/scripts_missing -l`
find_event_data: scripts/check_data.awk
for i in `grep "new MagicEvent(" -lr src`; do \
grep "new Object\|data\[[0-9\]" $$i > /dev/null && echo $$i; \
2012-09-08 19:24:29 -07:00
grep "new Object\|data\[[0-9\]" $$i | awk -f $^ | sed 's/ //g' | sed 's/:/:\t/'; \
done > $@
2012-09-07 21:18:30 -07:00
flip -u $@
find_literals:
grep "\"" src/magic/card/* | awk -f scripts/check_literals.awk
find_single_line_card_code: $(MAG)
cat src/magic/card/*.java | sed 's/\s\+//g' | sed 's/(.*)/(...)/g' | sort | uniq -c | sort -n | grep publicstaticfinal | grep ");" > $@
find_casts: $(MAG)
grep -n "([A-Za-z<>]\+)[A-Za-z]\+" -r src/ release/Magarena/scripts > $@
flip -u $@
find_nulls: $(MAG)
grep -n "null" -r src/ > $@
flip -u $@
find_ui: $(MAG)
grep 'magic.ui\|java.awt\|javax.swing' -lr src | grep -v '^src/magic/ui' | sort > $@
find_android: $(MAG)
find src -iname "*.java" | parallel javac -bootclasspath robovm-rt-1.0.0-beta-03.jar -cp $^ -d build {} 2> $@
# meta check
2013-05-26 22:18:25 -07:00
checks: \
check_requires_groovy_code \
check_script_name \
2013-10-23 06:14:56 -07:00
check_tokens \
check_unique_property \
check_required_property \
check_spells \
check_groovy_escape \
2014-01-20 18:10:45 -08:00
check_empty_return \
2013-07-16 20:08:24 -07:00
check_image \
check_decks \
check_mana_or_combat \
check_color_or_cost \
check_tap_tap \
check_no_extra_space \
check_no_status
2013-07-17 06:00:32 -07:00
check_property_alignment:
grep "^[^ ][^=]\+$$" -r release/Magarena/scripts/*.txt | grep -v requires | grep -v mana_or | grep -v hidden | grep -v overlay | grep -v '#' | ${NO_OUTPUT}
2014-08-07 18:07:13 -07:00
remove_extra_missing:
git rm `join <(ls -1 release/Magarena/scripts | sort) <(ls -1 release/Magarena/scripts_missing | sort) | sed 's/^/release\/Magarena\/scripts_missing\//'`
2016-06-04 18:44:16 -07:00
remove_extra_groovy:
git rm `make check_requires_groovy_code | grep '< ' | sed 's/< /release\/Magarena\/scripts\//;s/$$/.groovy/'`
2013-07-17 06:00:32 -07:00
# check rarity using meta.xml
check_rarity: scripts/fix_rarity.scala cards/meta.xml
cat release/Magarena/scripts/*.txt | scala $^ | grep -v "not be L" | grep -v "Windseeker Centaur" | ${NO_OUTPUT}
2013-07-16 20:08:24 -07:00
# check metadata using cards.xml
check_meta: cards/scriptable.txt
2014-05-17 19:10:15 -07:00
diff <(cat `grep name= $^ | sed -f scripts/normalize_name.sed | sed 's/name_/release\/Magarena\/scripts\//;s/$$/.txt/'`) \
<(sed '/^$$/d' $^) -d |\
2013-07-16 20:08:24 -07:00
grep ">" |\
${NO_OUTPUT}
# every image is to a jpg file or attachment
check_image:
grep '^image=' -r release/Magarena/scripts | grep -v "jpg\(?[0-9]*\)\?$$" | grep -v "png$$" | grep -v attachment.php | ${NO_OUTPUT}
# every card that requires groovy code has a corresponding groovy script file
# every groovy script file has a corresponding card script that requires groovy code
# every groovy script file has a txt file with the same name that requires groovy code
check_requires_groovy_code:
diff \
<(ls -1 release/Magarena/scripts/*.groovy | cut -d'/' -f 4 | sed 's/.groovy//' | sort) \
2014-05-17 19:10:15 -07:00
<(grep requires_groovy_code -r release/Magarena/scripts/ | sed 's/.*=//' | sed 's/;/\n/g' | sed 's/.*scripts\///;s/.txt.*//' | sed -f scripts/normalize_name.sed | sort | uniq)
grep -L requires_groovy `ls -1 release/Magarena/scripts/*.groovy | sed 's/groovy/txt/'` | ${NO_OUTPUT}
2013-05-26 22:18:25 -07:00
# $ must be escaped as \$ in groovy script
check_groovy_escape:
2013-07-16 20:08:24 -07:00
grep '[^\\]\$$' -r release/Magarena/scripts | grep -v '\$${' | ${NO_OUTPUT}
2013-05-26 22:18:25 -07:00
2014-01-20 18:10:45 -08:00
# return should not be last token in groovy script
check_empty_return:
grep "return[[:space:]]*$$" -r release/Magarena/scripts/*.groovy | ${NO_OUTPUT}
2014-01-20 18:10:45 -08:00
2012-10-30 02:50:30 -07:00
# script name is canonical card name
2012-10-06 00:44:55 -07:00
check_script_name:
diff \
<(ls -1 release/Magarena/scripts/ | grep txt | sort) \
2014-05-17 19:10:15 -07:00
<(grep "name=" -r release/Magarena/scripts/ | sort | sed 's/.*name=//' | sed -f scripts/normalize_name.sed | sed 's/$$/.txt/')
# check tokens used match tokens in scripts
check_tokens:
diff \
<(grep -ho "name=.*" `grep token= -lr release/Magarena/scripts` | sed 's/name=//' | sort) \
<(grep 'CardDefinitions.getToken("' -r release/Magarena/scripts src | grep -o '".*"' | sed 's/"//g' | sort | uniq) | grep ">" | ${NO_OUTPUT}
# check that cards in decks exist in the game
check_decks:
diff \
<(grep "name=" -r release/Magarena/scripts/ | sed 's/.*name=//' | sort) \
2013-12-14 17:17:47 -08:00
<(cat release/Magarena/decks/prebuilt/*.dec | grep "^[0-9]" | sed 's/^[0-9]* //' | sort | uniq) | grep ">" | ${NO_OUTPUT}
# each property occurs at most once
check_unique_property:
grep "^[^=]*" -r release/Magarena/scripts/*.txt | sed 's/=.*//g' | sort | uniq -d | ${NO_OUTPUT}
property_stats:
grep "^[a-z]*=" -hr release/Magarena/scripts/*.txt -o | sort | uniq -c | sort -n
check_required_property:
grep ^image= -L release/Magarena/scripts/*.txt | ${NO_OUTPUT}
grep ^name= -L release/Magarena/scripts/*.txt | ${NO_OUTPUT}
grep ^type= -L release/Magarena/scripts/*.txt | ${NO_OUTPUT}
grep ^value= -L release/Magarena/scripts/*.txt | ${NO_OUTPUT}
grep ^rarity= -L `grep token= -L release/Magarena/scripts/*.txt` | ${NO_OUTPUT}
grep ^timing= -L `grep token= -L release/Magarena/scripts/*.txt` | ${NO_OUTPUT}
# Instant and Sorcery must have either effect or requires_groovy_code
check_spells:
grep requires_groovy_code -L $$(grep effect -L $$(grep "^type.*Instant" -lr release/Magarena/scripts)) | ${NO_OUTPUT}
grep requires_groovy_code -L $$(grep effect -L $$(grep "^type.*Sorcery" -lr release/Magarena/scripts)) | ${NO_OUTPUT}
check_unused_condition:
grep "public static" -r src/magic/model/condition/MagicCondition.java | grep -o "Condition [A-Z]\+[^ =]*" | sed 's/Condition //' | sort | uniq > declared-conds
for i in `cat declared-conds`; do grep $$i -r src release/Magarena/scripts | grep -v "public static" | grep -o $$i; done | sort | uniq > used-conds
diff declared-conds used-conds | ${NO_OUTPUT}
rm declared-conds used-conds
2014-04-05 20:15:49 -07:00
check_unused_filter:
grep "Impl [A-Z][A-Z0-9a-z_]*" src/magic/model/target/MagicTargetFilterFactory.java -o | sed 's/Impl //' | sort | uniq > declared-filters
for i in `cat declared-filters`; do grep $$i -r src release/Magarena/scripts | grep -v "public static final" | grep -o $$i; done | sort | uniq > used-filters
2014-04-05 20:15:49 -07:00
diff declared-filters used-filters | ${NO_OUTPUT}
rm declared-filters used-filters
2014-04-05 20:15:49 -07:00
check_unused_choice:
grep "public static final" -r src/magic/model/choice/MagicTargetChoice.java | grep -o "Choice [A-Z]\+[^ =]*" | sed 's/Choice //' | sort | uniq > declared-choices
for i in `cat declared-choices`; do grep $$i -r src release/Magarena/scripts | grep -v "public static final" | grep -o $$i; done | sort | uniq > used-choices
diff declared-choices used-choices | ${NO_OUTPUT}
rm declared-choices used-choices
check_mana_or_combat:
diff \
<(grep mana_or_combat -lr release/Magarena/scripts) \
<(grep "Add [^\"]*becomes a" -r release/Magarena/scripts -l)
# all cards except lands should have either color, or cost, or both
check_color_or_cost:
diff \
<(grep "^\(cost=\|color=\|type.*Land\)" -r release/Magarena/scripts/*.txt -l) \
<(ls release/Magarena/scripts/*.txt | sort)
check_tap_tap:
grep "{T}, Tap" -ir release/Magarena/scripts | grep -v oracle | grep -iv "{T}, Tap another" | ${NO_OUTPUT}
check_no_extra_space:
grep "^[[:space:]]" -r resources/magic/data/sets | ${NO_OUTPUT}
grep "[[:space:]]$$" -r resources/magic/data/sets | ${NO_OUTPUT}
check_no_status:
grep "status" -r release/Magarena/scripts | ${NO_OUTPUT}
check_model_ui:
grep "magic.ui" -r src/magic/model | ${NO_OUTPUT}
2012-09-29 20:20:52 -07:00
crash.txt: $(wildcard *.log)
for i in `grep "^Excep" -l $^`; do \
tail -n +`grep -n "random seed" $$i | tail -1 | cut -d':' -f1` $$i; \
done >> $@
2012-11-19 23:40:16 -08:00
rm $^
2012-10-26 21:57:23 -07:00
support/ui:
for i in src/$@/*.java; do wget https://cakehat.googlecode.com/svn/trunk/$$i -O $$i; done
wiki/UpcomingCards.md: cards/new.txt
cat <(echo '~~~~') $^ <(echo '~~~~') > $@
parser/test: $(MAG)
2013-04-20 06:39:59 -07:00
$(RUN) magic.grammar.Check < grammar/parsable.txt
parser/test_all: $(MAG) grammar/rules.txt
2013-04-20 06:39:59 -07:00
$(RUN) magic.grammar.Check < $(word 2,$^)
parser/run: $(MAG)
2013-04-20 06:39:59 -07:00
$(RUN) magic.grammar.Check
2013-02-12 20:30:51 -08:00
grammar/parsable.txt: src/magic/grammar/MagicRuleParser.java
make parser/test_all > grammar/test_all.out
cat grammar/test_all.out | grep PARSED | sed 's/PARSED: //' | sort | uniq > $@
cat grammar/test_all.out | grep FAILED | sort | uniq -c | sort -n > grammar/failed.txt
src/magic/grammar/MagicRuleParser.java: grammar/mtg.peg
2014-09-10 22:40:02 -07:00
java -cp lib/Mouse-1.6.1.jar mouse.Generate -M -G $^ -P MagicRuleParser -S MagicSyntaxTree -p magic.grammar -r magic.grammar
mv MagicRuleParser.java $@
sed -i 's/accept()/sem.action() \&\& accept()/g' $@
grammar/CounterType: grammar/rules.txt
grep -o "[^ ]* counter \(on\|from\)" $@ | cut -d' ' -f1 | sort | uniq > $@
# remove a, each, that
# add poison
cards/cards_per_set.tsv: cards/existing_master_full.txt
2013-03-07 06:58:14 -08:00
cat <(grep -o ", [A-Z0-9]* [A-Z]" $^ | cut -d' ' -f2) \
<(grep -o "^[A-Z0-9]* [A-Z]" $^ | cut -d' ' -f1) \
| sort \
| uniq -c \
| sort -n \
| sed 's/^ *//g;s/ /\t/' \
> $@
2013-03-13 05:52:31 -07:00
2013-03-13 06:30:59 -07:00
smallest.convert:
make `ls -1S src/magic/card | grep java |sed 's/.java//' | tail -1`.convert
echo card with code: `ls -1 src/magic/card/*.java | wc -l`
echo card with script: `ls -1 release/Magarena/scripts/*.groovy | wc -l`
2013-03-13 06:30:59 -07:00
2013-03-13 05:52:31 -07:00
%.convert:
2013-03-13 05:55:53 -07:00
hg mv src/magic/card/$*.java release/Magarena/scripts/$*.groovy
vim release/Magarena/scripts/$*.groovy
sed -i 's/card_/groovy_/' release/Magarena/scripts/$*.txt
2013-03-13 05:52:31 -07:00
hg commit -m "convert from java code to groovy code"
2013-03-13 06:30:59 -07:00
ai/benchmark.rnd:
sort -R exp/AIs.txt > exp/rnd.txt
ts make debug=true games=10 life=20 \
ai1=`cat exp/rnd.txt | tail -1` \
str1=`sort -R exp/STRs.txt | tail -1` \
ai2=`cat exp/rnd.txt | tac | tail -1` \
str2=`sort -R exp/STRs.txt | tail -1` \
`date +%s`.t
ts make ai/benchmark.rnd
exp/zermelo.tsv: $(wildcard exp/136*.log)
awk -f exp/extract_games.awk $^ | ./exp/whr.rb | tac > $@
2013-05-25 01:14:01 -07:00
bytes_per_card.txt:
for i in `seq 39 68`; do echo -n "1.$$i "; make bytes_per_card.1.$$i -s ; done > bytes_per_card.txt
bytes_per_card.%:
2015-04-05 20:55:05 -07:00
echo `git show $*:release/Magarena/scripts | tail -n+3 | sed 's/^/$*:release\/Magarena\/scripts\//' | git cat-file --batch | grep -v " blob " | sed 's/^[[:space:]]*//;/^$$/d' | wc -c` \
2013-05-25 01:14:01 -07:00
/ \
2015-04-05 20:55:05 -07:00
`git show $*:release/Magarena/scripts | grep '\.txt' | wc -l` \
2013-05-25 01:14:01 -07:00
| bc -l
2013-08-10 03:45:54 -07:00
reminder.txt: cards/cards.xml
grep 'reminder="[^"]*"' $^ -o | sed 's/reminder=//' | sort | uniq -c | sort -rn > $@
2013-08-10 18:42:21 -07:00
FILES = release/Magarena/**/*.txt release/Magarena/**/*.groovy release/Magarena/decks/**/*.dec src/**/*.java resources/magic/data/formats/*.fmt
2013-09-15 05:34:48 -07:00
2013-09-08 18:55:38 -07:00
normalize_files:
# add newline at end of file
2014-09-07 18:13:18 -07:00
shopt -s globstar; sed -i -e '$$a\' ${FILES}
2013-09-08 18:55:38 -07:00
# convert DOS newlines to UNIX format
2014-09-07 18:13:18 -07:00
shopt -s globstar; sed -i -e 's/\x0D$$//' ${FILES}
2013-09-08 18:55:38 -07:00
# convert tab to four spaces
2014-09-07 18:13:18 -07:00
shopt -s globstar; sed -i -e 's/\t/ /g' ${FILES}
# remove BOM
shopt -s globstar; sed -i -e '1s/^\xef\xbb\xbf//' ${FILES}
# remove empty lines in scripts
sed -i -e '/^\s*$$/d' release/Magarena/scripts/*.txt
# use mtgimage for image
# make img-mtgimage
2014-08-07 18:07:13 -07:00
# remove extra scripts_missing
%.post:
@echo "[img]"`grep -o "http.*jpg" release/Magarena/scripts/$*.txt`"[/img]"
@echo
@echo "Magarena/scripts/$*.txt"
@echo "[code]"
@cat release/Magarena/scripts/$*.txt
@echo "[/code]"
@echo
@echo "Magarena/scripts/$*.groovy"
@echo "[code]"
@cat release/Magarena/scripts/$*.groovy
@echo "[/code]"
2013-10-05 23:08:28 -07:00
untracked:
hg stat | sed 's/^. //;s/.*/"&"/' | xargs ls -ltr
2013-10-15 02:57:55 -07:00
common_actions:
grep -ho "Magic[A-Za-z]*Action" -r release/Magarena/scripts | sort | uniq -c | sort -n
src/magic/MurmurHash3.java:
curl https://raw.github.com/infinispan/infinispan/master/commons/src/main/java/org/infinispan/commons/hash/MurmurHash3.java > $@
patch $@ src/magic/MurmurHash3.diff
2013-11-29 18:01:56 -08:00
img-mtgimage:
2013-11-29 18:01:56 -08:00
grep mtgimage -L `grep token= -L release/Magarena/scripts/*.txt` | parallel awk -f scripts/set_image.awk {} '>' {.}.img
-ls -1 release/Magarena/scripts/*.img | parallel mv {} {.}.txt
2014-10-31 19:03:35 -07:00
up:
2014-11-10 21:48:17 -08:00
cd wiki; git pull
cd website; git pull
2014-11-14 19:26:16 -08:00
2014-10-27 05:50:04 -07:00
git fetch -v origin master
git merge --ff-only origin/master
2014-11-14 19:26:16 -08:00
git fetch palladiamors
2014-10-27 04:21:04 -07:00
git fetch -v firemind master
git log base..firemind/master
firemind:
2014-10-28 18:49:42 -07:00
git checkout -b temp --no-track firemind/master
git rebase base --onto master
git checkout master
git merge --ff-only temp
git branch -d temp
git checkout base
git merge --ff-only firemind/master
git checkout master
git diff origin/master master | sed 's/b\///' >> firemind.diff
make normalize_files checks debug
%.rebase:
git checkout -b temp --no-track $*
git rebase -i master
git checkout master
git merge --ff-only temp
git branch -d temp
properties.diff:
2014-05-17 19:10:15 -07:00
diff <(cat `grep name= cards/scriptable.txt | sed -f scripts/normalize_name.sed | sed 's/name_/release\/Magarena\/scripts\//;s/$$/.txt/'`) \
<(sed '/^$$/d' cards/scriptable.txt) -d -u > $@
common_costs:
grep "[^\"]*:" grammar/rules.txt -o | sed 's/>//;s/, /\n/g;s/://' | sort | uniq -c | sort -n | grep -v "{" > $@
push: clean normalize_files checks debug
2014-10-26 23:37:13 -07:00
git push origin master
resources/magic/data/sets/%.txt:
curl https://mtgjson.com/json/$*.json | jq -r .cards[].name | LC_ALL=C sort | uniq > $@
2014-05-05 21:54:38 -07:00
missing_override:
grep public -B1 -r release/Magarena/scripts | awk '/Override/ {skip = NR + 1} NR != skip {print $$0}' | grep -v Override | grep release > $@
parse_new.txt: cards/existing_master.txt
cp `grep status=not -Lr release/Magarena/scripts_missing/` release/Magarena/scripts
-rm 101.out
make parseMissing=true debug
2015-01-20 20:51:05 -08:00
grep "ERROR " 101.out | sed 's/java.lang.RuntimeException: //' | sed 's/\(ERROR.*\) \(cause: .*\)/\2 \1/' | sort > parse_missing.txt
grep OK 101.out | sed 's/OK card: //' | sort > parse_ok.txt
git clean -qf release/Magarena/scripts
join -v2 -t'_' $^ parse_ok.txt > $@
diff parse_new.ignore $@
2014-08-16 19:11:51 -07:00
parse_groovy.txt: cards/groovy.txt
cp scripts-builder/OUTPUT/scripts_missing/* release/Magarena/scripts
-rm 101.out
make parseMissing=true debug
grep "ERROR " 101.out | sed 's/java.lang.RuntimeException: //' | sed 's/\(ERROR.*\) \(cause: .*\)/\2 \1/' | sort > parse_missing.txt
grep OK 101.out | sed 's/OK card: //' | sort > parse_ok.txt
git checkout -- release/Magarena/scripts
join -t'_' <(sort $^) <(sort parse_ok.txt) > $@
2015-12-08 19:06:12 -08:00
diff parse_groovy.ignore $@
parse_groovy:
make cards/groovy.txt
cd scripts-builder && make gen-groovy
make parse_groovy.txt
# extract name<tab>image url from gallery page
%.tsv: %.html
grep "alt.*src.*media" $^ | sed 's/.*alt="\([^"]*\)".*src="\([^"]*\)".*/\1\t\2/' > $@
%.md:
curl https://code.google.com/p/magarena/wiki/$* \
| xmllint --html --xpath "//div[@id='wikicontent']" - \
| pandoc --from html --to markdown --no-wrap \
> $@
2015-12-29 05:48:09 -08:00
%.add: release/Magarena/scripts_missing/%.txt
git mv $^ release/Magarena/scripts
2015-12-29 05:48:09 -08:00
vim release/Magarena/scripts/$*.txt
$(eval NAME := $(shell grep "name=" $^ | sed 's/name=//'))
2015-12-29 05:48:09 -08:00
git add release/Magarena/scripts/$*.*
git commit -m "add ${NAME}"
images.url: missing_images
cat $^ | parallel -k -q curl -G http://magiccards.info/query --data-urlencode 'q=!{}' | grep -o "http.*.jpg" > $@
2015-04-08 02:35:59 -07:00
2015-04-08 17:57:33 -07:00
model_usage:
for i in `grep "class [A-Za-z]*" -hro src/magic/model | sed 's/class //'`; do echo -en "$$i\t"; grep $$i -lr src release/Magarena/scripts | wc -l; done > $@
fix_indentation:
grep "^[ ]*" -r release/Magarena/scripts/*.groovy -o | awk -F':' 'length($$2) < 15 {print $$1 "\t" length($$2) % 4}' | grep -v 0 | cut -f1 | uniq | vim -
2015-04-29 20:58:35 -07:00
fix_trailing_space:
find release/Magarena/scripts -type f -exec sed --in-place 's/[[:space:]]\+$$//' {} +
find src -type f -exec sed --in-place 's/[[:space:]]\+$$//' {} +
2015-04-29 20:58:35 -07:00
update_card_property:
ls -1 replace/* | parallel -q sed -i 's/\([^=]*\)=\(.*\)/s|\1=.*|\1=\2|/;s/\\/\\\\/g'
ls -1 release/Magarena/scripts/*.txt | parallel -q sed -i -f replace/{/} {}
sims_count:
grep "sims=[0-9]*" -r 14* -o -h | sed 's/sims=//' | sort -n | histogram.py -x 800 > $@
groovy-by-size:
ls -1Sr `grep executeEvent release/Magarena/scripts/*.groovy -l` > $@
normalize_scripts.diff:
diff -d -ru -I rarity= -I removal= -I image -I enchant= -I effect= -I value= -I static= -I timing= -I mana= \
release/Magarena/scripts scripts-builder/OUTPUT/scripts_missing | grep -v Only > $@
sorted_status.txt:
grep status= -r release/Magarena/scripts_missing/ -h | sort | uniq > $@
echo "unknown" `grep -L status= -r release/Magarena/scripts_missing | wc -l` >> $@
2015-11-29 04:56:32 -08:00
# export GITHUB_TOKEN=`cat token`
create-draft-release:
github-release release \
--user magarena \
--repo magarena \
--tag "${tag}" \
--name "${name}" \
--draft
upload-lin-release:
github-release upload \
--user magarena \
--repo magarena \
--tag "${tag}" \
--name "Magarena-${tag}.zip" \
--file Magarena-${tag}.zip
upload-mac-release:
github-release upload \
--user magarena \
--repo magarena \
--tag "${tag}" \
--name "Magarena-${tag}.app.zip" \
--file Magarena-${tag}.app.zip
github-releases.json:
curl https://api.github.com/repos/magarena/magarena/releases > $@
correct-release-label:
curl -XPATCH https://api.github.com/repos/magarena/magarena/releases/assets/${mac} -H"Content-Type: application/json" -d'{"name": "Magarena-${tag}.app.zip", "label":"Magarena-${tag}.app.zip for Mac"}' -u "${username}:${password}"
curl -XPATCH https://api.github.com/repos/magarena/magarena/releases/assets/${linux} -H"Content-Type: application/json" -d'{"name": "Magarena-${tag}.zip", "label":"Magarena-${tag}.zip for Linux/Windows"}' -u "${username}:${password}"
%_img.tsv:
paste <(cat image-gallery | pup 'img attr{alt}') <(cat image-gallery | pup 'img attr{src}') > $@
# edit tsv file to use only ASCII characters
%_fix_image:
grep /$*/ -r release/Magarena/scripts_missing release/Magarena/scripts -l | parallel awk -f scripts/update_image.awk $*_img.tsv {} '>' {}.new
grep /$*/ -r release/Magarena/scripts_missing/*.txt release/Magarena/scripts/*.txt -l | parallel mv {}.new {}
# Match abilities in scripts_missing to existing groovy code
# assume scripts-builder/OUTPUT/scripts_missing contains card script for current cards
# groovy scripted effect/ability are those that are in scripts-builder generated card script but not present in actual card script
# search for these groovy effect/ability in release/Magarena/scripts_missing
groovy_scripted.txt:
join -v2 -t'_' \
<(grep "effect=\|ability=\|^ " -r release/Magarena/scripts/*.txt -h | sed 's/^ *//;s/.*=//;s/;\\//' | sort | uniq) \
<(grep "effect=\|ability=\|^ " -r scripts-builder/OUTPUT/scripts_missing -h | sed 's/^ *//;s/.*=//;s/;\\//' | sort | uniq) \
> $@
requires_scripted.txt: groovy_scripted.txt
join -t'_' \
$^ \
<(grep "effect=\|ability=\|^ " -r release/Magarena/scripts_missing -h | sed 's/^ *//;s/.*=//;s/;\\//' | sort | uniq) \
> $@
requires_scripted_candidate.txt: requires_scripted.txt
cat $^ | parallel -k grep '{}' -r release/Magarena/scripts_missing > $@
requires_scripted_candidate: cards/existing_master.txt
cd scripts-builder && make gen-groovy-all
rm groovy_scripted.txt requires_scripted.txt requires_scripted_candidate.txt
make requires_scripted_candidate.txt
diff requires_scripted_candidate.ignore requires_scripted_candidate.txt
generate-diff:
mkdir diff
for i in release/Magarena/scripts_missing/*.txt; do \
diff -Nau \
-I'value=' \
-I'rarity=' \
-I'status=' \
-I'image=' \
-I'image_updated=' \
-I'transform=' \
-I'split=' \
-I'flip=' \
-I'timing=' \
-I'loyalty=' \
-I'enchant=' \
-I'hidden' \
-I'second_half' \
$$i scripts-builder/OUTPUT/scripts_missing/`basename $$i` > diff/`basename $$i txt`diff; \
done
edit-diff:
for i in diff/*.diff; do editdiff $$i; done
apply-diff:
for i in diff/*.diff; do patch -p0 < $$i; done