{
  "Moo Package": {
    "scope": "perl",
    "prefix": "package-moo",
    "body": [
      "# This Source Code Form is subject to the terms of the Mozilla Public",
      "# License, v. 2.0. If a copy of the MPL was not distributed with this",
      "# file, You can obtain one at http://mozilla.org/MPL/2.0/.",
      "#",
      "# This Source Code Form is \"Incompatible With Secondary Licenses\", as",
      "# defined by the Mozilla Public License, v. 2.0.\n",
      "package ${1:${TM_FILENAME_BASE}};",
      "use 5.10.1;",
      "use Moo;\n",
      "",
      "${2}",
      "",
      "1;"
    ],
  },
  "Mojo Command": {
    "scope": "perl",
    "prefix": "package-command",
    "body": [
      "# This Source Code Form is subject to the terms of the Mozilla Public",
      "# License, v. 2.0. If a copy of the MPL was not distributed with this",
      "# file, You can obtain one at http://mozilla.org/MPL/2.0/.",
      "#",
      "# This Source Code Form is \"Incompatible With Secondary Licenses\", as",
      "# defined by the Mozilla Public License, v. 2.0.",
      "",
      "package Bugzilla::App::Command::${TM_FILENAME_BASE};   ## no critic (Capitalization)",
      "use Mojo::Base 'Mojolicious::Command';",
      "",
      "use Bugzilla::Constants;",
      "use Bugzilla::Logging;",
      "use Mojo::Util 'getopt';",
      "",
      "has description => '${1}';",
      "has usage       => sub { shift->extract_usage };",
      "",
      "sub run {",
        "  my (\\$self, @args) = @_;",
        "  my \\$option = 'default';",
        "  my \\$required;",
        "",
        "  Bugzilla->usage_mode(USAGE_MODE_CMDLINE);",
        "  getopt \\@args,",
        "    'option|o=s'    => \\\\\\$option,",
        "    'required|r=s'  => \\\\\\$required;",
        "",
        "  die \\$self->usage unless \\$required;",
        "",
        "$0",
        "",
        "}",
        "",
        "1;",
        "",
        "__END__",
        "",
        "=head1 NAME",
        "",
        "Bugzilla::App::Command::${TM_FILENAME_BASE} - $1",
        "",
        "=head1 SYNOPSIS",
        "",
        "  Usage: APPLICATION ${TM_FILENAME_BASE}",
        "",
        "    ./bugzilla.pl ${TM_FILENAME_BASE} --option=foo --required=bar",
        "",
        "  Options:",
        "    -h, --help               Print a brief help message and exits.",
        "    -o, --option value       Some option that has default.",
        "    -r, --required str       Some required option.",
        "",
        "=head1 DESCRIPTION",
        "",
        "$2",
        "",
        "=head1 ATTRIBUTES",
        "",
        "L<Bugzilla::App::Command::${TM_FILENAME_BASE}> inherits all attributes from",
        "L<Mojolicious::Command> and implements the following new ones.",
        "",
        "=head2 description",
        "",
        "  my \\$description = \\$${TM_FILENAME_BASE}->description;",
        "  \\$${TM_FILENAME_BASE}        = \\$${TM_FILENAME_BASE}->description('Foo');",
        "",
        "Short description of this command, used for the command list.",
        "",
        "=head2 usage",
        "",
        "  my \\$usage = \\$${TM_FILENAME_BASE}->usage;",
        "  \\$${TM_FILENAME_BASE}  = \\$${TM_FILENAME_BASE}->usage('Foo');",
        "",
        "Usage information for this command, used for the help screen.",
        "",
        "=head1 METHODS",
        "",
        "L<Bugzilla::App::Command::${TM_FILENAME_BASE}> inherits all methods from",
        "L<Mojolicious::Command> and implements the following new ones.",
        "",
        "=head2 run",
        "",
        "  \\$${TM_FILENAME_BASE}->run(@ARGV);",
        "",
        "Run this command.",
      ]
    },
    "Mojo Controller": {
      "scope": "perl",
      "prefix": "package-controller",
      "body": [
        "# This Source Code Form is subject to the terms of the Mozilla Public",
        "# License, v. 2.0. If a copy of the MPL was not distributed with this",
        "# file, You can obtain one at http://mozilla.org/MPL/2.0/.",
        "#",
        "# This Source Code Form is \"Incompatible With Secondary Licenses\", as",
        "# defined by the Mozilla Public License, v. 2.0.\n",
        "package Bugzilla::App::${TM_FILENAME_BASE};",
        "use Mojo::Base qw( Mojolicious::Controller );\n",
        "use Bugzilla::Logging;",
        "",
        "sub setup_routes {",
          "  my (\\$class, \\$r) = @_;",
          "  \\$r->get('/$1')->to('${TM_FILENAME_BASE}#$1');",
          "}",
          "",
          "sub ${1} {",
            "  my (\\$self) = @_;",
            "  $0",
            "}",
            "",
            "1;"
          ]
        },
        "DBIC Result": {
          "scope": "perl",
          "description": "DBIx::Class Result",
          "prefix": "package-dbic",
          "body": [
            "# This Source Code Form is subject to the terms of the Mozilla Public",
            "# License, v. 2.0. If a copy of the MPL was not distributed with this",
            "# file, You can obtain one at http://mozilla.org/MPL/2.0/.",
            "#",
            "# This Source Code Form is \"Incompatible With Secondary Licenses\", as",
            "# defined by the Mozilla Public License, v. 2.0.\n",
            "package Bugzilla::Model::Result::${TM_FILENAME_BASE};",
            "use Mojo::Base 'DBIx::Class::Core';",
            "",
            "__PACKAGE__->table('${1:${TM_FILENAME_BASE:/downcase}}');",
            "__PACKAGE__->set_primary_key('${2:id}');",
            "__PACKAGE__->add_columns(qw[ ${3:columns} ]);",
            "",
            "$0",
            "",
            "1;"
          ],
        },
        "License Header": {
          "scope": "perl",
          "prefix": "mpl",
          "body": [
            "# This Source Code Form is subject to the terms of the Mozilla Public",
            "# License, v. 2.0. If a copy of the MPL was not distributed with this",
            "# file, You can obtain one at http://mozilla.org/MPL/2.0/.",
            "#",
            "# This Source Code Form is \"Incompatible With Secondary Licenses\", as",
            "# defined by the Mozilla Public License, v. 2.0.\n",
            "",
            "$0"
          ]
        },
        "Script Header": {
          "scope": "perl",
          "prefix": "script",
          "body": [
            "#!/usr/bin/env perl",
            "# This Source Code Form is subject to the terms of the Mozilla Public",
            "# License, v. 2.0. If a copy of the MPL was not distributed with this",
            "# file, You can obtain one at http://mozilla.org/MPL/2.0/.",
            "#",
            "# This Source Code Form is \"Incompatible With Secondary Licenses\", as",
            "# defined by the Mozilla Public License, v. 2.0.\n",
            "use Mojo::Base -strict;",
            "",
            "$0"
          ]
        }
      }
