Developer-Dashboard
view release on metacpan or search on metacpan
lib/Developer/Dashboard/DockerCompose.pm view on Meta::CPAN
=head1 SYNOPSIS
my $docker = Developer::Dashboard::DockerCompose->new(
config => $config,
paths => $paths,
plugins => $plugins,
);
=head1 DESCRIPTION
This module resolves layered docker compose inputs into a final transparent
docker compose command line and can optionally execute it.
=head1 METHODS
=head2 new, resolve, list_services, run
Construct, resolve, list, and optionally execute compose operations.
=for comment FULL-POD-DOC START
lib/Developer/Dashboard/Runtime/Result.pm view on Meta::CPAN
also manage the immediate previous-hook payload in C<LAST_RESULT> /
C<LAST_RESULT_FILE> and detect the explicit C<[[STOP]]> stderr marker.
=for comment FULL-POD-DOC START
=head1 PURPOSE
This module manages the structured C<RESULT> and C<LAST_RESULT> state passed
between command hooks and their final command target. It serializes hook
stdout, stderr, and exit codes, tracks the immediate previous hook in one
stable hash shape, decodes that state for later hooks, and transparently
spills oversized payloads into C<RESULT_FILE> or C<LAST_RESULT_FILE> when the
environment would become too large.
=head1 WHY IT EXISTS
It exists because hook chaining needs a transport format that is explicit and
portable. Encoding that state in one module keeps hook readers and writers
synchronized, makes the immediate previous-hook handoff predictable, gives the
runtime one explicit place to detect the C<[[STOP]]> marker, and avoids
argument-list failures when a long hook chain produces too much output for
lib/Developer/Dashboard/Web/App.pm view on Meta::CPAN
overflow-wrap: normal;
overflow: auto;
tab-size: 4;
letter-spacing: 0;
}
.editor-overlay-viewport {
position: absolute;
inset: 0;
overflow: hidden;
pointer-events: none;
background: transparent;
}
.editor-overlay {
position: absolute;
top: 0;
left: 0;
min-width: 100%;
color: #e6edf3;
background: transparent;
unicode-bidi: plaintext;
direction: ltr;
will-change: transform;
}
.instruction-editor {
position: relative;
z-index: 1;
height: 520px;
color: transparent;
border: 0;
resize: vertical;
background: transparent;
caret-color: #f8f8f2;
outline: none;
-webkit-text-fill-color: transparent;
unicode-bidi: plaintext;
direction: ltr;
overflow: auto;
scrollbar-gutter: stable both-edges;
}
.instruction-editor::selection {
background: rgba(121, 192, 255, 0.35);
-webkit-text-fill-color: transparent;
}
.tok-directive { color: #ffd866; font-weight: normal; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
.tok-separator { color: #5c6370; }
.tok-html { color: #78dce8; }
.tok-tag { color: #ff7ab2; }
.tok-attr { color: #ffcf6a; }
.tok-value { color: #a9dc76; }
.tok-css { color: #78dce8; }
.tok-js { color: #ab9df2; }
.tok-code { color: #a9dc76; }
share/seeded-pages/api-dashboard.page view on Meta::CPAN
.api-collection-card.is-active { border-color:#0b7a75; box-shadow:0 0 0 2px rgba(11,122,117,0.10); }
.api-collection-card h3 { font-size:1rem; margin-bottom:8px; }
.api-node-list { list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.api-node-list ul { list-style:none; margin:8px 0 0 14px; padding:0 0 0 10px; display:grid; gap:6px; border-left:1px dashed #d8ccb8; }
.api-node-button { width:100%; text-align:left; border:1px solid #e9dec8; border-radius:10px; background:#fff; padding:8px 10px; cursor:pointer; color:#1f2a2e; }
.api-node-button:hover { border-color:#0b7a75; color:#0b7a75; }
.api-node-button.is-active { border-color:#0b7a75; background:#e7f5f4; color:#0b7a75; font-weight:700; }
.api-node-folder { font-weight:700; background:#f8f1e4; }
.api-empty { color:#6a767b; font-style:italic; }
.api-location { margin:0 0 12px; padding:10px 12px; border:1px dashed #d8ccb8; border-radius:12px; background:#fffdf8; color:#6a4512; font-size:0.92rem; line-height:1.5; }
.api-tab-close { border:0; background:transparent; color:inherit; cursor:pointer; padding:0; font-size:1rem; line-height:1; }
.api-editor-grid { display:grid; gap:14px; grid-template-columns:repeat(2, minmax(0, 1fr)); }
.api-field { display:grid; gap:6px; }
.api-field label { font-weight:700; color:#6a4512; }
.api-field input, .api-field select, .api-field textarea { width:100%; box-sizing:border-box; padding:10px 12px; border:1px solid #d8ccb8; border-radius:12px; font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size:0.95rem; ba...
.api-field textarea { min-height:140px; resize:vertical; }
.api-field-full { grid-column:1 / -1; }
.api-token-shell, .api-auth-shell { border:1px solid #e6ddcf; border-radius:14px; padding:12px; background:#fffaf1; }
.api-token-help { margin:0; color:#6a767b; font-size:0.9rem; }
.api-token-fields { display:grid; gap:10px; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); margin-top:12px; }
.api-token-field { display:grid; gap:6px; }
share/seeded-pages/sql-dashboard.page view on Meta::CPAN
.sql-panel.is-active { display:block; }
.sql-grid { display:grid; gap:16px; }
.sql-two-col { grid-template-columns: minmax(320px, 1fr) minmax(360px, 2fr); }
.sql-card { border:1px solid #d8dee3; background:#fbfcfd; padding:14px; }
.sql-card h3 { margin-top:0; }
.sql-form-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:12px; }
.sql-form-grid label, .sql-stack label { display:grid; gap:6px; font-weight:600; color:#24313c; }
.sql-form-grid input, .sql-form-grid textarea, .sql-stack textarea, .sql-stack select, .sql-stack input { width:100%; box-sizing:border-box; padding:10px 12px; border:1px solid #b8c1c9; background:#fff; font-family:monospace; }
.sql-stack { display:grid; gap:12px; }
.sql-toolbar { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
.sql-action { display:inline-flex; align-items:center; gap:4px; padding:2px 0; border:none; background:transparent; color:#345068; text-decoration:none; font-weight:600; font-size:13px; line-height:1.3; }
.sql-action:hover, .sql-action:focus { color:#102131; text-decoration:underline; }
.sql-action.sql-action-quiet { color:#617181; font-weight:500; }
.sql-badge { display:inline-block; padding:4px 8px; border:1px solid #d5dde3; background:#f8fafb; color:#465560; font-size:12px; }
.sql-workspace-panels { border:1px solid #cbd3da; background:#f7fafc; }
.sql-workspace-panel { display:none; padding:18px; }
.sql-workspace-panel.is-active { display:block; }
.sql-workspace-nav { display:grid; gap:16px; align-content:start; padding:14px; border:1px solid #cbd3da; background:linear-gradient(180deg, #eef3f7 0%, #e6edf3 100%); }
.sql-workspace-editor { display:grid; gap:14px; align-content:start; padding:0; background:#fbfcfd; }
.sql-nav-section { display:grid; gap:10px; }
.sql-nav-section h3, .sql-nav-section h4 { margin:0; }
( run in 2.801 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )