config($key) This queries the charms config
resource($key)

Pulls the resource bound to $key

unit($key)

Queries the Juju unit for a specific value unit 'public-address'; This above code would pull the public-address of the unit in the context of the running charm

status($level, $msg)

Sets the charm's current status of execution

plugin($name, %opts)

Load a plugin, optionally passing options

NAME

App::CharmKit - ez pz charm authoring

SYNOPSIS

#!/usr/bin/env perl
#
# In hooks/install
BEGIN {
  system "apt-get install cpanminus";
  system "cpanm -n App::CharmKit";
}

use charm;

pkg ['znc', 'znc-perl', 'znc-tcl', 'znc-python'],
    ensure => "present";

my $hook_path = $ENV{JUJU_CHARM_DIR};

file "/etc/systemd/system/znc.service", source => "$hook_path/templates/znc.service";

my $content = template("$hook_path/templates/znc.conf", port => config 'port');
file "/home/ubuntu/.znc/configs", ensure => "directory", owner => "ubuntu", group => "ubuntu";
file "/home/ubuntu/.znc/configs/znc.conf",
  owner     => "ubuntu",
  group     => "ubuntu",
  content   => $content,
  on_change => sub { service znc => "restart" };

DESCRIPTION

Sugar package for making Juju charm authoring easier. We import several underlying packages such as Rex and Path::Tiny.

AUTHOR

Adam Stokes <adamjs@cpan.org>