• Stars
    star
    130
  • Rank 277,575 (Top 6 %)
  • Language
    Clojure
  • License
    MIT License
  • Created about 7 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Flower is a Clojure (and Emacs) library for integration with Github, Gitlab, Atlassian Jira, Microsoft TFS, Microsoft Exchange and Slack. It also may be used from Java. More integrations with task trackers, repositories and messaging systems coming soon!

Flower

Clojars MELPA Travis Dependencies Status

Handles all your issue tracking tools and version control systems for you!

Flower logo

The Flower library is a set of common protocols for repositories, task trackers, and messaging systems that includes integrations with the most common ones like Jira, TFS, GitLab, GitHub, and Exchange. It may be useful for creating external automation scenarios.

Initially, it was designed to handle all routine operations of the PT Application Firewall development team:

  • Merge opened interlinked pull requests in different GitLab repositories or servers, once MRs are marked with 'LGTM', and then close issues in TFS.
  • Notify about team members' birthdays.
  • Create email requests to the company’s IT Helpdesk in order to give access rights to new team members.
  • Search for current 'In Progress' issues from the CLI.
  • And much more.

If you need separate Python libraries with similar functionality, you may visit DevOpsHQ.

Installation

To install, add the following to your project :dependencies:

[flower "0.4.7"]

Or use the Leiningen template to build a new application from scratch:

lein new flower my-flower-application

To install Flower as Emacs package, set up MELPA and then do the following:

M-x package-install [RET] flower [RET]

Usage

This library supports multiple integrations with various systems related to development flow.

So the best way to showcase its potential is to demonstrate how it handles each of them by example. We will keep adding to the existing examples upon introducing new functionality.

However, there is a certain caveat you should be aware of before we go any further. Any function in the library may be considered pure (except ones having exclamation marks) only on the top level. Underlying code implicitly uses cache that may be explicitly cleared by a user after each query if so needed. To do it, the user needs to rebind flower.common/*behavior-implicit-cache* variable using flower.macros/without-implicit-cache macro or call (function-name-clear-cache!) where function-name is a function defined with the flower.macros/public-definition macro.

For the impatient

(require 'flower.tracker.core)

;; Print all opened tasks in our task tracker
(let [url "https://github.com/PositiveTechnologies/flower"]
  (doall (map (comp (partial apply println)
                    (juxt :task-type :task-id :task-title))
              (.get-tasks (flower.tracker.core/get-tracker url))))
  nil)

For Emacs users

(require 'flower)

;; Each element of `flower-tracker-queries` vector has the following format:
;; * Tracker URL or nil if only query changed
;; * Use tracker without auth if nil or with default auth otherwise - see Flower auth
;; * Tracker query or nil for default query if applicable
(setq flower-tracker-queries [("https://github.com/PositiveTechnologies/flower" nil nil)
                              ("https://github.com/melpa/melpa" nil nil)])

(add-hook 'org-mode 'flower-mode)

(global-set-key (kbd "C-c f f") 'flower-list-tasks)
(global-set-key (kbd "C-c f t") 'flower-show-task-info)

Activate Flower with:

  • C-c f f to view or update the task list for the current query.
  • C-c f t to view information on a specific task.

For the patient

  1. Task trackers
  2. Authentication
  3. Repositories
  4. Messaging

Videos and articles

  1. Article: Xakep - Useful Functional Approach. Grabbing Mail, Task Trackers and Repositories with Clojure (in Russian)
  2. Video: Team Leader Meetup - Software Development Automation Panel Discussion (in Russian)
  3. Video: Software Development Management Automation using Clojure (in Russian)

Cookbook

Check out Flower recipes in the Cookbook:

  1. Emacs
  2. Scenarios
  3. More to be done...

License

Copyright Β© 2017-2020 JSC Positive Technologies. All rights reserved.

Distributed under the MIT License. See LICENSE.

All the libraries and systems are licensed and remain the property of their respective owners.

More Repositories

1

ghidra_nodejs

GHIDRA plugin to parse, disassemble and decompile NodeJS Bytenode (JSC) binaries
Java
294
star
2

seq2seq-web-attack-detection

The implementation of the Seq2Seq model for web attack detection. The Seq2Seq model is usually used in Neural Machine Translation. The main goal of this project is to demonstrate the relevance of the NLP approach for web security.
Jupyter Notebook
151
star
3

PT.PM

β–ͺ️ An engine for searching patterns in the source code, based on Unified AST or UST. At present time C#, Java, PHP, PL/SQL, T-SQL, MySql, and JavaScript are supported. Patterns can be described within the code or using a DSL.
C#
59
star
4

PT.Doc

πŸ“– Positive Technologies public docs (English & Russian)
TeX
49
star
5

libfpta

Ultra fast, compact, Embedded Database for tabular and semistructured data.
C++
35
star
6

t1ha

Fast Positive Hash - just the fastest portable hash function.
C
34
star
7

libfptu

One of the fastest binary format for JSON-like data.
C++
13
star
8

AspxParser

Aspx files (aspx, ascx, etc.) parser.
C#
9
star
9

shockfish

Python
8
star
10

PT.Config

Utility for checking security of web applications and web servers configuration.
Python
8
star
11

SocksFusion

PTBBS forwarding agent
Haskell
8
star
12

FP-community-rules

7
star
13

PT.SourceStats

Utility for statistics collection for different projects. C#, Java and PHP supported for now.
C#
7
star
14

DOMSanitizer

JavaScript
6
star
15

DebugExamples

A bunch of C# projects to illustrate debugging with SOS and SosEx
C#
6
star
16

DOMParanoid

JavaScript
5
star
17

ptaiPlugins

Java
4
star
18

mantaray

A training asbtract interpretation engine for a subset of the C programming language
Python
3
star
19

shockfish.js

JavaScript
2
star
20

angine

Python
1
star
21

ptaf-scripts

Some scripts that may be used in PT AF usage or integration process.
1
star
22

keyutil

C
1
star