use std::fmt;
#[derive(Debug, Clone, PartialEq)]
pub struct GitmojiType {
pub emoji: &'static str,
pub code: &'static str,
pub description: &'static str,
pub name: &'static str,
}
impl fmt::Display for GitmojiType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{} {}", self.emoji, self.description)
}
}
impl GitmojiType {
pub fn all() -> Vec<&'static GitmojiType> {
GITMOJIS.iter().collect()
}
pub fn from_code(code: &str) -> Option<&'static GitmojiType> {
GITMOJIS.iter().find(|g| g.code == code)
}
pub fn from_emoji(emoji: &str) -> Option<&'static GitmojiType> {
GITMOJIS.iter().find(|g| g.emoji == emoji)
}
}
static GITMOJIS: &[GitmojiType] = &[
GitmojiType {
emoji: "๐จ",
code: ":art:",
description: "Improve structure / format of the code.",
name: "art",
},
GitmojiType {
emoji: "โก๏ธ",
code: ":zap:",
description: "Improve performance.",
name: "zap",
},
GitmojiType {
emoji: "๐ฅ",
code: ":fire:",
description: "Remove code or files.",
name: "fire",
},
GitmojiType {
emoji: "๐",
code: ":bug:",
description: "Fix a bug.",
name: "bug",
},
GitmojiType {
emoji: "๐๏ธ",
code: ":ambulance:",
description: "Critical hotfix.",
name: "ambulance",
},
GitmojiType {
emoji: "โจ",
code: ":sparkles:",
description: "Introduce new features.",
name: "sparkles",
},
GitmojiType {
emoji: "๐",
code: ":memo:",
description: "Add or update documentation.",
name: "memo",
},
GitmojiType {
emoji: "๐",
code: ":rocket:",
description: "Deploy stuff.",
name: "rocket",
},
GitmojiType {
emoji: "๐",
code: ":lipstick:",
description: "Add or update the UI and style files.",
name: "lipstick",
},
GitmojiType {
emoji: "๐",
code: ":tada:",
description: "Begin a project.",
name: "tada",
},
GitmojiType {
emoji: "โ
",
code: ":white_check_mark:",
description: "Add, update, or pass tests.",
name: "white-check-mark",
},
GitmojiType {
emoji: "๐๏ธ",
code: ":lock:",
description: "Fix security or privacy issues.",
name: "lock",
},
GitmojiType {
emoji: "๐",
code: ":closed_lock_with_key:",
description: "Add or update secrets.",
name: "closed-lock-with-key",
},
GitmojiType {
emoji: "๐",
code: ":bookmark:",
description: "Release / Version tags.",
name: "bookmark",
},
GitmojiType {
emoji: "๐จ",
code: ":rotating_light:",
description: "Fix compiler / linter warnings.",
name: "rotating-light",
},
GitmojiType {
emoji: "๐ง",
code: ":construction:",
description: "Work in progress.",
name: "construction",
},
GitmojiType {
emoji: "๐",
code: ":green_heart:",
description: "Fix CI Build.",
name: "green-heart",
},
GitmojiType {
emoji: "โฌ๏ธ",
code: ":arrow_down:",
description: "Downgrade dependencies.",
name: "arrow-down",
},
GitmojiType {
emoji: "โฌ๏ธ",
code: ":arrow_up:",
description: "Upgrade dependencies.",
name: "arrow-up",
},
GitmojiType {
emoji: "๐",
code: ":pushpin:",
description: "Pin dependencies to specific versions.",
name: "pushpin",
},
GitmojiType {
emoji: "๐ท",
code: ":construction_worker:",
description: "Add or update CI build system.",
name: "construction-worker",
},
GitmojiType {
emoji: "๐",
code: ":chart_with_upwards_trend:",
description: "Add or update analytics or track code.",
name: "chart-with-upwards-trend",
},
GitmojiType {
emoji: "โป๏ธ",
code: ":recycle:",
description: "Refactor code.",
name: "recycle",
},
GitmojiType {
emoji: "โ",
code: ":heavy_plus_sign:",
description: "Add a dependency.",
name: "heavy-plus-sign",
},
GitmojiType {
emoji: "โ",
code: ":heavy_minus_sign:",
description: "Remove a dependency.",
name: "heavy-minus-sign",
},
GitmojiType {
emoji: "๐ง",
code: ":wrench:",
description: "Add or update configuration files.",
name: "wrench",
},
GitmojiType {
emoji: "๐จ",
code: ":hammer:",
description: "Add or update development scripts.",
name: "hammer",
},
GitmojiType {
emoji: "๐",
code: ":globe_with_meridians:",
description: "Internationalization and localization.",
name: "globe-with-meridians",
},
GitmojiType {
emoji: "โ๏ธ",
code: ":pencil2:",
description: "Fix typos.",
name: "pencil2",
},
GitmojiType {
emoji: "๐ฉ",
code: ":poop:",
description: "Write bad code that needs to be improved.",
name: "poop",
},
GitmojiType {
emoji: "โช๏ธ",
code: ":rewind:",
description: "Revert changes.",
name: "rewind",
},
GitmojiType {
emoji: "๐",
code: ":twisted_rightwards_arrows:",
description: "Merge branches.",
name: "twisted-rightwards-arrows",
},
GitmojiType {
emoji: "๐ฆ๏ธ",
code: ":package:",
description: "Add or update compiled files or packages.",
name: "package",
},
GitmojiType {
emoji: "๐ฝ๏ธ",
code: ":alien:",
description: "Update code due to external API changes.",
name: "alien",
},
GitmojiType {
emoji: "๐",
code: ":truck:",
description: "Move or rename resources (e.g.: files, paths, routes).",
name: "truck",
},
GitmojiType {
emoji: "๐",
code: ":page_facing_up:",
description: "Add or update license.",
name: "page-facing-up",
},
GitmojiType {
emoji: "๐ฅ",
code: ":boom:",
description: "Introduce breaking changes.",
name: "boom",
},
GitmojiType {
emoji: "๐ฑ",
code: ":bento:",
description: "Add or update assets.",
name: "bento",
},
GitmojiType {
emoji: "โฟ๏ธ",
code: ":wheelchair:",
description: "Improve accessibility.",
name: "wheelchair",
},
GitmojiType {
emoji: "๐ก",
code: ":bulb:",
description: "Add or update comments in source code.",
name: "bulb",
},
GitmojiType {
emoji: "๐ป",
code: ":beers:",
description: "Write code drunkenly.",
name: "beers",
},
GitmojiType {
emoji: "๐ฌ",
code: ":speech_balloon:",
description: "Add or update text and literals.",
name: "speech-balloon",
},
GitmojiType {
emoji: "๐๏ธ",
code: ":card_file_box:",
description: "Perform database related changes.",
name: "card-file-box",
},
GitmojiType {
emoji: "๐",
code: ":loud_sound:",
description: "Add or update logs.",
name: "loud-sound",
},
GitmojiType {
emoji: "๐",
code: ":mute:",
description: "Remove logs.",
name: "mute",
},
GitmojiType {
emoji: "๐ฅ",
code: ":busts_in_silhouette:",
description: "Add or update contributor(s).",
name: "busts-in-silhouette",
},
GitmojiType {
emoji: "๐ธ",
code: ":children_crossing:",
description: "Improve user experience / usability.",
name: "children-crossing",
},
GitmojiType {
emoji: "๐๏ธ",
code: ":building_construction:",
description: "Make architectural changes.",
name: "building-construction",
},
GitmojiType {
emoji: "๐ฑ",
code: ":iphone:",
description: "Work on responsive design.",
name: "iphone",
},
GitmojiType {
emoji: "๐คก",
code: ":clown_face:",
description: "Mock things.",
name: "clown-face",
},
GitmojiType {
emoji: "๐ฅ",
code: ":egg:",
description: "Add or update an easter egg.",
name: "egg",
},
GitmojiType {
emoji: "๐",
code: ":see_no_evil:",
description: "Add or update a .gitignore file.",
name: "see-no-evil",
},
GitmojiType {
emoji: "๐ธ",
code: ":camera_flash:",
description: "Add or update snapshots.",
name: "camera-flash",
},
GitmojiType {
emoji: "โ๏ธ",
code: ":alembic:",
description: "Perform experiments.",
name: "alembic",
},
GitmojiType {
emoji: "๐๏ธ",
code: ":mag:",
description: "Improve SEO.",
name: "mag",
},
GitmojiType {
emoji: "๐ท๏ธ",
code: ":label:",
description: "Add or update types.",
name: "label",
},
GitmojiType {
emoji: "๐ฑ",
code: ":seedling:",
description: "Add or update seed files.",
name: "seedling",
},
GitmojiType {
emoji: "๐ฉ",
code: ":triangular_flag_on_post:",
description: "Add, update, or remove feature flags.",
name: "triangular-flag-on-post",
},
GitmojiType {
emoji: "๐ฅ
",
code: ":goal_net:",
description: "Catch errors.",
name: "goal-net",
},
GitmojiType {
emoji: "๐ซ",
code: ":dizzy:",
description: "Add or update animations and transitions.",
name: "dizzy",
},
GitmojiType {
emoji: "๐๏ธ",
code: ":wastebasket:",
description: "Deprecate code that needs to be cleaned up.",
name: "wastebasket",
},
GitmojiType {
emoji: "๐",
code: ":passport_control:",
description: "Work on code related to authorization, roles and permissions.",
name: "passport-control",
},
GitmojiType {
emoji: "๐ฉน",
code: ":adhesive_bandage:",
description: "Simple fix for a non-critical issue.",
name: "adhesive-bandage",
},
GitmojiType {
emoji: "๐ง",
code: ":monocle_face:",
description: "Data exploration/inspection.",
name: "monocle-face",
},
GitmojiType {
emoji: "โฐ๏ธ",
code: ":coffin:",
description: "Remove dead code.",
name: "coffin",
},
GitmojiType {
emoji: "๐งช",
code: ":test_tube:",
description: "Add a failing test.",
name: "test-tube",
},
GitmojiType {
emoji: "๐",
code: ":necktie:",
description: "Add or update business logic.",
name: "necktie",
},
GitmojiType {
emoji: "๐ฉบ",
code: ":stethoscope:",
description: "Add or update healthcheck.",
name: "stethoscope",
},
GitmojiType {
emoji: "๐งฑ",
code: ":bricks:",
description: "Infrastructure related changes.",
name: "bricks",
},
GitmojiType {
emoji: "๐งโ๐ป",
code: ":technologist:",
description: "Improve developer experience.",
name: "technologist",
},
GitmojiType {
emoji: "๐ธ",
code: ":money_with_wings:",
description: "Add sponsorships or money related infrastructure.",
name: "money-with-wings",
},
GitmojiType {
emoji: "๐งต",
code: ":thread:",
description: "Add or update code related to multithreading or concurrency.",
name: "thread",
},
GitmojiType {
emoji: "๐ฆบ",
code: ":safety_vest:",
description: "Add or update code related to validation.",
name: "safety-vest",
},
GitmojiType {
emoji: "โ๏ธ",
code: ":airplane:",
description: "Improve offline support.",
name: "airplane",
},
GitmojiType {
emoji: "๐ฆ",
code: ":t-rex:",
description: "Code that adds backwards compatibility.",
name: "t-rex",
},
];