Skip to content

Commit

Permalink
refactor: assets & icons scripts for iOS (#239)
Browse files Browse the repository at this point in the history
  • Loading branch information
lauthieb authored Apr 19, 2023
1 parent fc2004c commit 01ea6f7
Show file tree
Hide file tree
Showing 8 changed files with 576 additions and 500 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
**/node_modules
**/.DS_Store
**/.temp
**/.temp-compose-icons
**/.temp-compose-assets
**/.temp-svg-icons
**/.temp-svg-assets
.env
#figma-export-icons
.temp/icons-config-fill.json
Expand Down
672 changes: 336 additions & 336 deletions build/assets/sprite/assets.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 26 additions & 26 deletions build/icons/compose/vitaminicons/__Fill.kt
Original file line number Diff line number Diff line change
Expand Up @@ -249,31 +249,31 @@ public val FillGroup.AllAssets: ____KtList<ImageVector>
if (__AllAssets != null) {
return __AllAssets!!
}
__AllAssets= listOf(More2, VolumeUp, ThumbUp, Rss, File, ShieldCheck, Exchange, Distance,
Feedback, BodyScan, VolumeMute, ShoppingCart, Counter, SelectedByDecathlon, Pinterest,
SecurePayment, Tablet, Pause, Foggy, Drizzle, Heart, Emotion, ZoomIn, BankCard, Stop,
Unlink, Tiktok, Flashlight, EyeOff, CheckboxMultiple, Chrome, EmotionNormal, Home, Printer,
ArrowLeftCircle, Twitter, Suitcase, Keyboard, Download, Snapchat, Smartphone, Music2, Lock,
CloseCircle, ExternalLink, Menu, DeleteBin, Facebook, CheckboxBlank, CustomerService, Seed2,
PlayCircle, Fullscreen, CheckboxBlankCircle, Share, Sun, Database, ArrowRight, Calendar2,
Showers, LoyaltyCard, Firefox, Time, RadioButton, Edit, Messenger, ArrowUpDown, ThumbDown,
Recycle, Trophy, ShareIos, Hourglass, Accessibility, ListCheck, ArrowDown, ArrowRightUp,
Barcode, Mic, Camera, Viber, Telegram, Hail, SendPlane2, Macbook, Repeat, Add, Image,
Package, Function, More, Football, ArrowUp, Rainy, Grid, ArrowLeftDown, MoneyDollarBox,
PriceTag, ArrowGoForward, MoneyPoundBox, Mac, QrScan, Windy, ArrowLeft, Music, Settings,
MoneyCnyBox, Focus, ChevronRight, TempCold, Message, ShareAndroid, VolumeDown, ArrowGoBack,
EmotionSad, Search, Eye, Award, MailSend, Bill, Whatsapp, Youtube, Alert, Seed1, StopCircle,
Navigation, Check, Instagram, Safari, Wallet, CalendarDate, Riding, Rocket, Attachment,
TShirt, HearingImpairment, Fire, TempHot, WifiOff, ArrowRightDown, Apple, Line, Scales, Run,
PauseCircle, Subtract, EmotionUnhappy, KakaoTalk, Visa, VolumeAlert, SunCloudy, BarChart,
Question, Cloud, MapPin, Play, Ie, Train, Google, Information, Star, ArrowLeftRight, Earth,
Task, AddCircle, Moon, ArrowUpCircle, ListSettings, Tools, Close, Snowy, Notification, Film,
Walk, ArrowLeftUp, Amazon, Github, Timer, Car, Direction, Slack, Seed3, Checkbox,
CheckboxCircle, ErrorWarning, MoneyEuroBox, MoonCloudy, ChevronDown, Truck, HeartPulse,
EmotionLaugh, Naver, Return, Forbid, Thunderstorms, Logout, Gift, CloudWindy, CalendarCheck,
Link, Filter, Drive, LineChart, Ruler, Android, FileCopy, PieChart, Upload, Mastercard,
Sparkles, ChevronLeft, User, Mist, Mail, Group, Phone, ZoomOut, Lightbulb, ArrowDownCircle,
WifiOn, Store, Leaf, Refund, Calendar, Refresh, ChevronUp, StarHalf, Equalizer, ShoppingBag,
History, FilterOff, SendPlane, ShutDown, ArrowRightCircle)
__AllAssets= listOf(Grid, Search, VolumeMute, Task, PlayCircle, Earth, Flashlight, MailSend,
Snowy, Windy, PauseCircle, ShareIos, PriceTag, EyeOff, Mac, Information, Tools, Repeat,
CustomerService, Hourglass, Distance, RadioButton, User, Fullscreen, MoneyPoundBox, Android,
ThumbDown, VolumeUp, MoneyEuroBox, Home, ArrowLeftUp, Naver, Alert, Music, Smartphone,
TShirt, FilterOff, ArrowGoForward, Visa, Recycle, ShoppingBag, Function, Logout, Viber,
Counter, Github, Thunderstorms, HearingImpairment, ArrowUpCircle, Database, QrScan, File,
ZoomIn, EmotionNormal, Sparkles, Keyboard, Question, Lock, Fire, StopCircle, Package,
ArrowLeft, Instagram, Link, CalendarDate, Store, Return, ArrowLeftRight, Safari, DeleteBin,
Group, KakaoTalk, Settings, ShareAndroid, PieChart, Mail, Download, Time, ExternalLink,
SecurePayment, CloseCircle, BarChart, Seed2, Scales, ArrowDownCircle, ArrowGoBack, ArrowUp,
Calendar2, Train, Wallet, ChevronRight, ListSettings, Telegram, ChevronLeft, Exchange,
Refund, Stop, WifiOn, Seed3, ShutDown, ArrowRight, Ruler, CalendarCheck, Direction, Seed1,
Trophy, Check, Focus, EmotionSad, TempHot, Rss, EmotionUnhappy, CloudWindy, ShoppingCart,
Add, CheckboxMultiple, Close, BodyScan, Mic, Emotion, TempCold, ArrowUpDown, Subtract,
VolumeDown, Refresh, Snapchat, Image, SelectedByDecathlon, Lightbulb, Drizzle, Music2,
VolumeAlert, Navigation, ChevronUp, Message, Award, Showers, ArrowDown, Play, Notification,
Forbid, Barcode, Bill, MoneyDollarBox, Facebook, Mist, Feedback, Camera, Printer, Amazon,
CheckboxCircle, FileCopy, Pinterest, Truck, Mastercard, Hail, Whatsapp, Google, More, Line,
ThumbUp, Attachment, Rainy, Leaf, Star, SendPlane2, Sun, Edit, Unlink, CheckboxBlank,
Checkbox, MapPin, ChevronDown, Youtube, Equalizer, BankCard, SendPlane, ArrowRightCircle,
ListCheck, Phone, Football, ArrowRightDown, Macbook, Eye, SunCloudy, ArrowLeftCircle, Gift,
Car, Drive, ArrowLeftDown, MoneyCnyBox, Share, WifiOff, ShieldCheck, Riding, Twitter,
Filter, HeartPulse, ErrorWarning, Calendar, ArrowRightUp, AddCircle, Slack, Cloud, Ie,
Suitcase, CheckboxBlankCircle, Upload, Messenger, Walk, Pause, MoonCloudy, Rocket, Tablet,
More2, Menu, LineChart, Chrome, Apple, ZoomOut, History, Timer, Tiktok, Run, Film, Moon,
Accessibility, Firefox, StarHalf, EmotionLaugh, LoyaltyCard, Heart, Foggy)
return __AllAssets!!
}
52 changes: 26 additions & 26 deletions build/icons/compose/vitaminicons/__Line.kt
Original file line number Diff line number Diff line change
Expand Up @@ -249,31 +249,31 @@ public val LineGroup.AllAssets: ____KtList<ImageVector>
if (__AllAssets != null) {
return __AllAssets!!
}
__AllAssets= listOf(More2, VolumeUp, ThumbUp, Rss, File, ShieldCheck, Exchange, Distance,
Feedback, BodyScan, VolumeMute, ShoppingCart, Counter, SelectedByDecathlon, Pinterest,
SecurePayment, Tablet, Pause, Foggy, Drizzle, Heart, Emotion, ZoomIn, BankCard, Stop,
Unlink, Tiktok, Flashlight, EyeOff, CheckboxMultiple, Chrome, EmotionNormal, Home, Printer,
ArrowLeftCircle, Twitter, Suitcase, Keyboard, Download, Snapchat, Smartphone, Music2, Lock,
CloseCircle, ExternalLink, Menu, DeleteBin, Facebook, CheckboxBlank, CustomerService, Seed2,
PlayCircle, Fullscreen, CheckboxBlankCircle, Share, Sun, Database, ArrowRight, Calendar2,
Showers, LoyaltyCard, Firefox, Time, RadioButton, Edit, Messenger, ArrowUpDown, ThumbDown,
Recycle, Trophy, ShareIos, Hourglass, Accessibility, ListCheck, ArrowDown, ArrowRightUp,
Barcode, Mic, Camera, Viber, Telegram, Hail, SendPlane2, Macbook, Repeat, Add, Image,
Package, Function, More, Football, ArrowUp, Rainy, Grid, ArrowLeftDown, MoneyDollarBox,
PriceTag, ArrowGoForward, MoneyPoundBox, Mac, QrScan, Windy, ArrowLeft, Music, Settings,
MoneyCnyBox, Focus, ChevronRight, TempCold, Message, ShareAndroid, VolumeDown, ArrowGoBack,
EmotionSad, Search, Eye, Award, MailSend, Bill, Whatsapp, Youtube, Alert, Seed1, StopCircle,
Navigation, Check, Instagram, Safari, Wallet, CalendarDate, Riding, Rocket, Attachment,
TShirt, HearingImpairment, Fire, TempHot, WifiOff, ArrowRightDown, Apple, Line, Scales, Run,
PauseCircle, Subtract, EmotionUnhappy, KakaoTalk, Visa, VolumeAlert, SunCloudy, BarChart,
Question, Cloud, MapPin, Play, Ie, Train, Google, Information, Star, ArrowLeftRight, Earth,
Task, AddCircle, Moon, ArrowUpCircle, ListSettings, Tools, Close, Snowy, Notification, Film,
Walk, ArrowLeftUp, Amazon, Github, Timer, Car, Direction, Slack, Seed3, Checkbox,
CheckboxCircle, ErrorWarning, MoneyEuroBox, MoonCloudy, ChevronDown, Truck, HeartPulse,
EmotionLaugh, Naver, Return, Forbid, Thunderstorms, Logout, Gift, CloudWindy, CalendarCheck,
Link, Filter, Drive, LineChart, Ruler, Android, FileCopy, PieChart, Upload, Mastercard,
Sparkles, ChevronLeft, User, Mist, Mail, Group, Phone, ZoomOut, Lightbulb, ArrowDownCircle,
WifiOn, Store, Leaf, Refund, Calendar, Refresh, ChevronUp, StarHalf, Equalizer, ShoppingBag,
History, FilterOff, SendPlane, ShutDown, ArrowRightCircle)
__AllAssets= listOf(Grid, Search, VolumeMute, Task, PlayCircle, Earth, Flashlight, MailSend,
Snowy, Windy, PauseCircle, ShareIos, PriceTag, EyeOff, Mac, Information, Tools, Repeat,
CustomerService, Hourglass, Distance, RadioButton, User, Fullscreen, MoneyPoundBox, Android,
ThumbDown, VolumeUp, MoneyEuroBox, Home, ArrowLeftUp, Naver, Alert, Music, Smartphone,
TShirt, FilterOff, ArrowGoForward, Visa, Recycle, ShoppingBag, Function, Logout, Viber,
Counter, Github, Thunderstorms, HearingImpairment, ArrowUpCircle, Database, QrScan, File,
ZoomIn, EmotionNormal, Sparkles, Keyboard, Question, Lock, Fire, StopCircle, Package,
ArrowLeft, Instagram, Link, CalendarDate, Store, Return, ArrowLeftRight, Safari, DeleteBin,
Group, KakaoTalk, Settings, ShareAndroid, PieChart, Mail, Download, Time, ExternalLink,
SecurePayment, CloseCircle, BarChart, Seed2, Scales, ArrowDownCircle, ArrowGoBack, ArrowUp,
Calendar2, Train, Wallet, ChevronRight, ListSettings, Telegram, ChevronLeft, Exchange,
Refund, Stop, WifiOn, Seed3, ShutDown, ArrowRight, Ruler, CalendarCheck, Direction, Seed1,
Trophy, Check, Focus, EmotionSad, TempHot, Rss, EmotionUnhappy, CloudWindy, ShoppingCart,
Add, CheckboxMultiple, Close, BodyScan, Mic, Emotion, TempCold, ArrowUpDown, Subtract,
VolumeDown, Refresh, Snapchat, Image, SelectedByDecathlon, Lightbulb, Drizzle, Music2,
VolumeAlert, Navigation, ChevronUp, Message, Award, Showers, ArrowDown, Play, Notification,
Forbid, Barcode, Bill, MoneyDollarBox, Facebook, Mist, Feedback, Camera, Printer, Amazon,
CheckboxCircle, FileCopy, Pinterest, Truck, Mastercard, Hail, Whatsapp, Google, More, Line,
ThumbUp, Attachment, Rainy, Leaf, Star, SendPlane2, Sun, Edit, Unlink, CheckboxBlank,
Checkbox, MapPin, ChevronDown, Youtube, Equalizer, BankCard, SendPlane, ArrowRightCircle,
ListCheck, Phone, Football, ArrowRightDown, Macbook, Eye, SunCloudy, ArrowLeftCircle, Gift,
Car, Drive, ArrowLeftDown, MoneyCnyBox, Share, WifiOff, ShieldCheck, Riding, Twitter,
Filter, HeartPulse, ErrorWarning, Calendar, ArrowRightUp, AddCircle, Slack, Cloud, Ie,
Suitcase, CheckboxBlankCircle, Upload, Messenger, Walk, Pause, MoonCloudy, Rocket, Tablet,
More2, Menu, LineChart, Chrome, Apple, ZoomOut, History, Timer, Tiktok, Run, Film, Moon,
Accessibility, Firefox, StarHalf, EmotionLaugh, LoyaltyCard, Heart, Foggy)
return __AllAssets!!
}
222 changes: 132 additions & 90 deletions src/scripts/assets/convert-svg-to-ios.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,24 +104,32 @@ shell.ls('build/assets/svg/flags').forEach((file) => {
.toUpperCase()
.replaceAll('-', '')}")\n`;

shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
fs.readFile(`.temp-svg-assets/all/${file}`, (err, data1) => {
if (err) throw err;
fs.readFile(`build/assets/svg/all/${file}`, (err, data2) => {
if (err) throw err;
if (!data1.equals(data2)) {
shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
}
});
});
});

vitaminAssetsCoreFile += ` }
Expand All @@ -140,24 +148,32 @@ shell.ls('build/assets/svg/logos').forEach((file) => {
fileName.split('.pdf')[0].replaceAll('-', ' ')
)} = VitaminAsset(name: "${fileName.split('.pdf')[0]}")\n`;

shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
fs.readFile(`.temp-svg-assets/all/${file}`, (err, data1) => {
if (err) throw err;
fs.readFile(`build/assets/svg/all/${file}`, (err, data2) => {
if (err) throw err;
if (!data1.equals(data2)) {
shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
}
});
});
});

vitaminAssetsCoreFile += ` }
Expand All @@ -174,24 +190,32 @@ shell.ls('build/assets/svg/payments').forEach((file) => {
fileName.split('.pdf')[0].replaceAll('-', ' ')
)} = VitaminAsset(name: "${fileName.split('.pdf')[0]}")\n`;

shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
fs.readFile(`.temp-svg-assets/all/${file}`, (err, data1) => {
if (err) throw err;
fs.readFile(`build/assets/svg/all/${file}`, (err, data2) => {
if (err) throw err;
if (!data1.equals(data2)) {
shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
}
});
});
});

vitaminAssetsCoreFile += ` }
Expand All @@ -210,24 +234,32 @@ shell.ls('build/assets/svg/placeholders').forEach((file) => {
fileName.split('.pdf')[0].replaceAll('-', ' ')
)} = VitaminAsset(name: "${fileName.split('.pdf')[0]}")\n`;

shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
fs.readFile(`.temp-svg-assets/all/${file}`, (err, data1) => {
if (err) throw err;
fs.readFile(`build/assets/svg/all/${file}`, (err, data2) => {
if (err) throw err;
if (!data1.equals(data2)) {
shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
}
});
});
});

vitaminAssetsCoreFile += ` }
Expand All @@ -244,26 +276,36 @@ shell.ls('build/assets/svg/shipping').forEach((file) => {
fileName.split('.pdf')[0].replaceAll('-', ' ')
)} = VitaminAsset(name: "${fileName.split('.pdf')[0]}")\n`;

shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
fs.readFile(`.temp-svg-assets/all/${file}`, (err, data1) => {
if (err) throw err;
fs.readFile(`build/assets/svg/all/${file}`, (err, data2) => {
if (err) throw err;
if (!data1.equals(data2)) {
shell.mkdir(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}`
);
fs.writeFileSync(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/Contents.json`,
JSON.stringify(assetContentsJson(fileName), null, 2)
);

const doc = new PDFDocument({ size: [64, 64] }),
stream = fs.createWriteStream(
`build/assets/ios/Sources/VitaminCore/Foundations/Assets/VitaminAssets.xcassets/${directoryName}/${fileName}`
),
svg = data.toString();

SVGtoPDF(doc, svg, 0, 0);

doc.pipe(stream);
doc.end();
}
});
});
});

shell.rm('-rf', '.temp-svg-assets');

assetsModelSectionsFile += ` AssetsModel.Section(name: "Flags", items: [\n`;
shell.ls('build/assets/svg/flags').forEach((file, index) => {
assetsModelSectionsFile += ` VitaminAssets.Flag.${file
Expand Down
Loading

0 comments on commit 01ea6f7

Please sign in to comment.