├── .dockerignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── CODEOWNERS ├── pull_request_template.md ├── release-drafter.yaml └── workflows │ ├── create-release.yaml │ └── draft-release.yaml ├── .gitignore ├── .nvmrc ├── Dockerfile ├── Dockerfile-debian ├── Dockerfile-debian-rootless ├── Dockerfile-rootless ├── LICENSE ├── README.md ├── __mocks__ ├── codefresh.yml └── requestretry.js ├── brew └── template.rb ├── check-version.js ├── cli.gif ├── docs ├── archetypes │ └── default.md ├── config.toml ├── content │ ├── _header.md │ ├── _index.md │ ├── contexts │ │ └── spec │ │ │ ├── _index.md │ │ │ ├── config.md │ │ │ ├── helm-repository.md │ │ │ ├── secret-yaml.md │ │ │ ├── secret.md │ │ │ └── yaml.md │ ├── external-resources.md │ ├── getting-started │ │ └── _index.md │ ├── installation │ │ ├── _index.md │ │ ├── docker.md │ │ ├── homebrew.md │ │ ├── npm.md │ │ └── yarn.md │ ├── more │ │ └── _index.md │ ├── operate on resources │ │ └── _index.md │ └── pipelines │ │ ├── Run Pipeline.md │ │ └── spec.md ├── docs.spec.js ├── index.js ├── layouts │ └── partials │ │ └── menu-footer.html └── themes │ └── docdock │ ├── LICENSE.md │ ├── README.md │ ├── archetypes │ ├── default.md │ └── slide.md │ ├── exampleSite │ ├── config.toml │ ├── content │ │ ├── _index.md │ │ ├── content-organisation │ │ │ ├── _index.md │ │ │ ├── customize-style │ │ │ │ ├── _index.md │ │ │ │ ├── disable.md │ │ │ │ ├── theme-variants.md │ │ │ │ └── themestyle.md │ │ │ ├── extramenu.md │ │ │ └── logo.md │ │ ├── create-page │ │ │ ├── _index.md │ │ │ ├── homepage.md │ │ │ ├── myslide.md │ │ │ ├── page-images.md │ │ │ └── page-slide.md │ │ ├── credits.md │ │ ├── getting-start │ │ │ ├── _index.md │ │ │ ├── configuration.md │ │ │ └── installation.md │ │ ├── search │ │ │ └── _index.md │ │ ├── shortcodes │ │ │ ├── _index.md │ │ │ ├── alert.md │ │ │ ├── attachments.files │ │ │ │ ├── BachGavotteShort.mp3 │ │ │ │ ├── Carroll_AliceAuPaysDesMerveilles.pdf │ │ │ │ ├── adivorciarsetoca00cape.pdf │ │ │ │ ├── hugo.png │ │ │ │ └── movieselectricsheep-flock-244-32500-2.mp4 │ │ │ ├── attachments.md │ │ │ ├── button.md │ │ │ ├── children │ │ │ │ ├── _index.md │ │ │ │ ├── children-1 │ │ │ │ │ ├── _index.md │ │ │ │ │ └── children-1-1 │ │ │ │ │ │ ├── _index.md │ │ │ │ │ │ └── children-1-1-1 │ │ │ │ │ │ ├── _index.md │ │ │ │ │ │ └── children-1-1-1-1 │ │ │ │ │ │ ├── _index.md │ │ │ │ │ │ └── children-1-1-1-1-1 │ │ │ │ │ │ └── _index.md │ │ │ │ ├── children-2 │ │ │ │ │ ├── _index.md │ │ │ │ │ └── test3.md │ │ │ │ ├── children-3 │ │ │ │ │ └── _index.md │ │ │ │ ├── children-4 │ │ │ │ │ └── _index.md │ │ │ │ └── test.md │ │ │ ├── excerpt-include.md │ │ │ ├── excerpt.md │ │ │ ├── expand.md │ │ │ ├── icon.md │ │ │ ├── mermaid.md │ │ │ ├── notice.md │ │ │ ├── panel.md │ │ │ └── revealjs.md │ │ └── showcase.md │ ├── layouts │ │ ├── partials │ │ │ ├── custom-head.html │ │ │ └── menu-footer.html │ │ └── shortcodes │ │ │ └── ghcontributors.html │ └── static │ │ ├── menu-entry-icon.png │ │ ├── showcase │ │ ├── bitfan.site.png │ │ └── invincible.site.png │ │ ├── style-flex.png │ │ ├── style-original.png │ │ ├── variant-gold.png │ │ ├── variant-gray.png │ │ └── variant-green.png │ ├── i18n │ ├── en.toml │ ├── es.toml │ ├── fr.toml │ └── nb.toml │ ├── images │ ├── screenshot.png │ └── tn.png │ ├── layouts │ ├── 404.html │ ├── _default │ │ ├── baseof.html │ │ ├── li.html │ │ ├── list.html │ │ └── single.html │ ├── index.html │ ├── index.json │ ├── partials │ │ ├── breadcrumb.html │ │ ├── custom-content-footer.html │ │ ├── custom-footer.html │ │ ├── custom-head.html │ │ ├── flex │ │ │ ├── body-aftercontent.html │ │ │ ├── body-beforecontent.html │ │ │ ├── head.html │ │ │ ├── scripts.html │ │ │ └── selectnavigation.html │ │ ├── header.html │ │ ├── language-selector.html │ │ ├── menu-footer.html │ │ ├── menu.html │ │ ├── next-prev-page.html │ │ ├── original │ │ │ ├── body-aftercontent.html │ │ │ ├── body-beforecontent.html │ │ │ ├── head.html │ │ │ └── scripts.html │ │ └── pagination.html │ ├── shortcodes │ │ ├── alert.html │ │ ├── anchor.html │ │ ├── anchorlink.html │ │ ├── attachmentlink.html │ │ ├── attachments.html │ │ ├── button.html │ │ ├── children.html │ │ ├── code.html │ │ ├── emoticon.html │ │ ├── excerpt-include.html │ │ ├── excerpt.html │ │ ├── expand.html │ │ ├── header.html │ │ ├── icon.html │ │ ├── image.html │ │ ├── info.html │ │ ├── label.html │ │ ├── mermaid.html │ │ ├── note.html │ │ ├── notice.html │ │ ├── pagelink.html │ │ ├── pagetreesearch.html │ │ ├── panel.html │ │ ├── recently-updated.html │ │ ├── relref.html │ │ ├── revealjs.html │ │ ├── section.html │ │ ├── task.html │ │ ├── tasklist.html │ │ ├── tip.html │ │ ├── toc.html │ │ ├── unknow.html │ │ ├── userlink.html │ │ ├── viewppt.html │ │ ├── viewxls.html │ │ ├── warning.html │ │ └── well.html │ └── slide │ │ └── single.html │ ├── static │ ├── css │ │ ├── auto-complete.css │ │ ├── bootstrap.min.css │ │ ├── featherlight.min.css │ │ ├── font-awesome.min.css │ │ ├── horsey.css │ │ ├── hybrid.css │ │ └── nucleus.css │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── Inconsolata.eot │ │ ├── Inconsolata.svg │ │ ├── Inconsolata.ttf │ │ ├── Inconsolata.woff │ │ ├── Lato-Bold.ttf │ │ ├── Lato-Bold.woff2 │ │ ├── Lato-Regular.ttf │ │ ├── Lato-Regular.woff2 │ │ ├── Novecentosanswide-Normal-webfont.eot │ │ ├── Novecentosanswide-Normal-webfont.svg │ │ ├── Novecentosanswide-Normal-webfont.ttf │ │ ├── Novecentosanswide-Normal-webfont.woff │ │ ├── Novecentosanswide-Normal-webfont.woff2 │ │ ├── Novecentosanswide-UltraLight-webfont.eot │ │ ├── Novecentosanswide-UltraLight-webfont.svg │ │ ├── Novecentosanswide-UltraLight-webfont.ttf │ │ ├── Novecentosanswide-UltraLight-webfont.woff │ │ ├── Novecentosanswide-UltraLight-webfont.woff2 │ │ ├── Roboto-Italic.ttf │ │ ├── Roboto-Medium.ttf │ │ ├── Roboto-Regular.ttf │ │ ├── RobotoMono-Medium.ttf │ │ ├── RobotoMono-Regular.ttf │ │ ├── Work_Sans_200.eot │ │ ├── Work_Sans_200.svg │ │ ├── Work_Sans_200.ttf │ │ ├── Work_Sans_200.woff │ │ ├── Work_Sans_200.woff2 │ │ ├── Work_Sans_300.eot │ │ ├── Work_Sans_300.svg │ │ ├── Work_Sans_300.ttf │ │ ├── Work_Sans_300.woff │ │ ├── Work_Sans_300.woff2 │ │ ├── Work_Sans_500.eot │ │ ├── Work_Sans_500.svg │ │ ├── Work_Sans_500.ttf │ │ ├── Work_Sans_500.woff │ │ ├── Work_Sans_500.woff2 │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── images │ │ ├── clippy.svg │ │ ├── favicon.png │ │ └── gopher-404.jpg │ ├── js │ │ ├── auto-complete.js │ │ ├── clipboard.min.js │ │ ├── docdock.js │ │ ├── featherlight.min.js │ │ ├── highlight.pack.js │ │ ├── html5shiv-printshiv.min.js │ │ ├── jquery-2.x.min.js │ │ ├── lunr.min.js │ │ ├── modernizr.custom.71422.js │ │ └── search.js │ ├── mermaid │ │ ├── mermaid.css │ │ ├── mermaid.dark.css │ │ ├── mermaid.forest.css │ │ └── mermaid.js │ ├── none.html │ ├── revealjs │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── CONTRIBUTING.md │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── css │ │ │ ├── print │ │ │ │ ├── paper.css │ │ │ │ └── pdf.css │ │ │ ├── reveal.css │ │ │ ├── reveal.scss │ │ │ └── theme │ │ │ │ ├── README.md │ │ │ │ ├── beige.css │ │ │ │ ├── black.css │ │ │ │ ├── blood.css │ │ │ │ ├── league.css │ │ │ │ ├── moon.css │ │ │ │ ├── night.css │ │ │ │ ├── serif.css │ │ │ │ ├── simple.css │ │ │ │ ├── sky.css │ │ │ │ ├── solarized.css │ │ │ │ ├── source │ │ │ │ ├── beige.scss │ │ │ │ ├── black.scss │ │ │ │ ├── blood.scss │ │ │ │ ├── league.scss │ │ │ │ ├── moon.scss │ │ │ │ ├── night.scss │ │ │ │ ├── serif.scss │ │ │ │ ├── simple.scss │ │ │ │ ├── sky.scss │ │ │ │ ├── solarized.scss │ │ │ │ └── white.scss │ │ │ │ ├── template │ │ │ │ ├── mixins.scss │ │ │ │ ├── settings.scss │ │ │ │ └── theme.scss │ │ │ │ └── white.css │ │ ├── demo.html │ │ ├── index.html │ │ ├── js │ │ │ └── reveal.js │ │ ├── lib │ │ │ ├── css │ │ │ │ └── zenburn.css │ │ │ ├── font │ │ │ │ ├── league-gothic │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── league-gothic.css │ │ │ │ │ ├── league-gothic.eot │ │ │ │ │ ├── league-gothic.ttf │ │ │ │ │ └── league-gothic.woff │ │ │ │ └── source-sans-pro │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── source-sans-pro-italic.eot │ │ │ │ │ ├── source-sans-pro-italic.ttf │ │ │ │ │ ├── source-sans-pro-italic.woff │ │ │ │ │ ├── source-sans-pro-regular.eot │ │ │ │ │ ├── source-sans-pro-regular.ttf │ │ │ │ │ ├── source-sans-pro-regular.woff │ │ │ │ │ ├── source-sans-pro-semibold.eot │ │ │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ │ │ ├── source-sans-pro-semibold.woff │ │ │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ │ │ └── source-sans-pro.css │ │ │ └── js │ │ │ │ ├── classList.js │ │ │ │ ├── head.min.js │ │ │ │ └── html5shiv.js │ │ ├── package.json │ │ ├── plugin │ │ │ ├── highlight │ │ │ │ └── highlight.js │ │ │ ├── markdown │ │ │ │ ├── example.html │ │ │ │ ├── example.md │ │ │ │ ├── markdown.js │ │ │ │ └── marked.js │ │ │ ├── math │ │ │ │ └── math.js │ │ │ ├── multiplex │ │ │ │ ├── client.js │ │ │ │ ├── index.js │ │ │ │ ├── master.js │ │ │ │ └── package.json │ │ │ ├── notes-server │ │ │ │ ├── client.js │ │ │ │ ├── index.js │ │ │ │ └── notes.html │ │ │ ├── notes │ │ │ │ ├── notes.html │ │ │ │ └── notes.js │ │ │ ├── print-pdf │ │ │ │ └── print-pdf.js │ │ │ ├── search │ │ │ │ └── search.js │ │ │ └── zoom-js │ │ │ │ └── zoom.js │ │ └── test │ │ │ ├── examples │ │ │ ├── assets │ │ │ │ ├── image1.png │ │ │ │ └── image2.png │ │ │ ├── barebones.html │ │ │ ├── embedded-media.html │ │ │ ├── math.html │ │ │ ├── slide-backgrounds.html │ │ │ └── slide-transitions.html │ │ │ ├── qunit-1.12.0.css │ │ │ ├── qunit-1.12.0.js │ │ │ ├── simple.md │ │ │ ├── test-markdown-element-attributes.html │ │ │ ├── test-markdown-element-attributes.js │ │ │ ├── test-markdown-external.html │ │ │ ├── test-markdown-external.js │ │ │ ├── test-markdown-options.html │ │ │ ├── test-markdown-options.js │ │ │ ├── test-markdown-slide-attributes.html │ │ │ ├── test-markdown-slide-attributes.js │ │ │ ├── test-markdown.html │ │ │ ├── test-markdown.js │ │ │ ├── test-pdf.html │ │ │ ├── test-pdf.js │ │ │ ├── test.html │ │ │ └── test.js │ ├── scss │ │ ├── flex │ │ │ ├── article.scss │ │ │ ├── fonts.scss │ │ │ ├── footer.scss │ │ │ ├── header.scss │ │ │ ├── main.scss │ │ │ ├── medias.scss │ │ │ ├── menu.scss │ │ │ ├── shortcode.children.scss │ │ │ ├── shortcode.notice.scss │ │ │ └── style.scss │ │ └── original │ │ │ ├── _colours.scss │ │ │ ├── _functions.scss │ │ │ ├── _variables.scss │ │ │ ├── fonts.scss │ │ │ ├── main.scss │ │ │ ├── print.scss │ │ │ ├── responsive.scss │ │ │ ├── shortcodes.scss │ │ │ ├── sidebar.scss │ │ │ └── style.scss │ ├── theme-flex │ │ ├── ribbon.png │ │ ├── script.js │ │ └── style.css │ └── theme-original │ │ ├── script.js │ │ ├── style.css │ │ ├── variant-blue.css │ │ ├── variant-gold.css │ │ ├── variant-gray.css │ │ └── variant-green.css │ └── theme.toml ├── e2e ├── README.md ├── data │ ├── crud.pip.yaml │ └── test-run.pip.yaml ├── e2e.spec.sh ├── helpers.sh └── scenarios │ ├── agents.sh │ ├── annotations.sh │ ├── boards.sh │ ├── builds.sh │ ├── clusters.sh │ ├── compositions.sh │ ├── contexts.sh │ ├── environments.sh │ ├── helm-repo.sh │ ├── images.sh │ ├── pipeline-run.sh │ ├── pipelines.sh │ ├── projects.sh │ ├── registry.sh │ ├── repository.sh │ ├── runtime-environment.sh │ ├── step-types.sh │ ├── system-runtime-environments.sh │ ├── teams.sh │ ├── tokens.sh │ └── triggers.sh ├── lib ├── binary │ ├── components.js │ ├── downloader.js │ ├── index.js │ └── runner.js ├── interface │ └── cli │ │ ├── Command.js │ │ ├── codefresh │ │ ├── commad-line-interface.js │ │ ├── commands │ │ ├── RuntimeEnvironmentBaseImages │ │ │ ├── get.cmd.js │ │ │ └── runtimeEnvironmentsBaseImages.sdk.spec.js │ │ ├── agent │ │ │ ├── apply.cmd.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── helper.js │ │ │ ├── install.cmd.js │ │ │ └── uninstall.cmd.js │ │ ├── analyzer │ │ │ ├── analyze.cmd.js │ │ │ └── analyzer.logic.js │ │ ├── annotation │ │ │ ├── annotation.logic.js │ │ │ ├── annotation.sdk.spec.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ └── get.cmd.js │ │ ├── app-proxy │ │ │ ├── helper.js │ │ │ ├── install.cmd.js │ │ │ ├── uninstall.cmd.js │ │ │ └── upgrade.cmd.js │ │ ├── audit │ │ │ └── download.cmd.js │ │ ├── auth │ │ │ ├── create-context.cmd.js │ │ │ ├── current-context.cmd.js │ │ │ ├── get-contexts.cmd.js │ │ │ └── use-context.cmd.js │ │ ├── board │ │ │ ├── apply.cmd.js │ │ │ ├── board.sdk.spec.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ └── get.cmd.js │ │ ├── cli-config │ │ │ ├── cli-config.cmd.js │ │ │ └── ops │ │ │ │ ├── get.cmd.js │ │ │ │ ├── help.cmd.js │ │ │ │ ├── profile.cmd.js │ │ │ │ └── set.cmd.js │ │ ├── cluster │ │ │ ├── cluster.sdk.spec.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ └── get.cmd.js │ │ ├── completion │ │ │ ├── bash.sh.hbs │ │ │ ├── completion.cmd.js │ │ │ └── zsh.sh.hbs │ │ ├── components │ │ │ ├── download.cmd.js │ │ │ └── update.cmd.js │ │ ├── composition │ │ │ ├── composition.sdk.spec.js │ │ │ ├── create.cmd.js │ │ │ ├── create.completion.js │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── replace.cmd.js │ │ │ └── replace.completion.js │ │ ├── context │ │ │ ├── apply.cmd.js │ │ │ ├── context.sdk.spec.js │ │ │ ├── create.cmd.js │ │ │ ├── create │ │ │ │ ├── createConfig.cmd.js │ │ │ │ ├── createSecret.cmd.js │ │ │ │ ├── createSecretYaml.cmd.js │ │ │ │ ├── createYaml.cmd.js │ │ │ │ ├── git │ │ │ │ │ ├── base.cmd.js │ │ │ │ │ └── types │ │ │ │ │ │ ├── bitbucket.cmd.js │ │ │ │ │ │ ├── github.cmd.js │ │ │ │ │ │ ├── gitlab.cmd.js │ │ │ │ │ │ └── stash.cmd.js │ │ │ │ ├── helm-repo │ │ │ │ │ ├── base.cmd.js │ │ │ │ │ └── types │ │ │ │ │ │ ├── http.cmd.js │ │ │ │ │ │ └── s3.cmd.js │ │ │ │ └── secret-store │ │ │ │ │ ├── base.cmd.js │ │ │ │ │ └── types │ │ │ │ │ ├── hashicorp-vault.cmd.js │ │ │ │ │ ├── kubernetes-runtime.cmd.js │ │ │ │ │ └── kubernetes.cmd.js │ │ │ ├── delete.cmd.js │ │ │ └── get.cmd.js │ │ ├── environment │ │ │ ├── delete.cmd.js │ │ │ ├── environment.sdk.spec.js │ │ │ └── get.cmd.js │ │ ├── gitops │ │ │ ├── argocd │ │ │ │ ├── install.js │ │ │ │ ├── uninstall.js │ │ │ │ └── upgrade.js │ │ │ ├── codefresh │ │ │ │ ├── install.js │ │ │ │ ├── uninstall.js │ │ │ │ └── upgrade.js │ │ │ ├── common │ │ │ │ ├── install.js │ │ │ │ ├── uninstall.js │ │ │ │ └── upgrade.js │ │ │ ├── install.cmd.js │ │ │ ├── install.spec.js │ │ │ ├── uninstall.cmd.js │ │ │ └── upgrade.cmd.js │ │ ├── helm │ │ │ ├── chart │ │ │ │ ├── helm-charts.sdk.spec.js │ │ │ │ ├── install-chart.cmd.js │ │ │ │ └── promote-chart.cmd.js │ │ │ ├── helm.sdk.spec.js │ │ │ ├── release │ │ │ │ ├── delete-release.cmd.js │ │ │ │ ├── helm-releases.sdk.spec.js │ │ │ │ ├── rollback-release.cmd.js │ │ │ │ ├── test-release.cmd.js │ │ │ │ └── util.js │ │ │ ├── repo │ │ │ │ ├── apply.cmd.js │ │ │ │ ├── create.cmd.js │ │ │ │ ├── delete.cmd.js │ │ │ │ ├── get.cmd.js │ │ │ │ └── helm-repo.sdk.spec.js │ │ │ └── set-helm-config.cmd.js │ │ ├── hybrid │ │ │ ├── InstallationPlan.js │ │ │ ├── delete.cmd.js │ │ │ ├── execute-test-pipeline.cmd.js │ │ │ ├── helper.js │ │ │ ├── info.cmd.js │ │ │ ├── init.cmd.js │ │ │ ├── installation-process.js │ │ │ ├── key-helper.js │ │ │ ├── migration.js │ │ │ ├── pipeline-helper.js │ │ │ └── upgrade.cmd.js │ │ ├── image │ │ │ ├── annotate.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── image.sdk.spec.js │ │ │ ├── tag.cmd.js │ │ │ └── untag.cmd.js │ │ ├── imagePullSecret │ │ │ ├── generate.cmd.js │ │ │ └── imagePullSecret.sdk.spec.js │ │ ├── monitor │ │ │ ├── install.cmd.js │ │ │ └── uninstall.cmd.js │ │ ├── offline-logs │ │ │ ├── base.cmd.js │ │ │ ├── ensure-index.cmd.js │ │ │ ├── ensure-index.spec.js │ │ │ ├── offload-to-collection.cmd.js │ │ │ ├── offload-to-file.cmd.js │ │ │ ├── offload-to-file.spec.js │ │ │ └── utils.js │ │ ├── pipeline │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── get.completion.js │ │ │ ├── pipeline.sdk.spec.js │ │ │ ├── run.base.js │ │ │ ├── run.cf.js │ │ │ ├── run.cmd.js │ │ │ ├── run.completion.js │ │ │ └── run.local.js │ │ ├── project │ │ │ ├── apply.cmd.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ └── project.sdk.spec.js │ │ ├── registry │ │ │ ├── create.cmd.js │ │ │ ├── create │ │ │ │ └── create.standard.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ └── registry.sdk.spec.js │ │ ├── repo │ │ │ ├── add.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ └── repo.sdk.spec.js │ │ ├── root │ │ │ ├── add.cmd.js │ │ │ ├── annotate.cmd.js │ │ │ ├── apply.cmd.js │ │ │ ├── apply.completion.js │ │ │ ├── assign.cmd.js │ │ │ ├── auth.cmd.js │ │ │ ├── components.cmd.js │ │ │ ├── create.cmd.js │ │ │ ├── create.completion.js │ │ │ ├── delete.cmd.js │ │ │ ├── delete.completion.js │ │ │ ├── diff.cmd.js │ │ │ ├── diff.completion.js │ │ │ ├── download.cmd.js │ │ │ ├── generate.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── get.completion.js │ │ │ ├── install.cmd.js │ │ │ ├── replace.cmd.js │ │ │ ├── replace.completion.js │ │ │ ├── root.sdk.spec.js │ │ │ ├── runner.cmd.js │ │ │ ├── synchronize.cmd.js │ │ │ ├── unassign.cmd.js │ │ │ ├── uninstall.cmd.js │ │ │ ├── upgrade.cmd.js │ │ │ ├── validate.cmd.js │ │ │ ├── validate.completion.js │ │ │ └── version.cmd.js │ │ ├── runtimeEnvironments │ │ │ ├── apply.cmd.js │ │ │ ├── attach.cmd.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── diff.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── install.cmd.js │ │ │ ├── runtimeEnvironments.sdk.spec.js │ │ │ └── uninstall.cmd.js │ │ ├── section │ │ │ ├── apply.cmd.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ └── section.sdk.spec.js │ │ ├── step │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── get.completion.js │ │ │ └── step.sdk.spec.js │ │ ├── systemRuntimeEnvironments │ │ │ ├── apply.cmd.js │ │ │ ├── assign.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── diff.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── systemRuntimeEnvironments.sdk.spec.js │ │ │ └── unassign.cmd.js │ │ ├── team │ │ │ ├── add.user.cmd.js │ │ │ ├── create.cmd.js │ │ │ ├── get.cmd.js │ │ │ ├── remove.user.cmd.js │ │ │ ├── synchronize.cmd.js │ │ │ └── team.sdk.spec.js │ │ ├── tokens │ │ │ ├── apply.cmd.js │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── get.cmd.js │ │ │ └── tokens.sdk.spec.js │ │ ├── trigger │ │ │ ├── create.cmd.js │ │ │ ├── delete.cmd.js │ │ │ ├── event │ │ │ │ ├── create.cmd.js │ │ │ │ ├── delete.cmd.js │ │ │ │ ├── get.cmd.js │ │ │ │ └── trigger-event.sdk.spec.js │ │ │ ├── get.cmd.js │ │ │ ├── trigger.sdk.spec.js │ │ │ └── type │ │ │ │ ├── get.cmd.js │ │ │ │ └── trigger-type.sdk.spec.js │ │ └── workflow │ │ │ ├── approve.cmd.js │ │ │ ├── approve.cmd.spec.js │ │ │ ├── deny.cmd.js │ │ │ ├── deny.cmd.spec.js │ │ │ ├── get.cmd.js │ │ │ ├── logs.cmd.js │ │ │ ├── restart.cmd.js │ │ │ ├── terminate.cmd.js │ │ │ ├── wait.cmd.js │ │ │ ├── workflow-data-item │ │ │ ├── create.cmd.js │ │ │ └── get.cmd.js │ │ │ └── workflow.sdk.spec.js │ │ ├── completion │ │ ├── completion.spec.js │ │ ├── generate │ │ ├── helpers.js │ │ └── index.js │ │ ├── defaults.js │ │ └── helpers │ │ ├── auth.js │ │ ├── cli-config.js │ │ ├── entitiesManifests.js │ │ ├── general.js │ │ ├── helm.js │ │ ├── helpers.sdk.spec.js │ │ ├── helpers.unit.spec.js │ │ ├── image.js │ │ ├── kubernetes.js │ │ ├── logs.js │ │ ├── progressEvents.js │ │ ├── sys-re.js │ │ └── validation.js ├── logic │ ├── cli-config │ │ ├── Manager.js │ │ ├── Model.js │ │ ├── errors │ │ │ ├── MultiplePropertiesError.js │ │ │ ├── NoPropertyError.js │ │ │ ├── NotFullPropertyError.js │ │ │ ├── PipelineValidationError.js │ │ │ ├── SchemaValidationError.js │ │ │ ├── awaitTo.js │ │ │ ├── helpers.js │ │ │ └── index.js │ │ ├── manager.spec.js │ │ └── schema.json │ ├── entities │ │ ├── Agent.js │ │ ├── Annotation.js │ │ ├── Board.js │ │ ├── Cluster.js │ │ ├── CodefreshRepo.js │ │ ├── Composition.js │ │ ├── Context.js │ │ ├── Entity.js │ │ ├── Environment.js │ │ ├── GitRepo.js │ │ ├── HelmRepo.js │ │ ├── Image.js │ │ ├── Pipeline.js │ │ ├── Project.js │ │ ├── Registry.js │ │ ├── RuntimeEnvironmentBaseImages.js │ │ ├── RuntimeEnvironments.js │ │ ├── Section.js │ │ ├── StepType.js │ │ ├── StepTypeVersion.js │ │ ├── Team.js │ │ ├── Token.js │ │ ├── Trigger.js │ │ ├── TriggerEvent.js │ │ ├── TriggerType.js │ │ ├── Workflow.js │ │ └── WorkflowDataItem.js │ ├── index.js │ └── sdk │ │ └── index.js └── output │ ├── Formatter.js │ ├── Output.js │ ├── Style.js │ ├── __mocks__ │ └── Output.js │ ├── formatters │ ├── Annotations.formatter.js │ ├── Board.formatter.js │ ├── CodefreshRepo.formatter.js │ ├── Composition.formatter.js │ ├── Environment.formatter.js │ ├── GitRepo.formatter.js │ ├── HelmRepo.formatter.js │ ├── Image.formatter.js │ ├── Pipeline.formatter.js │ ├── Project.formatter.js │ ├── Registry.formatter.js │ ├── Section.formatter.js │ ├── StepType.formatter.js │ ├── Team.formatter.js │ ├── Token.formatter.js │ ├── TriggerEvent.formatter.js │ ├── TriggerType.formatter.js │ ├── Workflow.formatter.js │ └── index.js │ └── types │ ├── id.output.js │ ├── json.output.js │ ├── name.output.js │ ├── table.output.js │ ├── table.output.spec.js │ └── yaml.output.js ├── openapi.json ├── package.json ├── run-check-version.js ├── test-setup.js └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | .env 2 | .git 3 | .gitignore 4 | .vscode 5 | coverage 6 | logs 7 | node_modules 8 | *.log 9 | *.md 10 | docker-compose.yml 11 | codefresh.yml 12 | .coveralls.yml 13 | examples 14 | dist 15 | e2e 16 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'plugins': [ 3 | 'jest' 4 | ], 5 | 'extends': 'airbnb-base', 6 | 'rules': { 7 | 'indent': ['error', 4, { 'SwitchCase': 1 }], 8 | 'no-underscore-dangle': [0], 9 | 'max-len': ['error', { 10 | 'code': 140, 11 | 'ignoreComments': true 12 | }], 13 | 'no-console': 0, 14 | 'object-curly-newline': 0, 15 | 'no-return-await': 'off', 16 | }, 17 | 'env': { 18 | 'jest': true, 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text eol=lf 3 | 4 | # (binary is a macro for -text -diff) 5 | *.png binary 6 | *.jpg binary 7 | *.jpeg binary 8 | *.svg binary 9 | *.gif binary 10 | *.ico binary 11 | *.mov binary 12 | *.mp4 binary 13 | *.mp3 binary 14 | *.flv binary 15 | *.fla binary 16 | *.swf binary 17 | *.gz binary 18 | *.zip binary 19 | *.7z binary 20 | *.ttf binary 21 | *.eot binary 22 | *.otf binary 23 | *.woff binary 24 | *.woff2 binary 25 | *.pyc binary 26 | *.pdf binary 27 | *.ez binary 28 | *.bz2 binary 29 | *.swp binary 30 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * yaroslav@codefresh.io ziv@codefresh.io daniel.soifer@codefresh.io daniel.maizel@codefresh.io 2 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## What 2 | 3 | ## Why 4 | 5 | ## Notes 6 | -------------------------------------------------------------------------------- /.github/release-drafter.yaml: -------------------------------------------------------------------------------- 1 | name-template: 'v$RESOLVED_VERSION' 2 | tag-template: 'v$RESOLVED_VERSION' 3 | change-template: '- $TITLE @$AUTHOR (#$NUMBER)' 4 | change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. 5 | template: | 6 | ## Changes 7 | 8 | $CHANGES -------------------------------------------------------------------------------- /.github/workflows/create-release.yaml: -------------------------------------------------------------------------------- 1 | ## Reference: https://github.com/release-drafter/release-drafter 2 | name: Create Release 3 | 4 | on: 5 | push: 6 | branches: 7 | - master 8 | 9 | jobs: 10 | create_release: 11 | name: Create Release 12 | runs-on: ubuntu-latest 13 | permissions: 14 | contents: write 15 | pull-requests: write 16 | steps: 17 | - name: Checkout 18 | uses: actions/checkout@v3 19 | with: 20 | fetch-depth: 0 21 | 22 | - name: Set up jq 23 | uses: dcarbone/install-jq-action@v1.0.1 24 | 25 | - name: Get release version from service.yaml 26 | run: | 27 | RELEASE_VERSION=$(jq -r '.version' package.json ) 28 | echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV 29 | 30 | - uses: release-drafter/release-drafter@v5 31 | env: 32 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 33 | with: 34 | publish: true 35 | version: ${{ env.RELEASE_VERSION }} 36 | config-name: release-drafter.yaml 37 | -------------------------------------------------------------------------------- /.github/workflows/draft-release.yaml: -------------------------------------------------------------------------------- 1 | ## Reference: https://github.com/release-drafter/release-drafter 2 | name: Create Release 3 | 4 | on: 5 | push: 6 | branches: 7 | - master 8 | 9 | jobs: 10 | create_release: 11 | name: Create Release 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v3 16 | with: 17 | fetch-depth: 0 18 | 19 | - name: Set up jq 20 | uses: dcarbone/install-jq-action@v1.0.1 21 | 22 | - name: Get release version from service.yaml 23 | run: | 24 | RELEASE_VERSION=$(jq -r '.version' package.json ) 25 | echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV 26 | 27 | - uses: release-drafter/release-drafter@v5 28 | env: 29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | with: 31 | publish: true 32 | version: ${{ env.RELEASE_VERSION }} 33 | config-name: release-drafter.yaml 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | yarn-error.log 3 | .idea/ 4 | .vscode 5 | *.log 6 | coverage 7 | .DS_Store 8 | /dist 9 | *.zip 10 | public 11 | temp 12 | package-lock.json 13 | venonalog.json -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v22.11.0 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Codefresh 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /__mocks__/requestretry.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | 3 | const DEFAULT_RESPONSE = { statusCode: 200, body: { test: 'test' } }; 4 | 5 | let RESPONSE = _.clone(DEFAULT_RESPONSE); 6 | 7 | let QUEUE = []; 8 | 9 | const request = jest.fn(async () => { 10 | if (!_.isEmpty(QUEUE)) { 11 | return QUEUE.shift(); 12 | } 13 | return RESPONSE; 14 | }); 15 | 16 | request.defaults = () => request; 17 | 18 | request.__setResponse = (response) => { 19 | RESPONSE = response; 20 | }; 21 | 22 | request.__reset = () => { 23 | RESPONSE = _.clone(DEFAULT_RESPONSE); 24 | QUEUE = []; 25 | }; 26 | 27 | request.__defaultResponse = () => { 28 | return _.clone(DEFAULT_RESPONSE); 29 | }; 30 | 31 | request.__queueResponses = (queue) => { 32 | QUEUE = QUEUE.concat(queue); 33 | }; 34 | 35 | module.exports = request; 36 | -------------------------------------------------------------------------------- /brew/template.rb: -------------------------------------------------------------------------------- 1 | class Codefresh < Formula 2 | desc "Codefresh CLI provides a full and flexible interface to interact with Codefresh." 3 | homepage "http://cli.codefresh.io" 4 | url "https://github.com/codefresh-io/cli/releases/download/{{ VERSION }}/codefresh-{{ VERSION }}-macos-x64.tar.gz" 5 | version "{{ VERSION }}" 6 | sha256 "{{ SHA256 }}" 7 | 8 | def install 9 | bin.install "codefresh" 10 | end 11 | 12 | test do 13 | system "#{bin}/codefresh version" 14 | end 15 | end -------------------------------------------------------------------------------- /check-version.js: -------------------------------------------------------------------------------- 1 | const semver = require('semver'); 2 | const { engines } = require('./package.json'); 3 | 4 | function checkVersion(version = engines.node) { 5 | if (!semver.satisfies(process.version, version)) { 6 | throw new Error(`Required node version ${version} not satisfied with current version ${process.version}.`); 7 | } 8 | } 9 | // checkVersion(); 10 | 11 | module.exports = { 12 | checkVersion, 13 | }; 14 | -------------------------------------------------------------------------------- /cli.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/cli.gif -------------------------------------------------------------------------------- /docs/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .TranslationBaseName "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: false 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /docs/content/_header.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "header" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | +++ 6 | [Codefresh CLI](/cli/) 7 | -------------------------------------------------------------------------------- /docs/content/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | description = "Codefresh CLI" 3 | date = "2017-04-24T18:36:24+02:00" 4 | weight = 1 5 | +++ 6 | 7 | # Codefresh CLI 8 | 9 | Welcome to Codefresh official CLI documentation! 10 | 11 | The Codefresh CLI provides a full and flexible interface to interact with Codefresh.
12 | The CLI can be used to achieve the following: 13 | 18 | 19 | To get started please navigate to the [Getting started](getting-started) page. 20 | -------------------------------------------------------------------------------- /docs/content/contexts/spec/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Spec" 3 | +++ 4 | 5 | A Context needs `.apiVersion`, `.kind`, and `.metadata` fields. 6 | 7 | A Context also needs a `.spec` section. 8 | 9 | ### Owner 10 | A context can be either attached to a user or to an account.
11 | `.owner` can be either `account` or `user`.
12 | The default is `account`.
13 | 14 | ### Type 15 | `.spec.type` should be one of the following:
16 | 23 | 24 | ### Data 25 | `.spec.data` should be different according to the type of the context 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/content/contexts/spec/config.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Config" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 10 6 | +++ 7 | 8 | Config context stores a set of keys and values. 9 | 10 | ### Type 11 | `.spec.type` should be `config`. 12 | 13 | ### Data 14 | `.spec.data` should be an array of keys and values. 15 | 16 | ### Examples 17 | 18 | #### config with two keys 19 | ```yaml 20 | apiVersion: "v1" 21 | kind: "context" 22 | owner: "account" 23 | metadata: 24 | name: "my-config-context" 25 | spec: 26 | type: "config" 27 | data: 28 | dbUrl: "db-url" 29 | sysUrl: "sys-url" 30 | ``` 31 | -------------------------------------------------------------------------------- /docs/content/contexts/spec/helm-repository.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Helm Repository" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 50 6 | +++ 7 | 8 | Helm-Repository context stores an integration with a helm repository. 9 | 10 | ### Type 11 | `.spec.type` should be `helm-repository`. 12 | 13 | ### Data 14 | `.spec.data` should be an array of keys and values. 15 | 16 | ### Examples 17 | -------------------------------------------------------------------------------- /docs/content/contexts/spec/secret-yaml.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Secret Yaml" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 40 6 | +++ 7 | 8 | Secret-Yaml context stores an yaml file encrypted. 9 | 10 | ### Type 11 | `.spec.type` should be `secret-yaml`. 12 | 13 | ### Data 14 | `.spec.data` should be an array of keys and values. 15 | 16 | ### Examples 17 | 18 | #### secret-yaml with two keys 19 | ```yaml 20 | apiVersion: "v1" 21 | kind: "context" 22 | owner: "account" 23 | metadata: 24 | name: "my-secret-yaml-context" 25 | spec: 26 | type: "secret-yaml" 27 | data: 28 | serviceType: "LoadBalancer" 29 | image: "mongo" 30 | type: 31 | - "encrypted" 32 | ``` 33 | -------------------------------------------------------------------------------- /docs/content/contexts/spec/secret.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Secret" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 20 6 | +++ 7 | 8 | Secret context stores a set of keys and values encrypted. 9 | 10 | ### Type 11 | `.spec.type` should be `secret`. 12 | 13 | ### Data 14 | `.spec.data` should be an array of keys and values. 15 | 16 | ### Examples 17 | 18 | #### secret with two keys 19 | ```yaml 20 | apiVersion: "v1" 21 | kind: "context" 22 | owner: "account" 23 | metadata: 24 | name: "my-secret-context" 25 | spec: 26 | type: "secret" 27 | data: 28 | dbPassword: "secret-db-password" 29 | adminPassword: "secret-admin-password" 30 | ``` 31 | -------------------------------------------------------------------------------- /docs/content/contexts/spec/yaml.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Yaml" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 30 6 | +++ 7 | 8 | Yaml context stores an yaml file. 9 | 10 | ### Type 11 | `.spec.type` should be `yaml`. 12 | 13 | ### Data 14 | `.spec.data` should be an array of keys and values. 15 | 16 | ### Examples 17 | 18 | #### yaml with two keys 19 | ```yaml 20 | apiVersion: "v1" 21 | kind: "context" 22 | owner: "account" 23 | metadata: 24 | name: "my-yaml-context" 25 | spec: 26 | type: "yaml" 27 | data: 28 | serviceType: "LoadBalancer" 29 | image: "mongo" 30 | ``` 31 | -------------------------------------------------------------------------------- /docs/content/external-resources.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "External Resources" 3 | description = "Hugo-built Sites with docdock theme" 4 | +++ 5 | 6 | 7 | #### [https://codefresh.io/blog/introducing-codefresh-cli/](https://codefresh.io/blog/introducing-codefresh-cli/) by Dan Garfield 8 | ![https://invincible.site/](https://codefresh.io/wp-content/uploads/2017/11/blog-side-3.png) 9 | -------------------------------------------------------------------------------- /docs/content/getting-started/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Getting Started" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 10 6 | +++ 7 | 8 | ## Install 9 | Install the CLI through one of the possible ways described in the [Installation](/cli/installation) page. 10 | 11 | ## Authenticate 12 | In order to start working with the cli you will need to update the authentication configuration.
13 | Updating the authentication configuration is done via an API-KEY you generate from Codefresh.
14 | 15 | If you already have an API-KEY you can just use it.
16 | You can generate a new one from the user settings page.
17 | 18 | Once you have an API key, create a new authentication context:
`codefresh auth create-context --api-key {API_KEY}` 19 | 20 | ## Getting Help 21 | To get help and usage instructions run `codefresh [COMMAND]--help`.
22 | A help message will appear in the terminal.
23 | 24 | ## Showing Current Version 25 | Run `codefresh version` to see the current CLI version. 26 | 27 |
28 | #### That's it, you are good to go! 29 | -------------------------------------------------------------------------------- /docs/content/installation/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Installation" 3 | description = "" 4 | weight = 20 5 | +++ 6 | 7 | Codefresh CLI is developed and built with node.js.
8 | 9 | In case you have node.js installed on your machine you can use [NPM](/cli/installation/npm) or [YARN](/cli/installation/yarn) to install it.
10 | 11 | If you don't have node.js installed you can install the CLI by [Downloading](/cli/installation/download) it directly.
12 | 13 | It is also possible to run the CLI using a [Docker image](/cli/installation/docker). 14 | -------------------------------------------------------------------------------- /docs/content/installation/docker.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Docker Image" 3 | description = "asdsd" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 30 6 | +++ 7 | 8 | You can run the CLI using our official docker image which is published to Dockerhub
9 | 10 | Pull the latest version: 11 | `docker pull codefresh/cli` 12 | 13 | Pull a specific version: 14 | `docker pull codefresh/cli:${VERSION}` 15 | 16 | -------------------------------------------------------------------------------- /docs/content/installation/homebrew.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "HOMEBREW" 3 | description = "Homebrew install" 4 | date = "2018-01-30T12:00:00+02:00" 5 | weight = 60 6 | +++ 7 | 8 | Install Codefresh CLI on macOS with [Homebrew](https://brew.sh). 9 | 10 | ## Install 11 | 12 | ```sh 13 | # tap Codefresh homebrew repo 14 | brew tap codefresh-io/cli 15 | # install Codefresh CLI 16 | brew install codefresh 17 | ``` 18 | 19 | ## Update to the latest version 20 | 21 | ```sh 22 | brew upgrade codefresh 23 | ``` 24 | 25 | ## Uninstall 26 | 27 | ```sh 28 | brew uninstall codefresh 29 | ``` 30 | -------------------------------------------------------------------------------- /docs/content/installation/npm.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "NPM" 3 | description = "asd" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 10 6 | +++ 7 | 8 | {{% alert theme="warning" %}}the CLI requires node version 8.0.0 or higher{{% /alert %}} 9 | 10 | Codefresh's CLI is available for installation through NPM registry. 11 | 12 | Install: 13 | `npm install -g codefresh` 14 | 15 | Install a specific version: 16 | `npm install -g codefresh@{VERSION}` 17 | 18 | Update to latest version: 19 | `npm install -g codefresh` 20 | 21 | Update to a specific version: 22 | `npm install -g codefresh@${VERSION}` 23 | -------------------------------------------------------------------------------- /docs/content/installation/yarn.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "YARN" 3 | description = "asd" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 20 6 | +++ 7 | 8 | {{% alert theme="warning" %}}the CLI requires node version 8.0.0 or higher{{% /alert %}} 9 | 10 | Codefresh's CLI is available for installation using YARN. 11 | 12 | Install: 13 | `yarn global add codefresh` 14 | 15 | Install a specific version: 16 | `yarn global add codefresh@{VERSION}` 17 | 18 | Update to latest version: 19 | `yarn global upgrade codefresh` 20 | 21 | Update to a specific version: 22 | `yarn global upgrade codefresh@{VERSION}` 23 | -------------------------------------------------------------------------------- /docs/content/more/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "More..." 3 | weight = 130 4 | +++ 5 | 6 | 7 | {{COMMANDS}} 8 | -------------------------------------------------------------------------------- /docs/content/operate on resources/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Operate On Resources" 3 | weight = 31 4 | +++ 5 | 6 | The CLI supports the ability to work with `spec` files when working with resources.
7 | The supported formats are `yaml` and `json`.
8 | Check each specific resource `spec` for its documentation 9 | 10 | {{COMMANDS}} 11 | -------------------------------------------------------------------------------- /docs/content/pipelines/Run Pipeline.md: -------------------------------------------------------------------------------- 1 | {{HEADER}} 2 | 3 | {{DESCRIPTION}} 4 | 5 | {{COMMANDS}} 6 | 7 | {{ARGUMENTS}} 8 | 9 | {{OPTIONS}} 10 | 11 | ### variable-file (var-file) 12 | It is possible to pass build variables using a file. (supported format: json and yaml)
13 | The variables file structure should be an array.
14 | The pipeline will be triggered multiple times according to the array length. 15 | 16 | #### Variable yaml file with 2 sets of variables 17 | ```yaml 18 | - key: value 19 | key2: key1 20 | - key: value 21 | key2: key2 22 | ``` 23 | 24 | #### Variable json file with 2 sets of variables 25 | ```json 26 | [ 27 | { 28 | "key": "value", 29 | "key2": "key1" 30 | }, 31 | { 32 | "key": "value", 33 | "key2": "key2" 34 | } 35 | ] 36 | ``` 37 | 38 | {{EXAMPLES}} 39 | -------------------------------------------------------------------------------- /docs/docs.spec.js: -------------------------------------------------------------------------------- 1 | const docs = require('../docs'); 2 | 3 | describe('docs generation', () => { 4 | jest.setTimeout(20000); 5 | it('should generate docs', async () => { 6 | return await docs(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /docs/layouts/partials/menu-footer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Download 4 | 5 | 6 | Star 7 | 8 | 9 | Fork 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/themes/docdock/archetypes/default.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title= "{{ replace .TranslationBaseName "-" " " | title }}" 3 | date= {{ .Date }} 4 | description = "" 5 | draft= true 6 | +++ 7 | 8 | Lorem Ipsum. 9 | Notice `draft` is set to true. 10 | -------------------------------------------------------------------------------- /docs/themes/docdock/archetypes/slide.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Slide title" 3 | type="slide" 4 | 5 | theme = "league" 6 | [revealOptions] 7 | transition= 'concave' 8 | controls= true 9 | progress= true 10 | history= true 11 | center= true 12 | +++ 13 | 14 | # Slide 1 15 | 16 | ___ 17 | 18 | ## Slide 1.1 19 | 20 | - Turn off alarm 21 | - Get out of bed 22 | 23 | ___ 24 | 25 | ## Slide 1.2 26 | 27 | - Eat eggs 28 | - Drink coffee 29 | 30 | --- 31 | 32 | # Slide 2 33 | 34 | ___ 35 | 36 | ## Slide 2.1 37 | 38 | - Eat spaghetti 39 | - Drink wine 40 | 41 | ___ 42 | 43 | ## Slide 2.2 44 | 45 | - Get in bed 46 | - Count sheep -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/content-organisation/customize-style/disable.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Disable features" 3 | +++ 4 | 5 | You can disable feature in docdock by changing some params in `config.toml` 6 | 7 | 8 | ## hide Next / Prev Chevrons 9 | ``` 10 | [params] 11 | disableNavChevron = true 12 | ``` 13 | 14 | ## hide Search box in side menu 15 | ``` 16 | [params] 17 | disableSearch = true 18 | ``` 19 | 20 | ## hide the {{%icon fa-home%}} icon in side bar 21 | ``` 22 | [params] 23 | disableHomeIcon = true 24 | ``` -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/content-organisation/customize-style/theme-variants.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Theme variants" 3 | description = "change theme style/colors" 4 | +++ 5 | 6 | In site configuration file, you can set a variant name of this theme to load a specific css, with different color specifications. 7 | 8 | add a param `themeVariant = "VARIANT_NAME"` in the `[params]` part of config.toml file. 9 | 10 | {{%info%}}Available variants change only colors at this moment{{%/info%}} 11 | 12 | 13 | ## Variant "gray" 14 | ``` 15 | [params] 16 | themeVariant = "gray" 17 | ``` 18 | 19 | ![green docdock](/variant-gray.png) 20 | 21 | ## Variant "gold" 22 | ``` 23 | [params] 24 | themeVariant = "gold" 25 | ``` 26 | 27 | ![gold docdock](/variant-gold.png) 28 | 29 | ## Variant "green" 30 | ``` 31 | [params] 32 | themeVariant = "green"` 33 | ``` 34 | 35 | ![green docdock](/variant-green.png) -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/content-organisation/customize-style/themestyle.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Theme styles" 3 | description = "change theme style" 4 | +++ 5 | 6 | In site configuration file, you can set a subtheme name of this theme to load a specific css. 7 | 8 | add a param `themeStyle = "STYLE_NAME"` in the `[params]` part of config.toml file. 9 | 10 | 11 | ## Style "original" 12 | ``` 13 | [params] 14 | themeStyle = "original" 15 | ``` 16 | 17 | ![green docdock](/variant-gray.png) 18 | 19 | ## Style "flex" (work in progress) 20 | ``` 21 | [params] 22 | themeStyle = "flex" 23 | ``` 24 | 25 | ![flex](/style-flex.png) -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/content-organisation/extramenu.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Extra menu entries" 3 | date = "2017-04-29T18:36:24+02:00" 4 | Weight=2 5 | +++ 6 | 7 | You can define additional menu entries in the navigation menu without any link to content. 8 | 9 | Edit the website configuration `config.toml` and add a `[[menu.shortcuts]]` entry for each link your want to add. 10 | 11 | 12 | Example from the current website, **note the `pre` param** which allows you to insert HTML code and used here to separate content's menu from this "static" menu 13 | 14 | [[menu.shortcuts]] 15 | pre = "

More

" 16 | name = " Github repo" 17 | identifier = "ds" 18 | url = "https://github.com/vjeantet/hugo-theme-docdock" 19 | weight = 1 20 | 21 | [[menu.shortcuts]] 22 | name = " Hugo Documentation" 23 | identifier = "hugodoc" 24 | url = "https://gohugo.io/" 25 | weight = 2 26 | 27 | 28 | [{{%icon circle-arrow-right%}} Read more about hugo and menu here](https://gohugo.io/extras/menus/) -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/content-organisation/logo.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Logo placeholder" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | Weight=1 6 | +++ 7 | 8 | Create a `_header.md` page in content folder. Its content is what you get in the logo placeholder (top left of the screen). 9 | 10 | {{%alert info%}}**Tip :** you can add a image, a combobox with links to other documentation....{{%/alert%}} 11 | 12 | {{%alert info%}}**Tip 2 :** look at [ extra static menu]({{%relref "extramenu.md"%}}) if you want to add links to other website in this sidebar{{%/alert%}} -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/create-page/homepage.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Home page" 3 | description = "" 4 | date = "2017-04-28T18:36:24+02:00" 5 | tags = ["tag1","tag2"] 6 | +++ 7 | 8 | To tell Hugo-theme-docdock to consider a page as homepage's content, just create a content file named `_index.md` in content folder. 9 | -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/create-page/myslide.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "My Slide ! fullscreen" 3 | date = "2017-04-24T18:36:24+02:00" 4 | type="slide" 5 | hidden=true 6 | 7 | theme = "league" 8 | [revealOptions] 9 | transition= 'concave' 10 | controls= true 11 | progress= true 12 | history= false 13 | center= true 14 | +++ 15 | 16 | # In the morning 17 | 18 | ___ 19 | 20 | ## Getting up 21 | 22 | - Turn off alarm 23 | - Get out of bed 24 | 25 | ___ 26 | 27 | ## Breakfast 28 | 29 | - Eat eggs 30 | - Drink coffee 31 | 32 | --- 33 | 34 | # In the evening 35 | 36 | ___ 37 | 38 | ## Dinner 39 | 40 | - Eat spaghetti 41 | - Drink wine 42 | 43 | ___ 44 | 45 | ## Going to sleep 46 | 47 | - Get in bed 48 | - Count sheep -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/getting-start/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Getting started" 3 | description = "" 4 | weight = 1 5 | alwaysopen = true 6 | +++ 7 | 8 | ## Requirements 9 | 10 | Download [Hugo binary](https://gohugo.io/overview/installing/) for your OS (Windows, Linux, Mac) : it’s that simple 11 | 12 | {{%children style="h2" description="true"%}} 13 | -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/search/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "About the Search Engine" 3 | description = "" 4 | weight = 40 5 | +++ 6 | 7 | {{%excerpt-include filename="getting-start/configuration.md" /%}} 8 | 9 | 10 | Docdock theme uses the last improvement available in hugo version 20+ to generate a json index file ready to be consumed by lunr.js javascript search engine. 11 | 12 | 13 | {{%note%}}hugo generate lunrjs index.json at the root of `public` folder if the site only has one language or within each language subfolder.
When you build the site with `hugo server`, hugo generates it internally and of course it don't show up in the filesystem{{%/note%}} -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Shortcodes" 3 | description = "" 4 | date = "2017-04-24T18:36:24+02:00" 5 | weight = 30 6 | +++ 7 | 8 | A bunch of Shortcodes are available with this theme : 9 | 10 | {{%children style="card" description="true" %}} 11 | -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/BachGavotteShort.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/BachGavotteShort.mp3 -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/Carroll_AliceAuPaysDesMerveilles.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/Carroll_AliceAuPaysDesMerveilles.pdf -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/adivorciarsetoca00cape.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/adivorciarsetoca00cape.pdf -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/hugo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/hugo.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/movieselectricsheep-flock-244-32500-2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/content/shortcodes/attachments.files/movieselectricsheep-flock-244-32500-2.mp4 -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-1/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1" 3 | description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1-1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1-1-1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-2/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 2" 3 | description = "" 4 | +++ 5 | 6 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 7 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 8 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 9 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 10 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 11 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-2/test3.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page test 3" 3 | description = "This is a page test" 4 | +++ 5 | 6 | This is a test 3 demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-3/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 3" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/children-4/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 4" 3 | description = "This is a demo child page" 4 | hidden=true 5 | +++ 6 | 7 | This is a demo child page, not displayed in the menu -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/children/test.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page test" 3 | description = "This is a page test" 4 | +++ 5 | 6 | This is a test demo child page -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/shortcodes/notice.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "notice" 3 | description = "Disclaimers to help you structure your page" 4 | +++ 5 | 6 | The notice shortcode shows 4 types of disclaimers to help you structure your page. 7 | 8 | 9 | ## Note 10 | 11 | {{%/* notice note */%}} 12 | A notice disclaimer 13 | {{%/* /notice */%}} 14 | 15 | renders as 16 | 17 | {{% notice note %}} 18 | A notice disclaimer 19 | {{% /notice %}} 20 | 21 | 22 | ## Info 23 | 24 | {{%/* notice info */%}} 25 | An information disclaimer 26 | {{%/* /notice */%}} 27 | 28 | renders as 29 | 30 | {{% notice info %}} 31 | An information disclaimer 32 | {{% /notice %}} 33 | 34 | 35 | 36 | ## Tip 37 | 38 | {{%/* notice tip */%}} 39 | A tip disclaimer 40 | {{%/* /notice */%}} 41 | 42 | renders as 43 | 44 | {{% notice tip %}} 45 | A tip disclaimer 46 | {{% /notice %}} 47 | 48 | 49 | 50 | ## Warning 51 | 52 | {{%/* notice warning */%}} 53 | An warning disclaimer 54 | {{%/* /notice */%}} 55 | 56 | renders as 57 | 58 | {{% notice warning %}} 59 | An warning disclaimer 60 | {{% /notice %}} 61 | 62 | -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/content/showcase.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Docdock-built Sites" 3 | description = "Hugo-built Sites with docdock theme" 4 | +++ 5 | 6 | 7 | 8 | 9 | #### [https://invincible.site/](https://invincible.site/) by [@shazic](https://github.com/shazic) 10 | ![https://invincible.site/](/showcase/invincible.site.png?height=250&classes=border,shadow) 11 | 12 | 13 | #### [https://bitfan.io/](https://bitfan.io) by [@vjeantet](https://github.com/vjeantet) 14 | ![https://bitfan.io/](/showcase/bitfan.site.png?height=250&classes=border,shadow) 15 | 16 | -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/layouts/partials/custom-head.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/layouts/partials/menu-footer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Download 4 | 5 | 6 | Star 7 | 8 | 9 | Fork 10 | 11 |
12 | 13 | -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/layouts/shortcodes/ghcontributors.html: -------------------------------------------------------------------------------- 1 | 22 |
23 | {{ $url := .Get 0 }} 24 | {{ range getJSON $url }} 25 |
26 | 27 | 28 | {{.contributions}} commits 29 |
30 | {{ end }} 31 |
-------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/menu-entry-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/menu-entry-icon.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/showcase/bitfan.site.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/showcase/bitfan.site.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/showcase/invincible.site.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/showcase/invincible.site.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/style-flex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/style-flex.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/style-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/style-original.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/variant-gold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/variant-gold.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/variant-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/variant-gray.png -------------------------------------------------------------------------------- /docs/themes/docdock/exampleSite/static/variant-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/exampleSite/static/variant-green.png -------------------------------------------------------------------------------- /docs/themes/docdock/i18n/en.toml: -------------------------------------------------------------------------------- 1 | [create-header-md] 2 | other = "Create a content/_header.md to customize this" 3 | 4 | [create-footer-md] 5 | other = "Create a content/_footer.md file to customize the footer content" 6 | 7 | [Search-placeholder] 8 | other = "Search..." 9 | 10 | [Clear-History] 11 | other = "Clear History" 12 | 13 | [Page] 14 | other = "Page" 15 | 16 | [Next-Pages] 17 | other = "Next Pages" 18 | 19 | [Previous-Pages] 20 | other = "Previous Pages" 21 | 22 | [pagination-on] 23 | other = "of" 24 | 25 | [Attachments-label] 26 | other = "Attachments" 27 | 28 | [title-404] 29 | other = "Error" 30 | 31 | [message-404] 32 | other = "Woops. Looks like this page doesn't exist." 33 | 34 | [Go-to-homepage] 35 | other = "Go to homepage" 36 | 37 | [Edit-this-page] 38 | other = "Improve this page" 39 | 40 | [Expand-title] 41 | other = "Expand me..." 42 | 43 | [last-update-on] 44 | other = "Last update on" 45 | -------------------------------------------------------------------------------- /docs/themes/docdock/i18n/es.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Buscar..." 3 | 4 | [Clear-History] 5 | other = "Limpiar historial" 6 | 7 | [Attachments-label] 8 | other = "Adjuntos" 9 | 10 | [title-404] 11 | other = "Error" 12 | 13 | [message-404] 14 | other = "Woops. Parece que esta página no existe ¯\\_(ツ)_/¯." 15 | 16 | [Go-to-homepage] 17 | other = "Ir a la home" 18 | 19 | [Edit-this-page] 20 | other = "Edita esta página" 21 | 22 | [Shortcuts-Title] 23 | other = "Más" 24 | 25 | [Expand-title] 26 | other = "Expándeme..." 27 | -------------------------------------------------------------------------------- /docs/themes/docdock/i18n/fr.toml: -------------------------------------------------------------------------------- 1 | [create-header-md] 2 | other = "Créez un fichier _header.md pour personaliser cet encart" 3 | 4 | [create-footer-md] 5 | other = "Créez un fichier footer.md dans le répertoire content pour personaliser ce pied de page" 6 | 7 | [Search-placeholder] 8 | other = "Rechercher..." 9 | 10 | [Clear-History] 11 | other = "Supprimer historique" 12 | 13 | [Page] 14 | other = "Page" 15 | 16 | [Next-Pages] 17 | other = "Pages suivantes" 18 | 19 | [Previous-Pages] 20 | other = "Pages précédentes" 21 | 22 | [pagination-on] 23 | other = "sur" 24 | 25 | [Attachments-label] 26 | other = "Documents attachés" 27 | 28 | [title-404] 29 | other = "Erreur" 30 | 31 | [message-404] 32 | other = "Woops. Looks like this page doesn't exist." 33 | 34 | [Go-to-homepage] 35 | other = "Vers la page d'accueil" 36 | 37 | [Edit-this-page] 38 | other = "Modifier" 39 | 40 | [Expand-title] 41 | other = "Déroulez-moi..." 42 | 43 | [last-update-on] 44 | other = "Dernière mise à jour le " 45 | -------------------------------------------------------------------------------- /docs/themes/docdock/i18n/nb.toml: -------------------------------------------------------------------------------- 1 | [create-header-md] 2 | other = "Opprett en _header.md for å tilpasse denne" 3 | 4 | [Search-placeholder] 5 | other = "Søk..." 6 | 7 | [Clear-History] 8 | other = "Fjern historikk" 9 | 10 | [Page] 11 | other = "Side" 12 | 13 | [Next-Pages] 14 | other = "Neste" 15 | 16 | [Previous-Pages] 17 | other = "Forrige" 18 | 19 | [pagination-on] 20 | other = "av" 21 | 22 | [Attachments-label] 23 | other = "Vedlegg" 24 | 25 | [title-404] 26 | other = "Feil" 27 | 28 | [message-404] 29 | other = "Ups... Ser ikke ut som denne siden eksisterer." 30 | 31 | [Go-to-homepage] 32 | other = "Gå til hovedsiden" 33 | 34 | [Edit-this-page] 35 | other = "Editer" 36 | 37 | [Expand-title] 38 | other = "Utvid meg..." 39 | -------------------------------------------------------------------------------- /docs/themes/docdock/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/images/screenshot.png -------------------------------------------------------------------------------- /docs/themes/docdock/images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/images/tn.png -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ block "title" . }}{{ .Site.Title }}{{ end }} 5 | {{if .Site.Params.themeStyle}} 6 | {{ partial (printf "%s/head.html" .Site.Params.themeStyle) . }} 7 | {{else}} 8 | {{ partial "flex/head.html" . }} 9 | {{end}} 10 | 11 | 12 | {{if .Site.Params.themeStyle}} 13 | {{ partial (printf "%s/body-beforecontent.html" .Site.Params.themeStyle) . }} 14 | {{else}} 15 | {{ partial "flex/body-beforecontent.html" . }} 16 | {{end}} 17 | 18 | {{ block "main" . }} 19 | {{ end }} 20 | 21 | {{if .Site.Params.themeStyle}} 22 | {{ partial (printf "%s/body-aftercontent.html" .Site.Params.themeStyle) . }} 23 | {{else}} 24 | {{ partial "flex/body-aftercontent.html" . }} 25 | {{ end }} 26 | 27 | {{ block "footer" . }} 28 | {{ end }} 29 | 30 | {{ partial "custom-footer.html" . }} 31 | 32 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/_default/li.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{ .Title }}

4 |
5 |
6 |

{{ .Summary }} »

7 |
8 | 22 |
-------------------------------------------------------------------------------- /docs/themes/docdock/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{if .Content}} 3 | {{ .Content }} 4 | {{else }} 5 | {{ $paginator := .Paginator }} 6 | 7 |
8 | {{ partial "pagination.html" $paginator }} 9 |
10 | 11 | {{ range $index, $page := $paginator.Pages }} 12 | {{ .Render "li" }} 13 | {{ end }} 14 | 15 |
16 | 17 | {{ partial "pagination.html" $paginator }} 18 | 19 | {{end}} 20 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ .Content }} 3 | {{ end }} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/index.json: -------------------------------------------------------------------------------- 1 | [{{ range $index, $page := .Site.Pages }} 2 | {{- if ne $page.Type "json" -}} 3 | {{- if and $index (gt $index 0) -}},{{- end }} 4 | { 5 | "uri": "{{ $page.Permalink }}", 6 | "title": "{{ htmlEscape $page.Title}}", 7 | "tags": [{{ range $tindex, $tag := $page.Params.tags }}{{ if $tindex }}, {{ end }}"{{ $tag| htmlEscape }}"{{ end }}], 8 | "description": "{{ htmlEscape .Description}}", 9 | "content": {{$page.Plain | jsonify}} 10 | } 11 | {{- end -}} 12 | {{- end -}}] -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/breadcrumb.html: -------------------------------------------------------------------------------- 1 | {{define "breadcrumb"}} 2 | {{ if .page.Parent}} 3 | {{$value := (printf "%s > %s" .page.Parent.URL .page.Parent.Title .value)}} 4 | {{ template "breadcrumb" dict "page" .page.Parent "value" $value }} 5 | {{else}} 6 | {{.value|safeHTML}} 7 | {{end}} 8 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/custom-content-footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/custom-footer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/layouts/partials/custom-footer.html -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/custom-head.html: -------------------------------------------------------------------------------- 1 | 2 | {{ with .Site.Params.author }}{{ end }} 3 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/flex/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ .Hugo.Generator }} 4 | {{ .Title }} :: {{ .Site.Title }} 5 | 6 | 7 | 8 | 9 | {{with .Site.Params.themeVariant}} 10 | 11 | {{end}} 12 | 13 | 14 | 17 | {{ partial "custom-head.html" . }} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/flex/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{if eq .Site.Params.highlightClientSide true}} 7 | 8 | 9 | {{end}} 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | {{ $header := print "_header." .Lang }} 2 | {{ range where .Site.Pages "Source.BaseFileName" $header }} 3 | {{ .Content }} 4 | {{else}} 5 | {{ if .Site.GetPage "page" "_header.md" }} 6 | {{(.Site.GetPage "page" "_header.md").Content}} 7 | {{else}} 8 | {{.Site.Title}} 9 | {{end}} 10 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/language-selector.html: -------------------------------------------------------------------------------- 1 | {{- if and .Site.IsMultiLingual (not .Site.Params.DisableLanguageSwitchingButton)}} 2 | 18 | {{- end }} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/menu-footer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/layouts/partials/menu-footer.html -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/original/body-aftercontent.html: -------------------------------------------------------------------------------- 1 | {{ partial "custom-content-footer.html" . }} 2 | 3 | 4 | 5 | {{ partial "next-prev-page.html" . }} 6 | 7 | 8 |
9 |
10 |
11 | 12 | {{ partial "original/scripts.html" . }} 13 | 14 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/original/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{if eq .Site.Params.highlightClientSide true}} 5 | 6 | 7 | {{end}} 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/partials/pagination.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/alert.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/anchor.html: -------------------------------------------------------------------------------- 1 | {{.Inner}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/anchorlink.html: -------------------------------------------------------------------------------- 1 | {{.Inner}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/attachmentlink.html: -------------------------------------------------------------------------------- 1 | {{range $i, $att := .Page.Params.attachments }} 2 | {{if eq $att.filename ($.Get "filename")}} 3 | {{$.Inner}} ({{$att.nicefilesize}}) 4 | {{end}} 5 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/attachments.html: -------------------------------------------------------------------------------- 1 |
2 | 6 | {{if eq .Page.File.BaseFileName "index"}} 7 | {{$.Scratch.Add "filesName" "files"}} 8 | {{else}} 9 | {{$.Scratch.Add "filesName" (printf "%s.files" .Page.File.BaseFileName)}} 10 | {{end}} 11 | {{ range (readDir (printf "./content/%s%s" .Page.File.Dir ($.Scratch.Get "filesName")) ) }} 12 | {{ $fileDir := replace $.Page.File.Dir "\\" "/" }} 13 | {{if ($.Get "pattern")}} 14 | {{if (findRE ($.Get "pattern") .Name)}} 15 |
  • 16 | 17 | {{.Name}} 18 | 19 | ({{div .Size 1024 }} kB) 20 |
  • 21 | {{end}} 22 | {{else}} 23 |
  • 24 | 25 | {{.Name}} 26 | 27 | ({{div .Size 1024 }} kB) 28 |
  • 29 | {{end}} 30 | {{end}} 31 |
    32 | 33 | {{.Inner}} 34 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/button.html: -------------------------------------------------------------------------------- 1 | 2 | {{ with .Get "align" }}
    {{end}} 3 | 4 | {{ with .Get "align" }}
    {{end}} 5 | 6 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/code.html: -------------------------------------------------------------------------------- 1 |
    {{.Inner}}
    -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/emoticon.html: -------------------------------------------------------------------------------- 1 | {{ $name := .Get "name"}} 2 | 3 | {{ if eq "smile" $name}} 4 | 😀 5 | {{ else if eq "sad" $name}} 6 | 🙁 7 | {{ else if eq "cheeky" $name}} 8 | 😛 9 | {{ else if eq "laugh" $name}} 10 | 😃 11 | {{ else if eq "wink" $name}} 12 | 😉 13 | {{ else if eq "thumbs-up" $name}} 14 | 15 | {{ else if eq "thumbs-down" $name}} 16 | 17 | {{ else if eq "information" $name}} 18 | 19 | {{ else if eq "tick" $name}} 20 | 21 | {{ else if eq "cross" $name}} 22 | 23 | {{ else if eq "warning" $name}} 24 | 25 | {{else}} 26 | ( Emoticon: {{$name}} ) 27 | {{end}} 28 | 29 | {{.Inner}} 30 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/excerpt-include.html: -------------------------------------------------------------------------------- 1 | {{ $excerpt := findRE "(?ms){{%\\s*excerpt[^%]*%}}(.|\n)*?{{%\\s*/excerpt\\s*%}}" ( readFile (printf "./content/%s" (.Get "filename")) ) }} 2 | {{ range $excerpt }} 3 | {{if ($.Get "panel")}} 4 |
    5 |
    {{$.Get "panel"}}
    6 |
    7 | {{ (replaceRE "(?ms){{%\\s*excerpt[^%]*%}}(.*){{%\\s*/excerpt\\s*%}}" "$1" .) | safeHTML | markdownify }} 8 |
    9 |
    10 | {{else}} 11 | {{ (replaceRE "(?ms){{%\\s*excerpt[^%]*%}}(.*){{%\\s*/excerpt\\s*%}}" "$1" .) | safeHTML | markdownify }} 12 | {{ end }} 13 | {{ end }} 14 | {{.Inner}} 15 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/excerpt.html: -------------------------------------------------------------------------------- 1 | {{with .Get "hidden"}} 2 | {{if eq . "false"}} 3 | {{$.Inner}} 4 | {{end}} 5 | {{else}} 6 | {{.Inner}} 7 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/expand.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 | {{$expandMessage := T "Expand-title"}} 6 | {{ if .IsNamedParams }} 7 | {{.Get "default" | default $expandMessage}} 8 | {{else}} 9 | {{.Get 0 | default $expandMessage}} 10 | {{end}} 11 | 12 |
    13 | 16 |
    -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/header.html: -------------------------------------------------------------------------------- 1 |
    2 | Résumé
    3 | {{.Inner}} 4 | 5 |
    Sur cette page
    6 | {{.Page.TableOfContents}} 7 |
    Pages liées
    8 | 16 |
    17 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/icon.html: -------------------------------------------------------------------------------- 1 | {{ if .IsNamedParams }} 2 | {{if not (hasPrefix (.Get "name") "fa-") }} 3 | 4 | {{else}} 5 | 6 | {{end}} 7 | {{else}} 8 | {{if not (hasPrefix (.Get 0) "fa-") }} 9 | 10 | {{else}} 11 | 12 | {{end}} 13 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/image.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{.Inner}} 5 | 6 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/info.html: -------------------------------------------------------------------------------- 1 | 2 | {{- if .Get "title" -}} 3 |
    4 | {{ with .Get "title" }}
    {{htmlUnescape .}}
    {{end}} 5 |
    {{.Inner}}
    6 |
    7 | {{- else -}} 8 | 9 | {{- end -}} 10 | 11 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/label.html: -------------------------------------------------------------------------------- 1 | {{.Inner}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    {{ safeHTML .Inner }}
    -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/note.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/notice.html: -------------------------------------------------------------------------------- 1 |
    {{ .Inner }}
    2 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/pagelink.html: -------------------------------------------------------------------------------- 1 | {{ if ne (.Get "spacekey") "" }} 2 | 3 | {{else}} 4 | {{$pages := where .Site.AllPages "Title" (( $.Get "pagename") | htmlUnescape ) }} 5 | {{ if eq 0 (len $pages) }} 6 | 7 | {{else}} 8 | {{ range $pages }} 9 | {{$.Inner}} 10 | {{end}} 11 | {{ end }} 12 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/pagetreesearch.html: -------------------------------------------------------------------------------- 1 | {{.Inner}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/panel.html: -------------------------------------------------------------------------------- 1 |
    2 | {{ with .Get "header" }}
    {{ htmlUnescape . | markdownify}}
    {{end}} 3 |
    {{.Inner}}
    4 | {{ with .Get "footer" }}{{end}} 5 |
    6 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/recently-updated.html: -------------------------------------------------------------------------------- 1 | {{.Inner}} 2 | 3 | {{- range first 10 .Site.Pages }} 4 |
  • 5 | {{ .Date.Format "02/01/2006" }} - {{ .Title }} 6 |
  • 7 | {{ end }} 8 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/relref.html: -------------------------------------------------------------------------------- 1 | {{- if in (.Get 0) "/_index.md" -}} 2 | {{- $paths := (split (.Get 0) "_index.md") -}} 3 | {{- $pagepath := index $paths 0 -}} 4 | {{- $anchor := index $paths 1 -}} 5 | {{- with .Site.GetPage "section" (trim $pagepath "/") -}} 6 | {{- ( printf "%s%s" $pagepath $anchor ) | relLangURL -}} 7 | {{- end -}} 8 | {{- else -}} 9 | {{- with .Site.GetPage "section" (.Get 0) }} 10 | {{- .URL -}} 11 | {{- else -}} 12 | {{- .Get 0 | relref .Page -}} 13 | {{- end -}} 14 | {{- end -}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/section.html: -------------------------------------------------------------------------------- 1 | {{.Inner}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/task.html: -------------------------------------------------------------------------------- 1 |
    2 | 9 | 10 |
    -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/tasklist.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | {{.Inner}} 4 |
    -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/tip.html: -------------------------------------------------------------------------------- 1 | 2 | {{if .Get "title" }} 3 |
    4 | {{ with .Get "title" }}
    {{htmlUnescape .}}
    {{end}} 5 |
    {{.Inner}}
    6 |
    7 | {{else}} 8 | 9 | {{end}} 10 | 11 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/toc.html: -------------------------------------------------------------------------------- 1 | {{ .Page.TableOfContents }} 2 | {{.Inner}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/unknow.html: -------------------------------------------------------------------------------- 1 |
    {{.Inner}}
    -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/userlink.html: -------------------------------------------------------------------------------- 1 | {{.Inner}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/viewppt.html: -------------------------------------------------------------------------------- 1 | {{range $i, $att := .Page.Params.attachments }} 2 | {{if eq $att.filename ($.Get "name")}} 3 | {{$.Inner}} 4 | {{end}} 5 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/viewxls.html: -------------------------------------------------------------------------------- 1 | {{range $i, $att := .Page.Params.attachments }} 2 | {{if eq $att.filename ($.Get "name")}} 3 | {{$.Inner}} 4 | {{end}} 5 | {{end}} -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/warning.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{if .Get "title" }} 5 |
    6 | {{ with .Get "title" }}
    {{htmlUnescape .}}
    {{end}} 7 |
    {{.Inner}}
    8 |
    9 | {{else}} 10 | 11 | {{end}} 12 | 13 | -------------------------------------------------------------------------------- /docs/themes/docdock/layouts/shortcodes/well.html: -------------------------------------------------------------------------------- 1 |
    {{.Inner}}
    2 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/css/auto-complete.css: -------------------------------------------------------------------------------- 1 | .autocomplete-suggestions { 2 | text-align: left; 3 | cursor: default; 4 | border: 1px solid #ccc; 5 | border-top: 0; 6 | background: #fff; 7 | box-shadow: 1px 2px 6px; 8 | transition: left 0.1s ease-in-out; 9 | 10 | /* core styles should not be changed */ 11 | position: absolute; 12 | display: none; 13 | z-index: 9999; 14 | max-height: 70vh; 15 | width: 265px; 16 | overflow: hidden; 17 | overflow-y: hidden; 18 | box-sizing: border-box; 19 | 20 | } 21 | .autocomplete-suggestion { 22 | position: relative; 23 | cursor: pointer; 24 | padding: 7px; 25 | line-height: 23px; 26 | white-space: nowrap; 27 | overflow: hidden; 28 | text-overflow: ellipsis; 29 | color: #333; 30 | } 31 | 32 | .autocomplete-suggestion b { 33 | font-weight: normal; 34 | color: #1f8dd6; 35 | } 36 | 37 | .autocomplete-suggestion.selected { 38 | background: #333; 39 | color: #fff; 40 | } 41 | 42 | .autocomplete-suggestion:hover { 43 | background: #444; 44 | color: #fff; 45 | } 46 | 47 | .autocomplete-suggestion > .context { 48 | font-size: 12px; 49 | } 50 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/css/horsey.css: -------------------------------------------------------------------------------- 1 | .sey-list { 2 | display: none; 3 | position: absolute; 4 | padding: 0; 5 | margin: 0; 6 | list-style-type: none; 7 | box-shadow: 1px 2px 6px; 8 | background-color: #fff; 9 | color: #333; 10 | transition: left 0.1s ease-in-out; 11 | max-height: 70vh; 12 | overflow: auto; 13 | width: 265px; 14 | } 15 | .sey-show { 16 | display: block; 17 | } 18 | .sey-hide { 19 | display: none; 20 | } 21 | .sey-item { 22 | cursor: pointer; 23 | overflow: hidden; 24 | white-space: nowrap; 25 | text-overflow: ellipsis; 26 | padding: 7px; 27 | } 28 | .sey-item:hover { 29 | background-color: #444; 30 | color: #fff; 31 | } 32 | .sey-selected { 33 | background-color: #333; 34 | color: #fff; 35 | } 36 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Inconsolata.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Inconsolata.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Inconsolata.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Inconsolata.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Inconsolata.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Inconsolata.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Lato-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Lato-Bold.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Lato-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Lato-Bold.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Lato-Regular.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Lato-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Lato-Regular.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-Normal-webfont.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Novecentosanswide-UltraLight-webfont.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Roboto-Italic.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/RobotoMono-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/RobotoMono-Medium.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/RobotoMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/RobotoMono-Regular.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_200.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_200.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_200.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_200.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_200.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_200.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_200.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_200.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_300.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_300.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_300.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_300.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_300.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_500.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_500.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_500.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_500.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_500.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/Work_Sans_500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/Work_Sans_500.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /docs/themes/docdock/static/images/clippy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/images/favicon.png -------------------------------------------------------------------------------- /docs/themes/docdock/static/images/gopher-404.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/images/gopher-404.jpg -------------------------------------------------------------------------------- /docs/themes/docdock/static/none.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/none.html -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.iml 3 | *.iws 4 | *.eml 5 | out/ 6 | .DS_Store 7 | .svn 8 | log/*.log 9 | tmp/** 10 | node_modules/ 11 | .sass-cache 12 | css/reveal.min.css 13 | js/reveal.min.js -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 4.1.1 4 | before_script: 5 | - npm install -g grunt-cli -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | 3 | Please keep the [issue tracker](http://github.com/hakimel/reveal.js/issues) limited to **bug reports**, **feature requests** and **pull requests**. 4 | 5 | 6 | ### Personal Support 7 | If you have personal support or setup questions the best place to ask those are [StackOverflow](http://stackoverflow.com/questions/tagged/reveal.js). 8 | 9 | 10 | ### Bug Reports 11 | When reporting a bug make sure to include information about which browser and operating system you are on as well as the necessary steps to reproduce the issue. If possible please include a link to a sample presentation where the bug can be tested. 12 | 13 | 14 | ### Pull Requests 15 | - Should follow the coding style of the file you work in, most importantly: 16 | - Tabs to indent 17 | - Single-quoted strings 18 | - Should be made towards the **dev branch** 19 | - Should be submitted from a feature/topic branch (not your master) 20 | 21 | 22 | ### Plugins 23 | Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines 24 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2017 Hakim El Hattab, http://hakim.se, and reveal.js contributors 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reveal.js", 3 | "version": "3.6.0", 4 | "main": [ 5 | "js/reveal.js", 6 | "css/reveal.css" 7 | ], 8 | "homepage": "http://revealjs.com", 9 | "license": "MIT", 10 | "description": "The HTML Presentation Framework", 11 | "authors": [ 12 | "Hakim El Hattab " 13 | ], 14 | "dependencies": { 15 | "headjs": "~1.0.3" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "git://github.com/hakimel/reveal.js.git" 20 | }, 21 | "ignore": [ 22 | "**/.*", 23 | "node_modules", 24 | "bower_components", 25 | "test" 26 | ] 27 | } -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/css/theme/source/night.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700); 16 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); 17 | 18 | 19 | // Override theme settings (see ../template/settings.scss) 20 | $backgroundColor: #111; 21 | 22 | $mainFont: 'Open Sans', sans-serif; 23 | $linkColor: #e7ad52; 24 | $linkColorHover: lighten( $linkColor, 20% ); 25 | $headingFont: 'Montserrat', Impact, sans-serif; 26 | $headingTextShadow: none; 27 | $headingLetterSpacing: -0.03em; 28 | $headingTextTransform: none; 29 | $selectionBackgroundColor: #e7ad52; 30 | 31 | 32 | // Theme template ------------------------------ 33 | @import "../template/theme"; 34 | // --------------------------------------------- -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/css/theme/source/serif.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is brown. 4 | * 5 | * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. 6 | */ 7 | 8 | 9 | // Default mixins and settings ----------------- 10 | @import "../template/mixins"; 11 | @import "../template/settings"; 12 | // --------------------------------------------- 13 | 14 | 15 | 16 | // Override theme settings (see ../template/settings.scss) 17 | $mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 18 | $mainColor: #000; 19 | $headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 20 | $headingColor: #383D3D; 21 | $headingTextShadow: none; 22 | $headingTextTransform: none; 23 | $backgroundColor: #F0F1EB; 24 | $linkColor: #51483D; 25 | $linkColorHover: lighten( $linkColor, 20% ); 26 | $selectionBackgroundColor: #26351C; 27 | 28 | .reveal a { 29 | line-height: 1.3em; 30 | } 31 | 32 | 33 | // Theme template ------------------------------ 34 | @import "../template/theme"; 35 | // --------------------------------------------- 36 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('league-gothic.eot'); 4 | src: url('league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('league-gothic.woff') format('woff'), 6 | url('league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/lib/js/html5shiv.js: -------------------------------------------------------------------------------- 1 | document.createElement('header'); 2 | document.createElement('nav'); 3 | document.createElement('section'); 4 | document.createElement('article'); 5 | document.createElement('aside'); 6 | document.createElement('footer'); 7 | document.createElement('hgroup'); -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/plugin/markdown/example.md: -------------------------------------------------------------------------------- 1 | # Markdown Demo 2 | 3 | 4 | 5 | ## External 1.1 6 | 7 | Content 1.1 8 | 9 | Note: This will only appear in the speaker notes window. 10 | 11 | 12 | ## External 1.2 13 | 14 | Content 1.2 15 | 16 | 17 | 18 | ## External 2 19 | 20 | Content 2.1 21 | 22 | 23 | 24 | ## External 3.1 25 | 26 | Content 3.1 27 | 28 | 29 | ## External 3.2 30 | 31 | Content 3.2 32 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/plugin/multiplex/client.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var multiplex = Reveal.getConfig().multiplex; 3 | var socketId = multiplex.id; 4 | var socket = io.connect(multiplex.url); 5 | 6 | socket.on(multiplex.id, function(data) { 7 | // ignore data from sockets that aren't ours 8 | if (data.socketId !== socketId) { return; } 9 | if( window.location.host === 'localhost:1947' ) return; 10 | 11 | Reveal.setState(data.state); 12 | }); 13 | }()); 14 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/plugin/multiplex/master.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | // Don't emit events from inside of notes windows 4 | if ( window.location.search.match( /receiver/gi ) ) { return; } 5 | 6 | var multiplex = Reveal.getConfig().multiplex; 7 | 8 | var socket = io.connect( multiplex.url ); 9 | 10 | function post() { 11 | 12 | var messageData = { 13 | state: Reveal.getState(), 14 | secret: multiplex.secret, 15 | socketId: multiplex.id 16 | }; 17 | 18 | socket.emit( 'multiplex-statechanged', messageData ); 19 | 20 | }; 21 | 22 | // post once the page is loaded, so the client follows also on "open URL". 23 | window.addEventListener( 'load', post ); 24 | 25 | // Monitor events that trigger a change in state 26 | Reveal.addEventListener( 'slidechanged', post ); 27 | Reveal.addEventListener( 'fragmentshown', post ); 28 | Reveal.addEventListener( 'fragmenthidden', post ); 29 | Reveal.addEventListener( 'overviewhidden', post ); 30 | Reveal.addEventListener( 'overviewshown', post ); 31 | Reveal.addEventListener( 'paused', post ); 32 | Reveal.addEventListener( 'resumed', post ); 33 | 34 | }()); 35 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/plugin/multiplex/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reveal-js-multiplex", 3 | "version": "1.0.0", 4 | "description": "reveal.js multiplex server", 5 | "homepage": "http://revealjs.com", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "engines": { 10 | "node": "~4.1.1" 11 | }, 12 | "dependencies": { 13 | "express": "~4.15.5", 14 | "grunt-cli": "~1.3.0", 15 | "mustache": "~2.2.1", 16 | "socket.io": "~1.7.4" 17 | }, 18 | "license": "MIT" 19 | } 20 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/test/examples/assets/image1.png -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/revealjs/test/examples/assets/image2.png -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/examples/barebones.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Barebones 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 | 16 |
    17 | 18 |
    19 |

    Barebones Presentation

    20 |

    This example contains the bare minimum includes and markup required to run a reveal.js presentation.

    21 |
    22 | 23 |
    24 |

    No Theme

    25 |

    There's no theme included, so it will fall back on browser defaults.

    26 |
    27 | 28 |
    29 | 30 |
    31 | 32 | 33 | 34 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/examples/embedded-media.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Embedded Media 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
    18 | 19 |
    20 | 21 |
    22 |

    Embedded Media Test

    23 |
    24 | 25 |
    26 | 27 |
    28 | 29 |
    30 |

    Empty Slide

    31 |
    32 | 33 |
    34 | 35 |
    36 | 37 | 38 | 39 | 40 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/simple.md: -------------------------------------------------------------------------------- 1 | ## Slide 1.1 2 | 3 | ```js 4 | var a = 1; 5 | ``` 6 | 7 | 8 | ## Slide 1.2 9 | 10 | 11 | 12 | ## Slide 2 13 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/test-markdown-external.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Markdown 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
    16 |
    17 | 18 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/test-markdown-external.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reveal.addEventListener( 'ready', function() { 4 | 5 | QUnit.module( 'Markdown' ); 6 | 7 | test( 'Vertical separator', function() { 8 | strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' ); 9 | }); 10 | 11 | test( 'Horizontal separator', function() { 12 | strictEqual( document.querySelectorAll( '.reveal .slides>section' ).length, 2, 'found two slides' ); 13 | }); 14 | 15 | test( 'Language highlighter', function() { 16 | strictEqual( document.querySelectorAll( '.hljs-keyword' ).length, 1, 'got rendered highlight tag.' ); 17 | strictEqual( document.querySelector( '.hljs-keyword' ).innerHTML, 'var', 'the same keyword: var.' ); 18 | }); 19 | 20 | 21 | } ); 22 | 23 | Reveal.initialize(); 24 | 25 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/test-markdown-options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Markdown Options 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
    16 |
    17 | 18 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/test-markdown-options.js: -------------------------------------------------------------------------------- 1 | Reveal.addEventListener( 'ready', function() { 2 | 3 | QUnit.module( 'Markdown' ); 4 | 5 | test( 'Options are set', function() { 6 | strictEqual( marked.defaults.smartypants, true ); 7 | }); 8 | 9 | test( 'Smart quotes are activated', function() { 10 | var text = document.querySelector( '.reveal .slides>section>p' ).textContent; 11 | 12 | strictEqual( /['"]/.test( text ), false ); 13 | strictEqual( /[“”‘’]/.test( text ), true ); 14 | }); 15 | 16 | } ); 17 | 18 | Reveal.initialize({ 19 | dependencies: [ 20 | { src: '../plugin/markdown/marked.js' }, 21 | { src: '../plugin/markdown/markdown.js' }, 22 | ], 23 | markdown: { 24 | smartypants: true 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/test-markdown.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | Reveal.addEventListener( 'ready', function() { 4 | 5 | QUnit.module( 'Markdown' ); 6 | 7 | test( 'Vertical separator', function() { 8 | strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' ); 9 | }); 10 | 11 | 12 | } ); 13 | 14 | Reveal.initialize(); 15 | 16 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/revealjs/test/test-pdf.js: -------------------------------------------------------------------------------- 1 | 2 | Reveal.addEventListener( 'ready', function() { 3 | 4 | // Only one test for now, we're mainly ensuring that there 5 | // are no execution errors when running PDF mode 6 | 7 | test( 'Reveal.isReady', function() { 8 | strictEqual( Reveal.isReady(), true, 'returns true' ); 9 | }); 10 | 11 | 12 | } ); 13 | 14 | Reveal.initialize({ pdf: true }); 15 | 16 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/flex/footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | color: #aaa; 3 | font-size: .95rem; 4 | margin: 0 1rem 0 20rem; 5 | padding: 1rem 4rem; 6 | 7 | p { 8 | margin: 0px; 9 | } 10 | 11 | 12 | 13 | .footline { 14 | /*border-top: 1px solid #e6e6e6;*/ 15 | margin: 0rem; 16 | padding: 0; 17 | 18 | font-size: smaller; 19 | display: flex; 20 | flex-direction: row; 21 | justify-content: space-between; 22 | align-items: center; 23 | flex-wrap: wrap; 24 | 25 | .tags { 26 | order: 1; 27 | } 28 | 29 | .tags a:before { 30 | content: "#"; 31 | } 32 | 33 | .author { 34 | order: 3; 35 | } 36 | 37 | .github-link { 38 | order: 4; 39 | } 40 | 41 | .date { 42 | order: 3; 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/flex/shortcode.children.scss: -------------------------------------------------------------------------------- 1 | ul.children.children-card { 2 | flex-wrap: wrap; 3 | display: -webkit-box; 4 | display: -ms-flexbox; 5 | display: flex; 6 | -webkit-box-pack: justify; 7 | -ms-flex-pack: justify; 8 | justify-content: space-between; 9 | 10 | >span { 11 | -webkit-box-flex: 1; 12 | -ms-flex: 1 1 auto; 13 | flex: 1 1 auto; 14 | min-width: 0; 15 | min-height: 0; 16 | width: 40%; 17 | min-width: 250px; 18 | margin: 1rem 1rem ; 19 | border: 0.1rem solid #ccc; 20 | 21 | box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); 22 | card{ 23 | margin: 0px 0px; 24 | display: block; 25 | padding: 1rem; 26 | background-color: #eee; 27 | font-size: 200%; 28 | } 29 | 30 | p{ 31 | padding: 0rem 1rem; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/flex/style.scss: -------------------------------------------------------------------------------- 1 | @import "fonts"; 2 | 3 | @import "header"; 4 | @import "menu"; 5 | 6 | @import "main"; 7 | 8 | @import "article"; 9 | @import "footer"; 10 | @import "shortcode.notice"; 11 | @import "shortcode.children"; 12 | 13 | 14 | @import "medias" ; -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/original/_colours.scss: -------------------------------------------------------------------------------- 1 | // main: theme.scss 2 | 3 | // == Side == 4 | $side_back_color: #2053AB; 5 | $side_text_color: #fff; 6 | 7 | // == Main == 8 | $main_back_color: #fff; 9 | $main_text_color: #323232; 10 | 11 | 12 | // == Code == 13 | $main_code_inline_back_color: #FFF7DD; 14 | $main_code_block_back_color: #1d1f21; 15 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/original/fonts.scss: -------------------------------------------------------------------------------- 1 | // main: theme.scss 2 | 3 | @font-face { 4 | font-family: 'Novacento Sans Wide'; 5 | src: url("../fonts/Novecentosanswide-UltraLight-webfont.eot"); 6 | src: url("../fonts/Novecentosanswide-UltraLight-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/Novecentosanswide-UltraLight-webfont.woff2") format("woff2"), url("../fonts/Novecentosanswide-UltraLight-webfont.woff") format("woff"), url("../fonts/Novecentosanswide-UltraLight-webfont.ttf") format("truetype"), url("../fonts/Novecentosanswide-UltraLight-webfont.svg#novecento_sans_wideultralight") format("svg"); 7 | font-style: normal; 8 | font-weight: 200; 9 | } 10 | 11 | @font-face{ 12 | font-family:"Lato"; 13 | font-style:normal; 14 | font-weight:400; 15 | src:local("Lato Regular"),local("Lato-Regular"), url(../fonts/Lato-Regular.woff2) format("woff2"), url(../fonts/Lato-Regular.ttf) format("truetype"); 16 | } 17 | 18 | @font-face{ 19 | font-family:"Lato"; 20 | font-style:normal; 21 | font-weight:700; 22 | src:local("Lato Bold"),local("Lato-Bold"), url(../fonts/Lato-Bold.woff2) format("woff2"), url(../fonts/Lato-Bold.ttf) format("truetype"); 23 | } 24 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/original/print.scss: -------------------------------------------------------------------------------- 1 | // main: theme.scss 2 | 3 | @media print { 4 | #sidebar, #navigation, #top-bar, .anchor, #sidebar-toggle-span, .copy-to-clipboard { 5 | display:none; 6 | } 7 | #navigation * { 8 | display:none; 9 | visibility: hidden; 10 | } 11 | #body-inner { 12 | margin-bottom: 0px; 13 | } 14 | #footer, .footline{ 15 | margin-top: 1px; 16 | } 17 | body, a { 18 | font-size: 120%; 19 | color: black !important; 20 | background: white !important 21 | } 22 | h1, h2, h3, h4, h5, h6 { 23 | color: black !important; 24 | background: white !important 25 | } 26 | #body{ 27 | margin-left: 0px; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/original/shortcodes.scss: -------------------------------------------------------------------------------- 1 | // main: theme.scss 2 | /* 3 | Here lives CSS required for shortcodes 4 | */ 5 | 6 | // == Children shortcode == 7 | 8 | .children p { 9 | font-size: small; 10 | margin-top: 0px; 11 | padding-top: 0px; 12 | margin-bottom: 0px; 13 | padding-bottom: 0px; 14 | } 15 | 16 | .children-li p { 17 | font-size: small; 18 | font-style: italic; 19 | } 20 | 21 | .children-h2 p, .children-h3 p { 22 | font-size: small; 23 | margin-top: 0px; 24 | padding-top: 0px; 25 | margin-bottom: 0px; 26 | padding-bottom: 0px; 27 | } 28 | 29 | .children h3,.children h2 { 30 | margin-bottom: 0px; 31 | margin-top: 5px; 32 | } 33 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/scss/original/style.scss: -------------------------------------------------------------------------------- 1 | // compileNested: ../css/$1.css, sourceMap: true 2 | /* 3 | Built with SCSS. 4 | If you would like to explore this CSS, 5 | use source map feature of your browser. 6 | */ 7 | 8 | @import "functions"; 9 | @import "colours"; 10 | @import "fonts"; 11 | @import "variables"; 12 | @import "main"; 13 | @import "sidebar"; 14 | @import "shortcodes"; 15 | @import "responsive"; 16 | @import "print"; 17 | -------------------------------------------------------------------------------- /docs/themes/docdock/static/theme-flex/ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/theme-flex/ribbon.png -------------------------------------------------------------------------------- /docs/themes/docdock/static/theme-original/variant-blue.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codefresh-io/cli/6dc432246557d4bccad5eba09e8fd0566d4d224b/docs/themes/docdock/static/theme-original/variant-blue.css -------------------------------------------------------------------------------- /docs/themes/docdock/theme.toml: -------------------------------------------------------------------------------- 1 | # theme.toml template for a Hugo theme 2 | # See https://github.com/spf13/hugoThemes#themetoml for an example 3 | 4 | name = "docDock" 5 | license = "MIT" 6 | licenselink = "https://github.com/vjeantet/hugo-theme-docdock/blob/master/LICENSE.md" 7 | description = "Documentation theme for Hugo" 8 | homepage = "https://github.com/vjeantet/hugo-theme-docdock" 9 | repo = "https://github.com/vjeantet/hugo-theme-docdock" 10 | tags = ["documentation", "menu","slide","search"] 11 | features = ["documentation","menu","nested sections","search","slide", "attachments"] 12 | min_version = 0.32 13 | 14 | [author] 15 | name = "Valere JEANTET" 16 | homepage = "http://vjeantet.fr/" 17 | 18 | [original] 19 | name = "Learn" 20 | homepage = "https://matcornic.github.io/hugo-learn-doc/basics/what-is-this-hugo-theme/" 21 | repo = "https://github.com/matcornic/hugo-theme-learn" 22 | licenselink = "https://github.com/matcornic/hugo-theme-learn/blob/master/LICENSE.md" -------------------------------------------------------------------------------- /e2e/README.md: -------------------------------------------------------------------------------- 1 | # Codefresh Cli E2E 2 | 3 | Account -- codefresh-cli-e2e 4 | 5 | If you want to debug e2e: 6 | 1) enable debug on the `build` pipeline 7 | 2) put breakpoint after `e2e_tests` step 8 | 3) then you can see logs of each test under `/codefresh/volume/cli/e2e/scenarios` 9 | 10 | ##### Note: try to create projects that do not contain same words (like _cli-e2e_ and _cli-e2e_-test) 11 | -------------------------------------------------------------------------------- /e2e/data/crud.pip.yaml: -------------------------------------------------------------------------------- 1 | version: '1.0' 2 | kind: pipeline 3 | metadata: 4 | name: pipeline-crud/crud 5 | project: pipeline-crud 6 | originalYamlString: | 7 | version: '1.0' 8 | steps: 9 | test: 10 | image: alpine 11 | commands: 12 | - echo test 13 | spec: 14 | triggers: [] 15 | stages: [] 16 | variables: [] 17 | contexts: [] 18 | steps: 19 | test: 20 | image: alpine 21 | commands: 22 | - echo test 23 | 24 | -------------------------------------------------------------------------------- /e2e/data/test-run.pip.yaml: -------------------------------------------------------------------------------- 1 | version: '1.0' 2 | kind: pipeline 3 | metadata: 4 | name: test-run/test-run 5 | project: test-run 6 | originalYamlString: | 7 | version: '1.0' 8 | steps: 9 | test: 10 | image: alpine 11 | commands: 12 | - echo test 13 | spec: 14 | triggers: [] 15 | stages: [] 16 | variables: [] 17 | contexts: [] 18 | steps: 19 | test: 20 | image: alpine 21 | commands: 22 | - echo test 23 | 24 | -------------------------------------------------------------------------------- /e2e/e2e.spec.sh: -------------------------------------------------------------------------------- 1 | # fail if one of the commands returns non-zero code 2 | set -e 3 | set -o pipefail 4 | 5 | export SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 6 | source "$SCRIPT_DIR/helpers.sh" 7 | 8 | codefresh version 9 | echo 10 | 11 | for executable in $SCRIPT_DIR/scenarios/*.sh 12 | do 13 | source $executable > "$executable.log" 2>&1 & 14 | echo "[$!] Executing: $executable" 15 | done 16 | echo 17 | 18 | for job in `jobs -p` 19 | do 20 | echo "Waiting for $job..." 21 | wait $job || exit 1 22 | done 23 | 24 | echo 25 | echo "All tests executed successfully!" 26 | -------------------------------------------------------------------------------- /e2e/helpers.sh: -------------------------------------------------------------------------------- 1 | CODEFRESH_PATH="$SCRIPT_DIR/../lib/interface/cli/codefresh" 2 | 3 | echo "Using $CODEFRESH_PATH" 4 | function codefresh() { 5 | $CODEFRESH_PATH $@ 6 | } 7 | 8 | function exists() { 9 | codefresh get $1 | grep $2 || echo '' 10 | } 11 | -------------------------------------------------------------------------------- /e2e/scenarios/agents.sh: -------------------------------------------------------------------------------- 1 | codefresh get agents 2 | -------------------------------------------------------------------------------- /e2e/scenarios/annotations.sh: -------------------------------------------------------------------------------- 1 | echo "Skipping annotation.sh" 2 | #codefresh get annotation 3 | -------------------------------------------------------------------------------- /e2e/scenarios/boards.sh: -------------------------------------------------------------------------------- 1 | codefresh get boards 2 | echo "Skipping sections.sh" 3 | #codefresh get sections 4 | -------------------------------------------------------------------------------- /e2e/scenarios/builds.sh: -------------------------------------------------------------------------------- 1 | codefresh get builds 2 | -------------------------------------------------------------------------------- /e2e/scenarios/clusters.sh: -------------------------------------------------------------------------------- 1 | codefresh get clusters 2 | -------------------------------------------------------------------------------- /e2e/scenarios/compositions.sh: -------------------------------------------------------------------------------- 1 | codefresh get compositions 2 | -------------------------------------------------------------------------------- /e2e/scenarios/contexts.sh: -------------------------------------------------------------------------------- 1 | codefresh get contexts 2 | -------------------------------------------------------------------------------- /e2e/scenarios/environments.sh: -------------------------------------------------------------------------------- 1 | codefresh get environments 2 | -------------------------------------------------------------------------------- /e2e/scenarios/helm-repo.sh: -------------------------------------------------------------------------------- 1 | codefresh get helm-repo 2 | -------------------------------------------------------------------------------- /e2e/scenarios/images.sh: -------------------------------------------------------------------------------- 1 | codefresh get images 2 | -------------------------------------------------------------------------------- /e2e/scenarios/pipeline-run.sh: -------------------------------------------------------------------------------- 1 | project=test-run 2 | pipeline="$project/test-run" 3 | pipeline_file="$SCRIPT_DIR/data/test-run.pip.yaml" 4 | 5 | existing_pipeline=`exists pipeline $pipeline` 6 | existing_project=`exists project $project` 7 | 8 | if [ -z "$existing_project" ]; then 9 | echo "Project does not exist: $project" 10 | echo "Creating project: $project" 11 | codefresh create project $project 12 | else 13 | echo "Project already exists: $project" 14 | fi 15 | 16 | if [ -z "$existing_pipeline" ]; then 17 | echo "Pipeline does not exist: $pipeline" 18 | echo "Creating pipeline: $pipeline" 19 | codefresh create -f $pipeline_file 20 | else 21 | echo "Pipeline already exists: $pipeline" 22 | fi 23 | 24 | codefresh run $pipeline 25 | codefresh delete pipeline $pipeline 26 | codefresh delete project $project 27 | -------------------------------------------------------------------------------- /e2e/scenarios/pipelines.sh: -------------------------------------------------------------------------------- 1 | project='pipeline-crud' 2 | pipeline="$project/crud" 3 | pipeline_file="$SCRIPT_DIR/data/crud.pip.yaml" 4 | 5 | existing_project=`exists project $project` 6 | existing_pipeline=`exists pipeline $pipeline` 7 | 8 | if [ -z "$existing_project" ]; then 9 | echo "Project does not exist: $project" 10 | echo "Creating project: $project" 11 | codefresh create project $project 12 | else 13 | echo "Project already exists: $project" 14 | fi 15 | 16 | if [ -z "$existing_pipeline" ]; then 17 | echo "Pipeline does not exist: $pipeline" 18 | echo "Creating pipeline: $pipeline" 19 | codefresh create -f $pipeline_file 20 | else 21 | echo "Pipeline already exists: $pipeline" 22 | codefresh delete pipeline $pipeline 23 | codefresh create -f $pipeline_file 24 | fi 25 | 26 | codefresh get pipelines 27 | codefresh get pipeline $pipeline 28 | 29 | codefresh delete pipeline $pipeline 30 | codefresh delete project $project 31 | 32 | -------------------------------------------------------------------------------- /e2e/scenarios/projects.sh: -------------------------------------------------------------------------------- 1 | project='project-crud' 2 | 3 | existing_project=`exists project $project` 4 | 5 | if [ -z "$existing_project" ]; then 6 | echo "Project does not exist: $project" 7 | echo "Creating project: $project" 8 | codefresh create project $project 9 | else 10 | echo "Project already exists: $project" 11 | codefresh delete project $project 12 | codefresh create project $project 13 | fi 14 | 15 | codefresh get projects 16 | codefresh get project $project 17 | codefresh delete project $project 18 | -------------------------------------------------------------------------------- /e2e/scenarios/registry.sh: -------------------------------------------------------------------------------- 1 | codefresh get registry 2 | -------------------------------------------------------------------------------- /e2e/scenarios/repository.sh: -------------------------------------------------------------------------------- 1 | codefresh get repository 2 | codefresh get repository -a 3 | -------------------------------------------------------------------------------- /e2e/scenarios/runtime-environment.sh: -------------------------------------------------------------------------------- 1 | codefresh get runtime-environments 2 | -------------------------------------------------------------------------------- /e2e/scenarios/step-types.sh: -------------------------------------------------------------------------------- 1 | codefresh get step-types 2 | -------------------------------------------------------------------------------- /e2e/scenarios/system-runtime-environments.sh: -------------------------------------------------------------------------------- 1 | codefresh get system-runtime-environments 2 | -------------------------------------------------------------------------------- /e2e/scenarios/teams.sh: -------------------------------------------------------------------------------- 1 | codefresh get teams 2 | -------------------------------------------------------------------------------- /e2e/scenarios/tokens.sh: -------------------------------------------------------------------------------- 1 | codefresh get tokens 2 | -------------------------------------------------------------------------------- /e2e/scenarios/triggers.sh: -------------------------------------------------------------------------------- 1 | codefresh get triggers 2 | codefresh get trigger-events 3 | codefresh get trigger-types 4 | -------------------------------------------------------------------------------- /lib/binary/index.js: -------------------------------------------------------------------------------- 1 | const components = require('./components'); 2 | const { Runner } = require('./runner'); 3 | const { Downloader, CommonProgressFormat, CODEFRESH_PATH } = require('./downloader'); 4 | 5 | module.exports = { 6 | components, 7 | Runner, 8 | Downloader, 9 | CommonProgressFormat, 10 | CODEFRESH_PATH, 11 | }; 12 | -------------------------------------------------------------------------------- /lib/binary/runner.js: -------------------------------------------------------------------------------- 1 | const { spawn } = require('child_process'); 2 | const { join, resolve } = require('path'); 3 | const { homedir } = require('os'); 4 | 5 | const CODEFRESH_PATH = resolve(homedir(), '.Codefresh'); 6 | 7 | class Runner { 8 | constructor(location = CODEFRESH_PATH) { 9 | this.location = location; 10 | } 11 | 12 | async run(component, args) { 13 | const dir = join(this.location, component.local.dir); 14 | const path = component.local.alternateBinary || join(dir, component.local.binary); 15 | const cp = spawn(path, args, { 16 | stdio: [process.stdin, process.stdout, process.stderr], 17 | }); 18 | return new Promise((resolveFn, rejectFn) => { 19 | cp.on('exit', (code) => { 20 | if (code !== 0) { 21 | rejectFn(new Error(`Component exited with status code ${code}`)); 22 | } else { 23 | resolveFn(); 24 | } 25 | }); 26 | }); 27 | } 28 | } 29 | 30 | module.exports = { Runner }; 31 | -------------------------------------------------------------------------------- /lib/interface/cli/codefresh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const Output = require('../../output/Output'); 4 | 5 | process.on('uncaughtException', (err) => { 6 | Output.printError(err); 7 | process.exit(1); 8 | }); 9 | 10 | process.on('unhandledRejection', (err) => { 11 | Output.printError(err); 12 | process.exit(1); 13 | }); 14 | 15 | if (process.argv.includes('--get-yargs-completions')) { 16 | const completionInterface = require('./completion'); 17 | completionInterface().argv; // eslint-disable-line 18 | } else { 19 | const { startCommandLine } = require('./commad-line-interface'); 20 | startCommandLine().catch((err) => { 21 | Output.printError(err); 22 | process.exit(1); 23 | }); 24 | } 25 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/RuntimeEnvironmentBaseImages/runtimeEnvironmentsBaseImages.sdk.spec.js: -------------------------------------------------------------------------------- 1 | const getCmd = require('./get.cmd').toCommand(); 2 | 3 | jest.mock('../../../../logic/entities/RuntimeEnvironments'); 4 | 5 | const request = require('requestretry'); 6 | 7 | const DEFAULT_RESPONSE = request.__defaultResponse(); 8 | 9 | describe('runtime environment commands', () => { 10 | beforeEach(async () => { 11 | request.__reset(); 12 | request.mockClear(); 13 | await configureSdk(); // eslint-disable-line 14 | }); 15 | 16 | describe('get', () => { 17 | it('should handle getting base images', async () => { 18 | const argv = { name: 'some name' }; 19 | await getCmd.handler(argv); 20 | await verifyResponsesReturned([DEFAULT_RESPONSE]); // eslint-disable-line 21 | }); 22 | 23 | it('should throw an error for missing name', async () => { 24 | try { 25 | const argv = {}; 26 | await getCmd.handler(argv); 27 | } catch (err) { 28 | expect(err.message).toEqual('Runtime Name must be provided'); 29 | } 30 | }); 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/agent/helper.js: -------------------------------------------------------------------------------- 1 | const sdk = require('../../../../logic/sdk'); 2 | const _ = require('lodash'); 3 | 4 | async function getNewAgentName(kubeContextName, kubeNamespace, agents) { 5 | const defaultName = `${kubeContextName}_${kubeNamespace}`; 6 | if (!agents) { 7 | // eslint-disable-next-line no-param-reassign 8 | agents = await sdk.agents.list({ }); 9 | } 10 | let name; 11 | 12 | if (!_.isArray(agents) || !_.find(agents, a => a.name === defaultName)) { 13 | name = defaultName; // use the default name if there are no collisions 14 | } else { 15 | const agentsNames = new Set(_.map(agents, a => a.name)); // for fast lookup 16 | let i = 1; 17 | while (agentsNames.has(`${defaultName}_${i}`)) { 18 | i += 1; 19 | } 20 | name = `${defaultName}_${i}`; 21 | } 22 | 23 | return name; 24 | } 25 | 26 | module.exports = { 27 | getNewAgentName, 28 | }; 29 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/analyzer/analyzer.logic.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-use-before-define,object-curly-newline,arrow-body-style */ 2 | 3 | const { sdk } = require('../../../../logic'); 4 | 5 | class AnalyzerLogic { 6 | 7 | static async analyze({ repoOwner, repoName, context }) { 8 | 9 | const repo = { 10 | repoOwner, 11 | repoName, 12 | git: context, 13 | }; 14 | 15 | return sdk.pipelines.analyze({ 16 | repo, 17 | type: 'git', 18 | source: 'api' 19 | }); 20 | } 21 | 22 | } 23 | 24 | module.exports = AnalyzerLogic; 25 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/auth/current-context.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const authRoot = require('../root/auth.cmd'); 3 | const { Config } = require('codefresh-sdk'); 4 | const { printTableForAuthContexts } = require('../../helpers/auth'); 5 | 6 | const command = new Command({ 7 | command: 'current-context', 8 | parent: authRoot, 9 | description: 'Get the current activated authentication context', 10 | webDocs: { 11 | category: 'Authentication', 12 | title: 'Get Activated Context', 13 | weight: 30, 14 | }, 15 | builder: (yargs) => { 16 | return yargs 17 | .example('codefresh auth current-context', 'Show active authentication context'); 18 | }, 19 | handler: async (argv) => { 20 | await Config.manager().loadConfig({ configFilePath: argv.cfconfig }); 21 | await printTableForAuthContexts({ filter: 'current' }); 22 | }, 23 | }); 24 | 25 | module.exports = command; 26 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/auth/get-contexts.cmd.js: -------------------------------------------------------------------------------- 1 | const debug = require('debug')('codefresh:auth:get-contexts'); 2 | const Command = require('../../Command'); 3 | const { printTableForAuthContexts } = require('../../helpers/auth'); 4 | const { Config } = require('codefresh-sdk'); 5 | const authRoot = require('../root/auth.cmd'); 6 | 7 | const command = new Command({ 8 | command: 'get-contexts', 9 | parent: authRoot, 10 | description: 'Get all possible authentication contexts', 11 | webDocs: { 12 | category: 'Authentication', 13 | title: 'Get Contexts', 14 | weight: 10, 15 | }, 16 | builder: (yargs) => { 17 | return yargs 18 | .example('codefresh auth get-contexts', 'List all existing authentication contexts'); 19 | }, 20 | handler: async (argv) => { 21 | await Config.manager().loadConfig({ configFilePath: argv.cfconfig }); 22 | await printTableForAuthContexts({ filter: 'all' }); 23 | }, 24 | }); 25 | 26 | 27 | module.exports = command; 28 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/cluster/get.cmd.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Command = require('../../Command'); 3 | const Output = require('../../../../output/Output'); 4 | const getRoot = require('../root/get.cmd'); 5 | const { sdk } = require('../../../../logic'); 6 | const Cluster = require('../../../../logic/entities/Cluster'); 7 | 8 | 9 | const command = new Command({ 10 | command: 'clusters', 11 | aliases: ['cluster'], 12 | category: 'Clusters', 13 | parent: getRoot, 14 | description: 'Get an array of clusters', 15 | webDocs: { 16 | category: 'Clusters', 17 | title: 'Get Clusters', 18 | }, 19 | builder: (yargs) => { 20 | return yargs 21 | .example('codefresh get clusters', 'Get all clusters'); 22 | }, 23 | handler: async (argv) => { 24 | const clusters = await sdk.clusters.list(); 25 | Output.print(_.map(clusters, Cluster.fromResponse)); 26 | }, 27 | }); 28 | 29 | module.exports = command; 30 | 31 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/completion/bash.sh.hbs: -------------------------------------------------------------------------------- 1 | ###-begin-{{app_name}}-completions-### 2 | # 3 | # codefresh command completion script 4 | # 5 | # Installation: {{app_path}} {{completion_command}} >> ~/.bashrc 6 | # or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. 7 | # 8 | _codefresh_completions() 9 | { 10 | local cur args type_list 11 | 12 | cur="${COMP_WORDS[COMP_CWORD]}" 13 | args=("${COMP_WORDS[@]}") 14 | 15 | # ask codefresh to generate completions. 16 | type_list=$(codefresh --get-yargs-completions "${args[@]}") 17 | 18 | if [[ ${type_list} == '__files_completion__' ]]; then 19 | _filedir "@(yaml|yml|json)" 20 | else 21 | COMPREPLY=( $(compgen -W "${type_list}" -- ${cur}) ) 22 | fi 23 | 24 | return 0 25 | } 26 | complete -F _codefresh_completions {{app_name}} 27 | ###-end-{{app_name}}-completions-### 28 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/completion/zsh.sh.hbs: -------------------------------------------------------------------------------- 1 | ###-begin-{{app_name}}-completions-### 2 | # 3 | # codefresh command completion script 4 | # 5 | # Installation: {{app_name}} {{completion_command}} zsh >> ~/.zshrc 6 | # 7 | _codefresh_completions() 8 | { 9 | type_list=($({{app_path}} --impl-zsh-file-dir --get-yargs-completions "${words[@]}")) 10 | 11 | if [[ ${type_list[1]} == '__files_completion__' ]]; then 12 | compadd -- "${type_list[@]:1}" 13 | else 14 | compadd -- "${type_list[@]}" 15 | fi 16 | 17 | return 0 18 | } 19 | compdef _codefresh_completions {{app_name}} 20 | ###-end-{{app_name}}-completions-### 21 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/components/download.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const componentsRoot = require('../root/components.cmd'); 3 | const helper = require('../hybrid/helper'); 4 | 5 | const command = new Command({ 6 | command: 'download', 7 | parent: componentsRoot, 8 | description: 'Download Codefresh CLI components', 9 | webDocs: { 10 | category: 'Components', 11 | title: 'Download', 12 | }, 13 | builder: (yargs) => yargs 14 | .env('CF_ARG_') // this means that every process.env.CF_ARG_* will be passed to argv 15 | .option('location', { 16 | describe: 'Override download folder location. Default: ~/.Codefresh', 17 | }) 18 | .option('components', { 19 | describe: 'Components. List of [stevedore, venona, argocd-agent, codefresh]', 20 | }), 21 | handler: async (argv) => { 22 | console.log('Downloading components'); 23 | const { location, components } = argv; 24 | await helper.downloadComponents(location, components); 25 | }, 26 | }); 27 | 28 | module.exports = command; 29 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/composition/create.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['--filename', '-f', '--compose-file', '-c']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/composition/replace.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['--filename', '-f', '--compose-file', '-c']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/context/create.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const createRoot = require('../root/create.cmd'); 3 | const yargs = require('yargs'); 4 | 5 | const command = new Command({ 6 | command: 'context', 7 | aliases: ['ctx'], 8 | parent: createRoot, 9 | description: 'Create a context', 10 | webDocs: { 11 | category: 'Contexts', 12 | title: 'Create Context', 13 | }, 14 | builder: (yargs) => { 15 | return yargs; 16 | }, 17 | handler: async (argv) => { 18 | yargs.showHelp(); 19 | }, 20 | }); 21 | 22 | module.exports = command; 23 | 24 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/context/create/helm-repo/base.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../../../Command'); 2 | const createContext = require('../../create.cmd'); 3 | const yargs = require('yargs'); 4 | 5 | const command = new Command({ 6 | command: 'helm-repository', 7 | parent: createContext, 8 | description: 'Create a helm-repository context [type]', 9 | usage: '', 10 | webDocs: { 11 | category: 'Create Context', 12 | subCategory: 'Helm Repository', 13 | title: 'Create Helm-Repository Context', 14 | }, 15 | builder: (yargs) => { 16 | return yargs; 17 | }, 18 | handler: async (argv) => { 19 | yargs.showHelp(); 20 | }, 21 | }); 22 | 23 | module.exports = command; 24 | 25 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/context/create/secret-store/base.cmd.js: -------------------------------------------------------------------------------- 1 | const yargs = require('yargs'); 2 | 3 | const Command = require('../../../../Command'); 4 | const createContext = require('../../create.cmd'); 5 | 6 | const usage = 'Secret-Store context are used during pipeline execution as API to resolve variables that are parse of Codefresh'; 7 | 8 | const command = new Command({ 9 | command: 'secret-store', 10 | parent: createContext, 11 | description: 'Create a secret-store context [type]', 12 | usage, 13 | webDocs: { 14 | category: 'Create Context', 15 | subCategory: 'Secret-Store', 16 | title: 'Create Secret-Store Context', 17 | }, 18 | builder: (yargs) => { 19 | yargs 20 | .option('sharing-policy', { 21 | describe: 'Set the sharing policy for secret-store context', 22 | choices: ['AccountAdmins', 'AllUsersInAccount'], 23 | default: 'AccountAdmins', 24 | }); 25 | return yargs; 26 | }, 27 | handler: async (argv) => { 28 | yargs.showHelp(); 29 | }, 30 | }); 31 | 32 | module.exports = command; 33 | 34 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/environment/delete.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const deleteRoot = require('../root/delete.cmd'); 3 | const { sdk } = require('../../../../logic'); 4 | 5 | const command = new Command({ 6 | command: 'environment ', 7 | aliases: ['env'], 8 | description: 'Delete an environment', 9 | parent: deleteRoot, 10 | webDocs: { 11 | category: 'Environments', 12 | title: 'Delete Environment', 13 | }, 14 | builder: (yargs) => { 15 | return yargs 16 | .positional('id', { 17 | describe: 'Environment id', 18 | }) 19 | .example('codefresh delete environment ID', 'Delete environment ID'); 20 | }, 21 | handler: async (argv) => { 22 | const id = argv.id; 23 | await sdk.envs.terminate({ id }); 24 | console.log(`Environment: '${id}' deleted`); 25 | }, 26 | }); 27 | 28 | module.exports = command; 29 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/gitops/argocd/install.js: -------------------------------------------------------------------------------- 1 | const gitopsInstaller = require('../common/install'); 2 | 3 | class ArgoCDInstall { 4 | // eslint-disable-next-line class-methods-use-this 5 | async install(argv) { 6 | return gitopsInstaller.install(argv); 7 | } 8 | } 9 | module.exports = new ArgoCDInstall(); 10 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/gitops/argocd/uninstall.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const gitopsUninstaller = require('../common/uninstall'); 3 | 4 | class ArgoCDInstall { 5 | // eslint-disable-next-line class-methods-use-this 6 | async uninstall(argv) { 7 | const uninstallOptions = _.pick(argv, ['kube-config-path', 'kube-context-name', 'kube-namespace', 'in-cluster']); 8 | return gitopsUninstaller.uninstall(argv.provider, uninstallOptions); 9 | } 10 | } 11 | module.exports = new ArgoCDInstall(); 12 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/gitops/argocd/upgrade.js: -------------------------------------------------------------------------------- 1 | const gitopsUpgrader = require('../common/upgrade'); 2 | 3 | class ArgoCDUpgrade { 4 | // eslint-disable-next-line class-methods-use-this 5 | async upgrade(argv) { 6 | return gitopsUpgrader.upgrade(argv); 7 | } 8 | } 9 | module.exports = new ArgoCDUpgrade(); 10 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/gitops/codefresh/uninstall.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const gitopsUninstaller = require('../common/uninstall'); 3 | 4 | class CodefreshInstall { 5 | // eslint-disable-next-line class-methods-use-this 6 | async uninstall(argv) { 7 | const uninstallOptions = _.pick(argv, [ 8 | 'kube-config-path', 'kube-context-name', 'kube-namespace', 'install-manifest', 'in-cluster', 9 | ]); 10 | await gitopsUninstaller.uninstall(argv.provider, uninstallOptions); 11 | } 12 | } 13 | 14 | module.exports = new CodefreshInstall(); 15 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/gitops/codefresh/upgrade.js: -------------------------------------------------------------------------------- 1 | const gitopsUpgrader = require('../common/upgrade'); 2 | 3 | class CodefreshGitopsUpgrade { 4 | // eslint-disable-next-line class-methods-use-this 5 | async upgrade(argv) { 6 | return gitopsUpgrader.upgrade(argv); 7 | } 8 | } 9 | module.exports = new CodefreshGitopsUpgrade(); 10 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/helm/release/util.js: -------------------------------------------------------------------------------- 1 | const { sdk } = require('../../../../../logic'); 2 | 3 | class HelmUtil { 4 | // eslint-disable-next-line class-methods-use-this 5 | async isHelm3(cluster) { 6 | try { 7 | const config = await sdk.helm['cluster-config'].get({ 8 | selector: cluster, 9 | }); 10 | return config.helmVersion === 'helm3'; 11 | } catch (e) { 12 | return false; 13 | } 14 | } 15 | } 16 | module.exports = new HelmUtil(); 17 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/helm/repo/delete.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../../Command'); 2 | const deleteRoot = require('../../root/delete.cmd'); 3 | const { sdk } = require('../../../../../logic'); 4 | 5 | 6 | const command = new Command({ 7 | command: 'helm-repo [name]', 8 | aliases: [], 9 | parent: deleteRoot, 10 | description: 'Delete a helm repo', 11 | webDocs: { 12 | category: 'Helm Repos', 13 | title: 'Delete Helm Repo', 14 | }, 15 | builder: (yargs) => { 16 | return yargs 17 | .positional('name', { 18 | describe: 'Helm repo name', 19 | required: true, 20 | }) 21 | .example('codefresh delete helm-repo my-repo', 'Delete a helm repo.'); 22 | }, 23 | handler: async (argv) => { 24 | const { name } = argv; 25 | 26 | if (!name) { 27 | throw new Error('Repo name must be provided'); 28 | } 29 | 30 | await sdk.helm.repos.delete({ name }); 31 | console.log(`Helm repo '${name}' deleted.`); 32 | }, 33 | }); 34 | 35 | 36 | module.exports = command; 37 | 38 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/hybrid/info.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const runnerRoot = require('../root/runner.cmd'); 3 | const getAgents = require('../agent/get.cmd'); 4 | const { getTestPipelineLink, INSTALLATION_DEFAULTS } = require('../hybrid/helper'); 5 | const colors = require('colors'); 6 | 7 | 8 | const command = new Command({ 9 | command: 'info', 10 | parent: runnerRoot, 11 | description: 'Get info on your runner installations', 12 | webDocs: { 13 | category: 'Runner', 14 | title: 'Info', 15 | }, 16 | handler: async () => { 17 | await getAgents.handler({}); 18 | const pipelineLink = await getTestPipelineLink(INSTALLATION_DEFAULTS.DEMO_PIPELINE_NAME, false); 19 | if (pipelineLink) { 20 | // eslint-disable-next-line max-len 21 | console.log(`\nTest pipeline with the name: '${colors.cyan(INSTALLATION_DEFAULTS.DEMO_PIPELINE_NAME)}' exists for this account.` + 22 | `\nWatch it here: ${colors.blue(pipelineLink)}`); 23 | } 24 | }, 25 | }); 26 | 27 | module.exports = command; 28 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/imagePullSecret/imagePullSecret.sdk.spec.js: -------------------------------------------------------------------------------- 1 | const generateCmd = require('./generate.cmd').toCommand(); 2 | 3 | const request = require('requestretry'); 4 | 5 | const DEFAULT_RESPONSE = request.__defaultResponse(); 6 | 7 | describe('image pull secret commands', () => { 8 | beforeEach(async () => { 9 | request.__reset(); 10 | request.mockClear(); 11 | await configureSdk(); // eslint-disable-line 12 | }); 13 | 14 | describe('generate', () => { 15 | it('should handle generation', async () => { 16 | const argv = { cluster: 'cluster', namespace: 'default', registry: 'reg' }; 17 | await generateCmd.handler(argv); 18 | await verifyResponsesReturned([DEFAULT_RESPONSE]); // eslint-disable-line 19 | }); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/offline-logs/base.cmd.js: -------------------------------------------------------------------------------- 1 | const yargs = require("yargs"); 2 | const Command = require("../../Command"); 3 | 4 | const command = new Command({ 5 | command: "offline-logs", 6 | root: true, 7 | description: "Manages offline logs", 8 | webDocs: { 9 | category: "Logs category", 10 | subCategory: "Logs sub category", 11 | title: "Archives old logs to file or collection.", 12 | }, 13 | builder: (yargs) => { 14 | // set options which are used in both sub-commands 15 | return yargs 16 | .env("RUNTIME_MONGO") 17 | .option("uri", { 18 | describe: 19 | "Mongodb URI. If not provided, will be parsed from environment variable RUNTIME_MONGO_URI.", 20 | type: "string", 21 | }) 22 | .option("db", { 23 | describe: 24 | "Database name. If not provided, will be parsed from environment variable RUNTIME_MONGO_DB.", 25 | type: "string", 26 | }); 27 | }, 28 | handler: () => { 29 | yargs.showHelp(); 30 | }, 31 | }); 32 | 33 | module.exports = command; 34 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/pipeline/delete.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const deleteRoot = require('../root/delete.cmd'); 3 | const { sdk } = require('../../../../logic'); 4 | 5 | 6 | const command = new Command({ 7 | command: 'pipeline [name]', 8 | aliases: ['pip'], 9 | parent: deleteRoot, 10 | description: 'Delete a pipeline', 11 | webDocs: { 12 | category: 'Pipelines', 13 | title: 'Delete Pipeline', 14 | }, 15 | builder: (yargs) => { 16 | return yargs 17 | .positional('name', { 18 | describe: 'Pipeline name', 19 | }); 20 | }, 21 | handler: async (argv) => { 22 | const { name } = argv; 23 | 24 | await sdk.pipelines.delete({ name }); 25 | console.log(`Pipeline '${name}' deleted.`); 26 | }, 27 | }); 28 | 29 | 30 | module.exports = command; 31 | 32 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/pipeline/get.completion.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const pipelines = () => require('../../../../logic').sdk.pipelines; 3 | const Pipeline = require('../../../../logic/entities/Pipeline'); 4 | const { authContextWrapper } = require('../../completion/helpers'); 5 | 6 | const positionalHandler = async ({word, argv}) => { 7 | const pips = await pipelines().list({ limit: 25, offset: 0 }); 8 | return _.map(_.get(pips, 'docs'), Pipeline.fromResponse).map(p => p.name); 9 | }; 10 | 11 | module.exports = { 12 | positionalHandler: authContextWrapper(positionalHandler), 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/pipeline/run.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['--variable-file', '--var-file', '--yaml', '-y']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/registry/create.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const createRoot = require('../root/create.cmd'); 3 | const yargs = require('yargs'); 4 | 5 | const command = new Command({ 6 | command: 'registry', 7 | category: 'Registries', 8 | parent: createRoot, 9 | description: 'Integrate Container registry into Codefresh', 10 | webDocs: { 11 | category: 'Registries', 12 | title: 'Create Registry', 13 | }, 14 | handler: async () => { 15 | yargs.showHelp(); 16 | }, 17 | }); 18 | 19 | module.exports = command; 20 | 21 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/registry/delete.cmd.js: -------------------------------------------------------------------------------- 1 | const debug = require('debug')('codefresh:cli:get:cluster'); 2 | const Command = require('../../Command'); 3 | const Output = require('../../../../output/Output'); 4 | const deleteCmd = require('../root/delete.cmd'); 5 | const yargs = require('yargs'); 6 | const { sdk } = require('../../../../logic'); 7 | 8 | const command = new Command({ 9 | command: 'registry ', 10 | category: 'Registries', 11 | parent: deleteCmd, 12 | description: 'Delete registry from Codefresh', 13 | webDocs: { 14 | category: 'Registries', 15 | title: 'Delete Registry', 16 | }, 17 | builder: (y) => { 18 | y.positional('ID', { 19 | describe: 'ID of a registry to delete', 20 | }); 21 | return y; 22 | }, 23 | handler: async (argv) => { 24 | await sdk.registries.delete({ id: argv.ID }); 25 | }, 26 | }); 27 | 28 | module.exports = command; 29 | 30 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/registry/get.cmd.js: -------------------------------------------------------------------------------- 1 | const debug = require('debug')('codefresh:cli:get:cluster'); 2 | const _ = require('lodash'); 3 | const Command = require('../../Command'); 4 | const Output = require('../../../../output/Output'); 5 | const getRoot = require('../root/get.cmd'); 6 | const Registry = require('../../../../logic/entities/Registry'); 7 | const { sdk } = require('../../../../logic'); 8 | 9 | 10 | const command = new Command({ 11 | command: 'registry', 12 | category: 'Registries', 13 | parent: getRoot, 14 | description: 'Get an array of accounts registries', 15 | webDocs: { 16 | category: 'Registries', 17 | title: 'Get Registries', 18 | }, 19 | builder: (yargs) => { 20 | return yargs 21 | .example('codefresh get registry', 'Get all registries connected to the account'); 22 | }, 23 | handler: async (argv) => { 24 | const registries = await sdk.registries.list(); 25 | Output.print(_.map(registries, Registry.fromResponse)); 26 | }, 27 | }); 28 | 29 | module.exports = command; 30 | 31 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/add.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | const add = new Command({ 4 | root: true, 5 | command: 'add', 6 | description: 'Add a resource', 7 | usage: 'codefresh add --help', 8 | webDocs: { 9 | title: 'Add', 10 | weight: 70, 11 | }, 12 | builder: (yargs) => { 13 | return yargs 14 | .demandCommand(1, 'You need at least one command before moving on'); 15 | }, 16 | }); 17 | 18 | module.exports = add; 19 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/annotate.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | const annotate = new Command({ 4 | root: true, 5 | command: 'annotate', 6 | description: 'Annotate a resource with labels', 7 | webDocs: { 8 | title: 'annotate', 9 | weight: 50, 10 | }, 11 | builder: (yargs) => { 12 | return yargs 13 | .demandCommand(1, 'You need at least one command before moving on'); 14 | }, 15 | }); 16 | 17 | module.exports = annotate; 18 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/apply.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['-f', '--filename']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/assign.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | const assign = new Command({ 4 | root: true, 5 | command: 'assign', 6 | description: 'Assign a resource', 7 | usage: 'codefresh assign --help', 8 | webDocs: { 9 | title: 'Assign', 10 | weight: 70, 11 | }, 12 | builder: (yargs) => { 13 | return yargs 14 | .demandCommand(1, 'You need at least one command before moving on'); 15 | }, 16 | }); 17 | 18 | module.exports = assign; 19 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/components.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | 4 | const install = new Command({ 5 | root: true, 6 | command: 'components', 7 | description: 'Manages Codefresh CLI components', 8 | requiresAuthentication: false, 9 | webDocs: { 10 | description: 'Codefresh CLI components', 11 | category: 'Codefresh CLI components', 12 | title: 'components', 13 | weight: 40, 14 | }, 15 | }); 16 | 17 | module.exports = install; 18 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/create.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['-f', '--filename']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/delete.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['-f', '--filename']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/diff.cmd.js: -------------------------------------------------------------------------------- 1 | const CFError = require('cf-errors'); 2 | const Command = require('../../Command'); 3 | const { crudFilenameOption } = require('../../helpers/general'); 4 | const DEFAULTS = require('../../defaults'); 5 | const yargs = require('yargs'); 6 | 7 | const diff = new Command({ 8 | root: true, 9 | command: 'diff', 10 | description: 'Show diff between two resources', 11 | usage: 'Supported resources: runtime-environments', 12 | webDocs: { 13 | description: 'Show diff between two resources', 14 | category: 'Operate On Resources', 15 | title: 'Diff', 16 | weight: 100, 17 | }, 18 | builder: (yargs) => { 19 | crudFilenameOption(yargs); 20 | return yargs; 21 | }, 22 | handler: async (argv) => { 23 | if (!argv.filename) { 24 | yargs.showHelp(); 25 | } 26 | 27 | const data = argv.filename; 28 | const entity = data.kind; 29 | 30 | switch (entity) { 31 | default: 32 | throw new CFError(`Entity: ${entity} not supported`); 33 | } 34 | 35 | }, 36 | }); 37 | 38 | module.exports = diff; 39 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/diff.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['-f', '--filename']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/download.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const yargs = require('yargs'); 3 | 4 | const download = new Command({ 5 | root: true, 6 | command: 'download', 7 | description: 'Download resources', 8 | usage: 'Codefresh download ', 9 | webDocs: { 10 | title: 'Download', 11 | weight: 70, 12 | }, 13 | handler: async () => { 14 | yargs.showHelp(); 15 | }, 16 | }); 17 | 18 | module.exports = download; 19 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/generate.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const yargs = require('yargs'); 3 | 4 | const generate = new Command({ 5 | root: true, 6 | command: 'generate', 7 | description: 'Generate resources as Kubernetes image pull secret and Codefresh Registry token', 8 | usage: 'Codefresh generate --help', 9 | webDocs: { 10 | title: 'generate', 11 | weight: 70, 12 | }, 13 | handler: async () => { 14 | yargs.showHelp(); 15 | }, 16 | }); 17 | 18 | module.exports = generate; 19 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/get.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['-f', '--filename']; 4 | const OUTPUT_OPTIONS = ['-o', '--output']; 5 | 6 | function optionHandler({ word, argv, option }) { 7 | if (FILENAME_OPTIONS.includes(option)) { 8 | return fileDir(word); 9 | } 10 | if (OUTPUT_OPTIONS.includes(option)) { 11 | return ['json', 'yaml', 'wide', 'name', 'id']; 12 | } 13 | return []; 14 | } 15 | 16 | module.exports = { 17 | optionHandler: handleOptions([...FILENAME_OPTIONS, ...OUTPUT_OPTIONS], optionHandler), 18 | }; 19 | 20 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/install.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | 4 | const install = new Command({ 5 | root: true, 6 | command: 'install', 7 | description: 'Install a resource', 8 | usage: 'Install operation will install codefresh components on kubernetes cluster', 9 | webDocs: { 10 | description: 'Install a resource', 11 | category: 'Install Resources', 12 | title: 'Install', 13 | weight: 40, 14 | }, 15 | }); 16 | 17 | module.exports = install; 18 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/replace.completion.js: -------------------------------------------------------------------------------- 1 | const { handleOptions, fileDir } = require('../../completion/helpers'); 2 | 3 | const FILENAME_OPTIONS = ['-f', '--filename']; 4 | 5 | function optionHandler({ word, argv, option }) { 6 | if (FILENAME_OPTIONS.includes(option)) { 7 | return fileDir(word); 8 | } 9 | return []; 10 | } 11 | 12 | module.exports = { 13 | optionHandler: handleOptions([...FILENAME_OPTIONS], optionHandler), 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/runner.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | 4 | const runner = new Command({ 5 | root: true, 6 | command: 'runner', 7 | description: 'Manage runner resources', 8 | requiresAuthentication: argv => argv && !argv.token, 9 | usage: 'Manage codefresh runner solution\'s components on kubernetes cluster', 10 | webDocs: { 11 | description: 'Manage and install runner resources', 12 | category: 'Runner Resources', 13 | title: 'Runner', 14 | weight: 40, 15 | }, 16 | }); 17 | 18 | module.exports = runner; 19 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/synchronize.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | const annotate = new Command({ 4 | root: true, 5 | command: 'synchronize', 6 | description: 'Synchronize a resource', 7 | webDocs: { 8 | title: 'synchronize', 9 | weight: 100, 10 | }, 11 | builder: (yargs) => { 12 | return yargs 13 | .demandCommand(1, 'You need at least one command before moving on'); 14 | }, 15 | }); 16 | 17 | module.exports = annotate; 18 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/unassign.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | const unassign = new Command({ 4 | root: true, 5 | command: 'unassign', 6 | description: 'Unassign a resource', 7 | usage: 'codefresh assign --help', 8 | webDocs: { 9 | title: 'Unassign', 10 | weight: 70, 11 | }, 12 | builder: (yargs) => { 13 | return yargs 14 | .demandCommand(1, 'You need at least one command before moving on'); 15 | }, 16 | }); 17 | 18 | module.exports = unassign; 19 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/uninstall.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | 3 | 4 | const unInstall = new Command({ 5 | root: true, 6 | command: 'uninstall', 7 | description: 'Uninstall a resource', 8 | usage: 'Uninstall operation will uninstall codefresh components on kubernetes cluster', 9 | webDocs: { 10 | description: 'Uninstall a resource', 11 | category: 'Uninstall Resources', 12 | title: 'Uninstall', 13 | weight: 40, 14 | }, 15 | }); 16 | 17 | module.exports = unInstall; 18 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/root/validate.completion.js: -------------------------------------------------------------------------------- 1 | const { fileDir } = require('../../completion/helpers'); 2 | 3 | function positionalHandler({ word, argv}) { 4 | return fileDir(word); 5 | } 6 | 7 | module.exports = { 8 | positionalHandler, 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/runtimeEnvironments/create.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const createRoot = require('../root/create.cmd'); 3 | 4 | const DEPRECATION_MESSAGE = 'Create runtime-environment command has been deprecated.\nUse codefresh install runtime command instead'; 5 | 6 | const command = new Command({ 7 | command: 'runtime-environments [cluster]', 8 | aliases: ['re', 'runtime-environment'], 9 | parent: createRoot, 10 | description: 'Create a runtime environment', 11 | webDocs: { 12 | category: 'Runtime-Environments', 13 | title: 'Create Runtime-Environments', 14 | weight: 100, 15 | }, 16 | handler: async () => { 17 | console.log(`${DEPRECATION_MESSAGE}`); 18 | process.exit(1); 19 | }, 20 | }); 21 | 22 | 23 | module.exports = command; 24 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/step/delete.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const deleteRoot = require('../root/delete.cmd'); 3 | const { sdk } = require('../../../../logic'); 4 | 5 | 6 | const command = new Command({ 7 | command: 'step-type [name]', 8 | parent: deleteRoot, 9 | description: 'Delete a step-type', 10 | webDocs: { 11 | category: 'Step-types', 12 | title: 'Delete Step-type', 13 | }, 14 | builder: (yargs) => { 15 | return yargs 16 | .positional('name', { 17 | describe: 'Step-type name', 18 | }); 19 | }, 20 | handler: async (argv) => { 21 | const { name } = argv; 22 | 23 | await sdk.steps.delete({ name }); 24 | console.log(`Step-type '${name}' deleted.`); 25 | }, 26 | }); 27 | 28 | 29 | module.exports = command; 30 | 31 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/step/get.completion.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const steps = () => require('../../../../logic').sdk.steps; 3 | const StepType = require('../../../../logic/entities/StepType'); 4 | const { authContextWrapper } = require('../../completion/helpers'); 5 | 6 | const positionalHandler = async ({word, argv}) => { 7 | const stps = await steps().list({ limit: 25, offset: 0 }); 8 | return _.map(_.get(stps, 'docs'), StepType.fromResponse).map(p => p.name); 9 | }; 10 | 11 | module.exports = { 12 | positionalHandler: authContextWrapper(positionalHandler), 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/team/get.cmd.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Command = require('../../Command'); 3 | const Output = require('../../../../output/Output'); 4 | const getRoot = require('../root/get.cmd'); 5 | const { sdk } = require('../../../../logic'); 6 | const Team = require('../../../../logic/entities/Team'); 7 | 8 | 9 | const command = new Command({ 10 | command: 'teams', 11 | aliases: ['team', 'tm'], 12 | parent: getRoot, 13 | description: 'Get an array of all current user teams', 14 | webDocs: { 15 | category: 'Teams', 16 | title: 'Get Teams', 17 | }, 18 | builder: (yargs) => { 19 | return yargs 20 | .example('codefresh get teams', 'Get all teams for current account'); 21 | }, 22 | handler: async (argv) => { 23 | const teams = await sdk.teams.list(); 24 | Output.print(_.map(teams, Team.fromResponse)); 25 | }, 26 | }); 27 | 28 | 29 | module.exports = command; 30 | 31 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/workflow/approve.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const yargs = require('yargs'); 3 | const _ = require('lodash'); 4 | const { sdk } = require('../../../../logic'); 5 | 6 | const approveBuildCmd = new Command({ 7 | root: true, 8 | command: 'approve ', 9 | description: 'Approve a pending-approval workflow', 10 | usage: 'approve <$BUILD_ID>', 11 | webDocs: { 12 | category: 'Builds', 13 | title: 'Approve', 14 | weight: 100, 15 | }, 16 | builder: (yargs) => { 17 | return yargs 18 | .positional('buildId', { 19 | describe: 'Build\'s id', 20 | required: true, 21 | }); 22 | }, 23 | handler: async (argv) => { 24 | const { buildId } = argv; 25 | await sdk.workflows.getBuild({ buildId, noAccount: false }); 26 | await sdk.workflows.approve({ buildId }); 27 | console.log(`Workflow ${buildId} has been approved.`); 28 | }, 29 | }); 30 | 31 | module.exports = approveBuildCmd; 32 | -------------------------------------------------------------------------------- /lib/interface/cli/commands/workflow/deny.cmd.js: -------------------------------------------------------------------------------- 1 | const Command = require('../../Command'); 2 | const yargs = require('yargs'); 3 | const _ = require('lodash'); 4 | const { sdk } = require('../../../../logic'); 5 | 6 | const denyBuildCmd = new Command({ 7 | root: true, 8 | command: 'deny ', 9 | description: 'Deny a pending-approval workflow', 10 | usage: 'deny <$BUILD_ID>', 11 | webDocs: { 12 | category: 'Builds', 13 | title: 'Deny', 14 | weight: 100, 15 | }, 16 | builder: (yargs) => { 17 | return yargs 18 | .positional('buildId', { 19 | describe: 'Build\'s id', 20 | required: true, 21 | }); 22 | }, 23 | handler: async (argv) => { 24 | const { buildId } = argv; 25 | await sdk.workflows.getBuild({ buildId, noAccount: false }); 26 | await sdk.workflows.deny({ buildId }); 27 | console.log(`Workflow ${buildId} has been denied.`); 28 | }, 29 | }); 30 | 31 | module.exports = denyBuildCmd; 32 | -------------------------------------------------------------------------------- /lib/interface/cli/defaults.js: -------------------------------------------------------------------------------- 1 | const { homedir } = require('os'); 2 | const path = require('path'); 3 | 4 | const DEFAULTS = { 5 | URL: 'https://g.codefresh.io', 6 | CFCONFIG: `${process.env.HOME || process.env.USERPROFILE}/.cfconfig`, 7 | DEBUG_PATTERN: 'codefresh', 8 | GET_LIMIT_RESULTS: 25, 9 | GET_ALL_PIPELINES_LIMIT: 10000, 10 | GET_PAGINATED_PAGE: 1, 11 | INTERNAL_REGISTRY_PREFIX: 'CFCR', 12 | WATCH_INTERVAL_MS: 3000, 13 | MAX_CONSECUTIVE_ERRORS_LIMIT: 10, 14 | CODEFRESH_PATH: path.resolve(homedir(), '.Codefresh'), 15 | ENGINE_IMAGE: process.env.ENGINE_IMAGE || 'codefresh/engine:master', 16 | }; 17 | 18 | module.exports = DEFAULTS; 19 | -------------------------------------------------------------------------------- /lib/interface/cli/helpers/progressEvents.js: -------------------------------------------------------------------------------- 1 | const EventEmitter = require('events'); 2 | 3 | class ProgressEvents { 4 | constructor() { 5 | this.emitter = new EventEmitter(); 6 | } 7 | onStart(handler) { 8 | this.emitter.addListener('start', (args) => { 9 | handler(args); 10 | }); 11 | } 12 | onProgress(handler) { 13 | this.emitter.addListener('progress', (args) => { 14 | handler(args); 15 | }); 16 | } 17 | reportStart(args) { 18 | this.emitter.emit('start', args); 19 | } 20 | reportProgress(args) { 21 | this.emitter.emit('progress', args); 22 | } 23 | } 24 | 25 | module.exports = ProgressEvents; 26 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/MultiplePropertiesError.js: -------------------------------------------------------------------------------- 1 | class MultiplePropertiesError extends Error { 2 | constructor(properties) { 3 | super(); 4 | this.properties = properties; 5 | } 6 | } 7 | 8 | module.exports = MultiplePropertiesError; 9 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/NoPropertyError.js: -------------------------------------------------------------------------------- 1 | class NoPropertyError extends Error { 2 | constructor(property) { 3 | super(); 4 | this.property = property; 5 | } 6 | } 7 | 8 | module.exports = NoPropertyError; 9 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/NotFullPropertyError.js: -------------------------------------------------------------------------------- 1 | class NotFullPropertyError extends Error { 2 | constructor(property) { 3 | super(); 4 | this.property = property; 5 | } 6 | } 7 | 8 | module.exports = NotFullPropertyError; 9 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/PipelineValidationError.js: -------------------------------------------------------------------------------- 1 | class PipelineValidationError extends Error { 2 | constructor(message) { 3 | super(); 4 | this.message = message; 5 | } 6 | 7 | toString() { 8 | return this.message; 9 | } 10 | } 11 | 12 | module.exports = PipelineValidationError; 13 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/SchemaValidationError.js: -------------------------------------------------------------------------------- 1 | class SchemaValidationError extends Error { 2 | constructor(errors) { 3 | super(); 4 | this.errors = errors; 5 | } 6 | 7 | printErrors() { 8 | this.errors.forEach((e) => { 9 | console.log(`Validation error: property "${e.dataPath.replace('.', '')}" ${e.message}`); 10 | }); 11 | } 12 | } 13 | 14 | module.exports = SchemaValidationError; 15 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/awaitTo.js: -------------------------------------------------------------------------------- 1 | async function to(fn) { 2 | try { 3 | let res; 4 | if (typeof fn === 'function') { 5 | res = await fn(); 6 | } else { 7 | res = await fn; 8 | } 9 | return [null, res]; 10 | } catch (err) { 11 | return [err, null]; 12 | } 13 | } 14 | module.exports = { 15 | to, 16 | }; 17 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/helpers.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | 3 | function prettyError(error) { 4 | try { 5 | const errMsg = _.get(error, 'message', error); 6 | let errObj = JSON.parse(errMsg); 7 | if (typeof errObj === 'string') { 8 | errObj = JSON.parse(errObj); 9 | } 10 | 11 | if (!errObj.message) { 12 | return error; 13 | } 14 | 15 | return errObj.code ? `${errObj.message} [code: ${errObj.code}]` : errObj.message; 16 | } catch (e) { 17 | return _.get(error, 'message', JSON.stringify(error)); 18 | } 19 | } 20 | 21 | module.exports = { 22 | prettyError, 23 | }; 24 | -------------------------------------------------------------------------------- /lib/logic/cli-config/errors/index.js: -------------------------------------------------------------------------------- 1 | const NoPropertyError = require('./NoPropertyError'); 2 | const MultiplePropertiesError = require('./MultiplePropertiesError'); 3 | const NotFullPropertyError = require('./NotFullPropertyError'); 4 | const SchemaValidationError = require('./SchemaValidationError'); 5 | const PipelineValidationError = require('./PipelineValidationError'); 6 | 7 | module.exports = { 8 | NoPropertyError, 9 | MultiplePropertiesError, 10 | NotFullPropertyError, 11 | SchemaValidationError, 12 | PipelineValidationError, 13 | }; 14 | -------------------------------------------------------------------------------- /lib/logic/entities/Annotation.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Entity = require('./Entity'); 3 | 4 | class Annotation extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'annotation'; 8 | this.info = data; 9 | this.id = this.info._id; 10 | this.entity_id = this.info.entityId; 11 | this.entity_type = this.info.entityType; 12 | this.key = this.info.key; 13 | this.value = this.info.value; 14 | this.type = this.info.type; 15 | this.defaultColumns = ['id', 'entity_id', 'entity_type', 'key', 'value']; 16 | this.wideColumns = this.defaultColumns.concat(['type']); 17 | } 18 | 19 | static fromResponse(response) { 20 | return new Annotation(_.pick(response, '_id', 'entityId', 'entityType', 'key', 'value')); 21 | } 22 | } 23 | 24 | module.exports = Annotation; 25 | -------------------------------------------------------------------------------- /lib/logic/entities/Board.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Entity = require('./Entity'); 3 | 4 | class Board extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'board'; 8 | this.info = data; 9 | this.id = this.info._id; 10 | this.name = this.info.name; 11 | this.type = this.info.type; 12 | this.filter = this.info.filter; 13 | this.defaultColumns = ['id', 'name', 'filter']; 14 | this.wideColumns = this.defaultColumns.concat([]); 15 | } 16 | 17 | static fromResponse(response) { 18 | return new Board(_.pick(response, '_id', 'name', 'type', 'filter')); 19 | } 20 | } 21 | 22 | module.exports = Board; 23 | -------------------------------------------------------------------------------- /lib/logic/entities/Cluster.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class Cluster extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'cluster'; 7 | this.info = data; 8 | this.defaultColumns = ['id', 'name']; 9 | this.wideColumns = this.defaultColumns.concat(['provider', 'providerAgent']); 10 | } 11 | 12 | static fromResponse(response) { 13 | return new Cluster({ 14 | id: response._id, 15 | name: response.selector, 16 | provider: response.provider, 17 | providerAgent: response.providerAgent, 18 | }); 19 | } 20 | } 21 | 22 | module.exports = Cluster; 23 | -------------------------------------------------------------------------------- /lib/logic/entities/CodefreshRepo.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class CodefreshRepo extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'codefresh-repo'; 7 | this.info = data; 8 | this.defaultColumns = ['git_context', 'owner', 'name', 'name_id']; 9 | this.wideColumns = this.defaultColumns.concat([]); 10 | } 11 | 12 | static fromResponse(response) { 13 | const data = { ...response }; 14 | data.name_id = response.serviceName; 15 | data.git_context = response.provider; 16 | data.owner = response.owner.login; 17 | data.repo_shortcut = `${data.owner}/${data.name}`; 18 | return new CodefreshRepo(data); 19 | } 20 | } 21 | 22 | module.exports = CodefreshRepo; 23 | -------------------------------------------------------------------------------- /lib/logic/entities/Composition.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class Composition extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'composition'; 7 | this.info = data; 8 | this.defaultColumns = ['id', 'name', 'is_advanced']; 9 | this.wideColumns = ['id', 'name', 'is_advanced', 'created']; 10 | } 11 | 12 | static fromResponse(response) { 13 | return new Composition({ 14 | id: response._id, 15 | name: response.name, 16 | is_advanced: response.isAdvanced, 17 | created: response.created ? new Date(response.created) : undefined, 18 | }); 19 | } 20 | } 21 | 22 | module.exports = Composition; 23 | -------------------------------------------------------------------------------- /lib/logic/entities/Context.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | const _ = require('lodash'); // eslint-disable-line 3 | 4 | class Context extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'context'; 8 | this.info = data; 9 | this.name = this.info.metadata.name; 10 | this.type = this.info.type; 11 | this.defaultColumns = ['name', 'type']; 12 | this.wideColumns = this.defaultColumns || []; 13 | } 14 | 15 | // get the type of the context from spec.type 16 | getType() { 17 | return this.type; 18 | } 19 | 20 | static fromResponse(response) { 21 | return new Context({ 22 | apiVersion: response.apiVersion, 23 | kind: response.kind, 24 | metadata: response.metadata, 25 | type: response.spec.type, 26 | spec: response.spec, 27 | }); 28 | } 29 | } 30 | 31 | module.exports = Context; 32 | -------------------------------------------------------------------------------- /lib/logic/entities/GitRepo.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class GitRepo extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'git-repo'; 7 | this.info = data; 8 | this.defaultColumns = ['git_context', 'owner', 'name', 'repo_shortcut']; 9 | this.wideColumns = this.defaultColumns.concat(['private', 'ssh_url']); 10 | } 11 | 12 | static fromResponse(response) { 13 | const data = { ...response }; 14 | data.git_context = response.provider; 15 | data.owner = response.owner.login; 16 | data.repo_shortcut = `${data.owner}/${data.name}`; 17 | return new GitRepo(data); 18 | } 19 | } 20 | 21 | module.exports = GitRepo; 22 | -------------------------------------------------------------------------------- /lib/logic/entities/HelmRepo.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Entity = require('./Entity'); 3 | 4 | class HelmRepo extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'helm-repo'; 8 | this.info = data; 9 | this.name = this.info.Name; 10 | this.created = this.info.CreatedAt ? new Date(this.info.CreatedAt) : undefined; 11 | this.updated = this.info.UpdatedAt ? new Date(this.info.UpdatedAt) : undefined; 12 | this.public = this.info.Public.toString(); 13 | this.defaultColumns = ['name', 'public', 'created', 'updated']; 14 | this.wideColumns = this.defaultColumns.concat([]); 15 | } 16 | 17 | static fromResponse(response) { 18 | return new HelmRepo(_.pick(response, 'Name', 'CreatedAt', 'Public', 'UpdatedAt')); 19 | } 20 | } 21 | 22 | module.exports = HelmRepo; 23 | -------------------------------------------------------------------------------- /lib/logic/entities/Image.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class Image extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'image'; 7 | this.info = data; 8 | this.defaultColumns = ['id', 'name', 'tag', 'created', 'size', 'sha', 'pull']; 9 | this.wideColumns = this.defaultColumns.concat([]); 10 | } 11 | } 12 | 13 | module.exports = Image; 14 | -------------------------------------------------------------------------------- /lib/logic/entities/Pipeline.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Entity = require('./Entity'); 3 | 4 | class Pipeline extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'pipeline'; 8 | this.info = data; 9 | this.id = this.info.metadata.id; 10 | this.name = this.info.metadata.name; 11 | this.created = this.info.metadata.created_at ? new Date(this.info.metadata.created_at) : undefined; 12 | this.updated = this.info.metadata.updated_at ? new Date(this.info.metadata.updated_at) : undefined; 13 | this.defaultColumns = ['name', 'updated', 'created']; 14 | this.wideColumns = ['id'].concat(this.defaultColumns); 15 | } 16 | 17 | static fromResponse(response) { 18 | return new Pipeline(_.pick(response, 'id', 'version', 'kind', 'metadata', 'spec')); 19 | } 20 | } 21 | 22 | module.exports = Pipeline; 23 | -------------------------------------------------------------------------------- /lib/logic/entities/Project.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Entity = require('./Entity'); 3 | 4 | class Project extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'project'; 8 | this.info = data; 9 | this.id = this.info.id; 10 | this.name = this.info.projectName; 11 | this.tags = this.info.tags; 12 | this.favorite = this.info.favorite; 13 | this.pipelines = this.info.pipelinesNumber; 14 | this.variables = this.info.variables; 15 | this.last_updated = this.info.updatedAt && new Date(this.info.updatedAt); 16 | this.defaultColumns = ['name', 'pipelines', 'last_updated', 'tags']; 17 | this.wideColumns = ['id'].concat(this.defaultColumns); 18 | } 19 | 20 | static fromResponse(response) { 21 | return new Project(_.pick(response, 'id', 'projectName', 'tags', 'variables', 'favorite', 'pipelinesNumber', 'updatedAt')); 22 | } 23 | } 24 | 25 | module.exports = Project; 26 | -------------------------------------------------------------------------------- /lib/logic/entities/Registry.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | const _ = require('lodash'); // eslint-disable-line 3 | 4 | class Registry extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'registry'; 8 | this.info = data; 9 | this.name = this.info.name; 10 | this.kind = this.info.kind; 11 | this.id = this.info._id; 12 | this.behindFirewall = this.info.behindFirewall; 13 | this.default = this.info.default; 14 | this.provider = this.info.provider; 15 | this.defaultColumns = ['id', 'provider', 'name', 'kind', 'behindFirewall', 'default']; 16 | this.wideColumns = this.defaultColumns || []; 17 | } 18 | 19 | getType() { 20 | return this.type; 21 | } 22 | 23 | static fromResponse(response) { 24 | return new Registry({ 25 | provider: response.provider, 26 | name: response.name, 27 | kind: response.kind, 28 | _id: response._id, 29 | behindFirewall: response.behindFirewall, 30 | default: response.default, 31 | }); 32 | } 33 | } 34 | 35 | module.exports = Registry; 36 | -------------------------------------------------------------------------------- /lib/logic/entities/RuntimeEnvironmentBaseImages.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class RuntimeEnvironmentBaseImages extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.info = data; 7 | this.entityType = 'RuntimeEnvironmentBaseImages'; 8 | this.component = data.component; 9 | this.image = data.image; 10 | this.defaultColumns = ['component', 'image']; 11 | this.wideColumns = this.defaultColumns.concat([]); 12 | } 13 | 14 | static fromResponse(response) { 15 | return new RuntimeEnvironmentBaseImages(response); 16 | } 17 | } 18 | module.exports = RuntimeEnvironmentBaseImages; 19 | -------------------------------------------------------------------------------- /lib/logic/entities/Section.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Entity = require('./Entity'); 3 | 4 | class Section extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'section'; 8 | this.info = data; 9 | this.id = this.info._id; 10 | this.name = this.info.name; 11 | this.board = this.info.boardId; 12 | this.board_id = this.info.boardId; 13 | this.cluster = this.info.section; 14 | this.defaultColumns = ['id', 'name', 'board_id', 'cluster']; 15 | this.wideColumns = this.defaultColumns.concat([]); 16 | } 17 | 18 | static fromResponse(response) { 19 | return new Section(_.pick(response, '_id', 'name', 'boardId', 'section')); 20 | } 21 | } 22 | 23 | module.exports = Section; 24 | -------------------------------------------------------------------------------- /lib/logic/entities/StepTypeVersion.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class StepTypeVersion extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'step-type-version'; 7 | this.info = data; 8 | this.version = this.info; 9 | this.defaultColumns = ['version']; 10 | this.wideColumns = this.defaultColumns; 11 | } 12 | 13 | static fromResponse(response) { 14 | return new StepTypeVersion(response); 15 | } 16 | } 17 | 18 | module.exports = StepTypeVersion; 19 | -------------------------------------------------------------------------------- /lib/logic/entities/Team.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class Team extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'team'; 7 | this.info = data; 8 | this.defaultColumns = ['id', 'name', 'type', 'account', 'tags', 'users']; 9 | this.wideColumns = this.defaultColumns.concat([]); 10 | } 11 | 12 | toDefault() { 13 | const data = super.toDefault(); 14 | data.users = data.users.map((user) => user.userName); 15 | return data; 16 | } 17 | 18 | toWide() { 19 | const data = super.toWide(); 20 | data.users = data.users.map((user) => user.userName); 21 | return data; 22 | } 23 | 24 | static fromResponse(response) { 25 | return new Team({ 26 | id: response._id, 27 | name: response.name, 28 | type: response.type, 29 | account: response.account, 30 | tags: response.tags, 31 | users: response.users.map(({ _id, userName }) => ({ id: _id, userName })), 32 | }); 33 | } 34 | } 35 | 36 | module.exports = Team; 37 | -------------------------------------------------------------------------------- /lib/logic/entities/Token.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Entity = require('./Entity'); 3 | 4 | class Token extends Entity { 5 | constructor(data) { 6 | super(); 7 | this.entityType = 'token'; 8 | this.info = data; 9 | this.defaultColumns = ['id', 'name', 'token_prefix', 'created', 'scopes']; 10 | this.wideColumns = ['id', 'name', 'token_prefix', 'created', 'subject_type', 'subject', 'scopes']; 11 | } 12 | 13 | static fromResponse(response) { 14 | const data = { ...response }; 15 | data.id = data._id; 16 | data.token_prefix = response.tokenPrefix; 17 | data.scopes = _.isArray(response.scopes) ? response.scopes : ['any']; 18 | data.created = data.created ? new Date(data.created) : undefined; 19 | data.subject_type = _.get(data, 'subject.type'); 20 | data.subject = _.get(data, 'subject.ref'); 21 | return new Token(data); 22 | } 23 | } 24 | 25 | module.exports = Token; 26 | -------------------------------------------------------------------------------- /lib/logic/entities/Trigger.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class Trigger extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'trigger'; 7 | this.info = data; 8 | this.defaultColumns = ['event', 'pipeline']; 9 | this.wideColumns = this.defaultColumns.concat([]); 10 | } 11 | 12 | static fromResponse(response) { 13 | return new Trigger({ 14 | event: response.event, 15 | pipeline: response.pipeline, 16 | filters: response.filters, 17 | }); 18 | } 19 | } 20 | 21 | module.exports = Trigger; 22 | -------------------------------------------------------------------------------- /lib/logic/entities/TriggerEvent.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class TriggerEvent extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'trigger-event'; 7 | this.info = data; 8 | this.defaultColumns = ['uri', 'type', 'kind', 'public', 'status']; 9 | this.wideColumns = this.defaultColumns.concat(['endpoint', 'description']); 10 | } 11 | 12 | static fromResponse(response) { 13 | return new TriggerEvent({ 14 | uri: response.uri, 15 | type: response.type, 16 | kind: response.kind, 17 | // [0]{12} - public account ID 18 | public: response.account === '000000000000', 19 | secret: response.secret, 20 | status: response.status, 21 | endpoint: response.endpoint, 22 | description: response.description, 23 | help: response.help, 24 | }); 25 | } 26 | } 27 | 28 | module.exports = TriggerEvent; 29 | -------------------------------------------------------------------------------- /lib/logic/entities/TriggerType.js: -------------------------------------------------------------------------------- 1 | const Entity = require('./Entity'); 2 | 3 | class TriggerType extends Entity { 4 | constructor(data) { 5 | super(); 6 | this.entityType = 'trigger-type'; 7 | this.info = data; 8 | this.defaultColumns = ['type', 'kind', 'uri-template']; 9 | this.wideColumns = this.defaultColumns.concat([]); 10 | } 11 | 12 | static fromResponse(response) { 13 | return new TriggerType({ 14 | type: response.type, 15 | kind: response.kind, 16 | 'uri-template': response['uri-template'], 17 | 'uri-regex': response['uri-regex'], 18 | 'help-url': response['help-url'], 19 | config: response.config, 20 | filters: response.filters, 21 | }); 22 | } 23 | } 24 | 25 | module.exports = TriggerType; 26 | -------------------------------------------------------------------------------- /lib/logic/index.js: -------------------------------------------------------------------------------- 1 | const sdk = require('./sdk'); 2 | 3 | module.exports = { 4 | sdk, 5 | }; 6 | -------------------------------------------------------------------------------- /lib/logic/sdk/index.js: -------------------------------------------------------------------------------- 1 | const { Codefresh } = require('codefresh-sdk'); 2 | 3 | const sdk = new Codefresh(); 4 | 5 | module.exports = sdk; 6 | -------------------------------------------------------------------------------- /lib/output/Formatter.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const Style = require('./Style'); 3 | 4 | class Formatter { 5 | constructor(styles) { 6 | this.styles = styles || {}; 7 | } 8 | 9 | apply(source) { 10 | const keys = _.keys(source); 11 | if (!keys || !_.keys(this.styles)) { 12 | return source; 13 | } 14 | const obj = Object.assign({}, source); 15 | keys.forEach((key) => { 16 | const prop = obj[key]; 17 | obj[key] = this.applyStyles(key, prop); 18 | }); 19 | return obj; 20 | } 21 | 22 | style(key, func) { 23 | if (typeof func === 'function') { 24 | this.styles[key] = func; 25 | } 26 | return this; 27 | } 28 | 29 | applyStyles(key, prop) { 30 | const style = this.styles[key] || _.identity; 31 | return style(prop); 32 | } 33 | 34 | static build() { 35 | return new Formatter(); 36 | } 37 | } 38 | 39 | module.exports = { 40 | Formatter, 41 | Style, 42 | }; 43 | -------------------------------------------------------------------------------- /lib/output/__mocks__/Output.js: -------------------------------------------------------------------------------- 1 | 2 | const Output = jest.genMockFromModule('../Output'); 3 | 4 | Output.printError = (e) => { 5 | throw e; 6 | }; 7 | 8 | module.exports = Output; 9 | -------------------------------------------------------------------------------- /lib/output/formatters/Annotations.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | 4 | const FORMATTER = Formatter.build() 5 | .style('key', Style.cyan); 6 | 7 | module.exports = FORMATTER; 8 | -------------------------------------------------------------------------------- /lib/output/formatters/Board.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | 4 | const FORMATTER = Formatter.build() 5 | .style('name', Style.cyan); 6 | 7 | module.exports = FORMATTER; 8 | -------------------------------------------------------------------------------- /lib/output/formatters/CodefreshRepo.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style} = require('../Formatter'); 2 | 3 | 4 | const FORMATTER = Formatter.build() 5 | .style('name_id', Style.cyan); 6 | 7 | module.exports = FORMATTER; 8 | -------------------------------------------------------------------------------- /lib/output/formatters/Composition.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | 4 | const FORMATTER = Formatter.build() 5 | .style('name', Style.cyan) 6 | .style('created', Style.datetime); 7 | 8 | module.exports = FORMATTER; 9 | -------------------------------------------------------------------------------- /lib/output/formatters/Environment.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | const CHECK_SIGN = '✓'; 4 | const CROSS_SIGN = '✗'; 5 | const PROGRESS_SIGN = '«'; 6 | 7 | 8 | const STATUS = { 9 | done: Style.green.appendedBy(CHECK_SIGN), 10 | inProgress: Style.yellow.appendedBy(PROGRESS_SIGN), 11 | terminating: Style.red.appendedBy(CROSS_SIGN), 12 | }; 13 | 14 | const FORMATTER = Formatter.build() 15 | .style('status', input => (STATUS[input] || Style).bold.uppercase(input)); 16 | 17 | module.exports = FORMATTER; 18 | -------------------------------------------------------------------------------- /lib/output/formatters/GitRepo.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style} = require('../Formatter'); 2 | 3 | 4 | const FORMATTER = Formatter.build() 5 | .style('repo_shortcut', Style.cyan); 6 | 7 | module.exports = FORMATTER; 8 | -------------------------------------------------------------------------------- /lib/output/formatters/HelmRepo.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | 4 | const FORMATTER = Formatter.build() 5 | .style('name', Style.cyan) 6 | .style('created', Style.dateDiff) 7 | .style('updated', Style.dateDiff); 8 | 9 | module.exports = FORMATTER; 10 | -------------------------------------------------------------------------------- /lib/output/formatters/Image.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | const TAG_OPTIIONS = { 4 | '': Style.gray, 5 | master: Style.magenta, 6 | }; 7 | 8 | const FORMATTER = Formatter.build() 9 | .style('tag', (input) => (TAG_OPTIIONS[input] || Style.cyan).bold(input)) 10 | .style('created', Style.dateDiff); 11 | 12 | module.exports = FORMATTER; 13 | -------------------------------------------------------------------------------- /lib/output/formatters/Pipeline.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style} = require('../Formatter'); 2 | 3 | const FORMATTER = Formatter.build() 4 | .style('name', Style.cyan) 5 | .style('created', Style.dateDiff) 6 | .style('updated', Style.dateDiff); 7 | 8 | module.exports = FORMATTER; 9 | -------------------------------------------------------------------------------- /lib/output/formatters/Project.formatter.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const { Formatter, Style } = require('../Formatter'); 3 | 4 | 5 | const FORMATTER = Formatter.build() 6 | .style('name', Style.cyan) 7 | .style('tags', tags => _.join(tags, ' ')) 8 | .style('last_updated', Style.date); 9 | 10 | module.exports = FORMATTER; 11 | -------------------------------------------------------------------------------- /lib/output/formatters/Registry.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | const FORMATTER = Formatter.build() 4 | .style('name', Style.cyan); 5 | 6 | 7 | module.exports = FORMATTER; 8 | -------------------------------------------------------------------------------- /lib/output/formatters/Section.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | 4 | const FORMATTER = Formatter.build() 5 | .style('name', Style.cyan) 6 | .style('cluster', Style.cyan); 7 | 8 | module.exports = FORMATTER; 9 | -------------------------------------------------------------------------------- /lib/output/formatters/StepType.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | const FORMATTER = Formatter.build() 4 | .style('name', Style.cyan) 5 | .style('created', Style.dateDiff) 6 | .style('updated', Style.dateDiff); 7 | 8 | module.exports = FORMATTER; 9 | -------------------------------------------------------------------------------- /lib/output/formatters/Team.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style} = require('../Formatter'); 2 | 3 | 4 | const TEAM_TYPE = { 5 | default: Style.green, 6 | admin: Style.magenta, 7 | }; 8 | 9 | const FORMATTER = Formatter.build() 10 | .style('type', input => TEAM_TYPE[input] ? TEAM_TYPE[input](input) : input) 11 | .style('name', Style.cyan); 12 | 13 | module.exports = FORMATTER; 14 | -------------------------------------------------------------------------------- /lib/output/formatters/Token.formatter.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const { Formatter, Style } = require('../Formatter'); 3 | 4 | 5 | const FORMATTER = Formatter.build() 6 | .style('token_prefix', val => `${val}**************`) 7 | .style('created', Style.date) 8 | .style('scopes', data => (_.isArray(data) && data.join('\n')) || data) 9 | .style('name', Style.cyan); 10 | 11 | module.exports = FORMATTER; 12 | -------------------------------------------------------------------------------- /lib/output/formatters/TriggerEvent.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | const TYPE = { 4 | registry: Style.cyan.bold, 5 | cron: Style.magenta.bold, 6 | helm: Style.blue.bold, 7 | }; 8 | 9 | const FORMATTER = Formatter.build() 10 | .style('type', input => TYPE[input] ? TYPE[input](input) : input); 11 | 12 | module.exports = FORMATTER; 13 | -------------------------------------------------------------------------------- /lib/output/formatters/TriggerType.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | const TYPE = { 4 | registry: Style.cyan.bold, 5 | cron: Style.magenta.bold, 6 | helm: Style.blue.bold, 7 | }; 8 | 9 | const FORMATTER = Formatter.build() 10 | .style('type', input => TYPE[input] ? TYPE[input](input) : input); 11 | 12 | module.exports = FORMATTER; 13 | -------------------------------------------------------------------------------- /lib/output/formatters/Workflow.formatter.js: -------------------------------------------------------------------------------- 1 | const { Formatter, Style } = require('../Formatter'); 2 | 3 | const CHECK_SIGN = '✓'; 4 | const CROSS_SIGN = '✗'; 5 | const PLAY_SIGN = '▸'; 6 | const TWO_ARR_DOWN_SIGN = '⇊'; 7 | const CIRCLE_SIGN = '◉'; 8 | const BRACKET_SIGN = '«'; 9 | 10 | const STATUS_CHOICES = { 11 | success: Style.green.appendedBy(CHECK_SIGN), 12 | error: Style.red.appendedBy(CROSS_SIGN), 13 | terminated: Style.red.appendedBy(CROSS_SIGN), 14 | pending: Style.yellow.appendedBy(CIRCLE_SIGN), 15 | 'pending-approval': Style.yellow.appendedBy(CIRCLE_SIGN), 16 | elected: Style.yellow.appendedBy(BRACKET_SIGN), 17 | running: Style.cyan.appendedBy(PLAY_SIGN), 18 | terminating: Style.red.appendedBy(TWO_ARR_DOWN_SIGN), 19 | }; 20 | 21 | const FORMATTER = Formatter.build() 22 | .style('status', input => (STATUS_CHOICES[input] || Style).bold.uppercase(input)) 23 | .style('created', Style.datetime) 24 | .style('started', Style.datetime) 25 | .style('finished', Style.datetime); 26 | 27 | 28 | module.exports = FORMATTER; 29 | -------------------------------------------------------------------------------- /lib/output/types/id.output.js: -------------------------------------------------------------------------------- 1 | const CFError = require('cf-errors'); // eslint-disable-line 2 | const Entity = require('../../logic/entities/Entity'); 3 | const _ = require('lodash'); 4 | 5 | 6 | function output(data) { 7 | const entities = _.isArray(data) ? data : [data]; 8 | return entities.map((entity) => { 9 | if (!(entity instanceof Entity)) { 10 | throw new CFError('Cannot extract data for "id" output -- data contains not Entity'); 11 | } 12 | return entity.toId(); 13 | }).join('\n\r'); 14 | } 15 | 16 | module.exports = output; 17 | -------------------------------------------------------------------------------- /lib/output/types/json.output.js: -------------------------------------------------------------------------------- 1 | const CFError = require('cf-errors'); // eslint-disable-line 2 | const Entity = require('../../logic/entities/Entity'); 3 | const _ = require('lodash'); 4 | 5 | 6 | function output(data) { 7 | const entities = _.isArray(data) ? data : [data]; 8 | const jsonArray = []; 9 | _.forEach(entities, (entity) => { 10 | if (!(entity instanceof Entity)) { 11 | throw new CFError('Cannot extract data for "json" output -- data contains not Entity'); 12 | } 13 | jsonArray.push(entity.info); 14 | }); 15 | 16 | if (jsonArray.length === 1) { 17 | return JSON.stringify(jsonArray[0], null, '\t'); 18 | } 19 | return JSON.stringify(jsonArray, null, '\t'); 20 | } 21 | 22 | module.exports = output; 23 | -------------------------------------------------------------------------------- /lib/output/types/name.output.js: -------------------------------------------------------------------------------- 1 | const CFError = require('cf-errors'); // eslint-disable-line 2 | const Entity = require('../../logic/entities/Entity'); 3 | const _ = require('lodash'); 4 | 5 | 6 | function output(data) { 7 | const entities = _.isArray(data) ? data : [data]; 8 | return entities.map((entity) => { 9 | if (!(entity instanceof Entity)) { 10 | throw new CFError('Cannot extract data for "name" output -- data contains not Entity'); 11 | } 12 | return entity.toName(); 13 | }).join('\n\r'); 14 | } 15 | 16 | module.exports = output; 17 | -------------------------------------------------------------------------------- /lib/output/types/yaml.output.js: -------------------------------------------------------------------------------- 1 | const CFError = require('cf-errors'); // eslint-disable-line 2 | const Entity = require('../../logic/entities/Entity'); 3 | const yaml = require('js-yaml'); 4 | const _ = require('lodash'); 5 | 6 | 7 | function _isAbsent(value) { 8 | return !value && value !== false; 9 | } 10 | 11 | function output(data) { 12 | const entities = _.isArray(data) ? data : [data]; 13 | const yamlArray = { 14 | items: [], 15 | }; 16 | _.forEach(entities, (entity) => { 17 | if (!(entity instanceof Entity)) { 18 | throw new CFError('Cannot extract data for "yaml" output -- data contains not Entity'); 19 | } 20 | const info = _.mapValues(entity.info, value => _isAbsent(value) ? null : value); 21 | yamlArray.items.push(info); 22 | }); 23 | 24 | if (yamlArray.items.length === 1) { 25 | return yaml.safeDump(yamlArray.items[0]); 26 | } 27 | return yaml.safeDump(yamlArray); 28 | } 29 | 30 | module.exports = output; 31 | -------------------------------------------------------------------------------- /run-check-version.js: -------------------------------------------------------------------------------- 1 | const { checkVersion } = require('./check-version'); 2 | 3 | checkVersion(); 4 | --------------------------------------------------------------------------------