Skip to main content

Cross Package Manager

Project description

https://travis-ci.org/devopshq/crosspm.svg?branch=master https://readthedocs.org/projects/crosspm/badge/?version=latest https://img.shields.io/pypi/v/crosspm.svg https://img.shields.io/pypi/l/crosspm.svg

Introduction

CrossPM (Cross Package Manager) is a universal extensible package manager. It lets you download and as a next step - manage packages of different types from different repositories.

Out-of-the-box modules:

  • Adapters

    • Artifactory

  • Package file formats

    • zip

    • tar.gz

    • nupkg (treats like simple zip archive for now)

Modules planned to implement:

  • Adapters

    • filesystem

    • git

    • smb

    • sftp/ftp

  • Package file formats

    • nupkg (nupkg dependencies support)

    • 7z

We also need your feedback to let us know which repositories and package formats do you need, so we could plan its implementation.

The biggest feature of CrossPM is flexibility. It is fully customizable, i.e. repository structure, package formats, packages version templates, etc.

To handle all the power it have, you need to write configuration file (crosspm.yaml) and manifest file with the list of packages you need to download.

Configuration file format is YAML, as you could see from its filename, so you free to use yaml hints and tricks, as long, as main configuration parameters remains on their levels :)

Documentation

We just started to write documentation for this project, but we’ll try to cover all usage topics ASAP.

Here is direct link to it: https://crosspm.readthedocs.io

Installation

To install CrossPM, simply:

pip install crosspm

Usage

To see commandline parameters help, run:

crosspm --help

You’ll see something like this:

CrossPM (Cross Package Manager) version: *** The MIT License (MIT)

Usage:
    crosspm download [options]
    crosspm promote [options]
    crosspm pack <OUT> <SOURCE> [options]
    crosspm -h | --help
    crosspm --version

Options:
    <OUT>                          Output file.
    <SOURCE>                       Source directory path.
    -h, --help                     Show this screen.
    --version                      Show version.
    -l, --list                     Do not load packages and its dependencies. Just show what's found.
    -v, --verbose                  Increase output verbosity.
    --verbosity=LEVEL              Set output verbosity level: (critical, error, warning, info, debug) [default: 30].
    -c=FILE, --config=FILE         Path to configuration file.
    -o OPTIONS, --options OPTIONS  Extra options.
    --depslock-path=FILE           Path to file with locked dependencies [./dependencies.txt.lock]
    --out-format=TYPE              Output data format. Available formats:(['shell', 'python', 'json', 'stdout', 'cmd']) [default: stdout]
    --output=FILE                  Output file name (required if --out_format is not stdout)
    --out-prefix=PREFIX            Prefix for output variable name [default: ] (no prefix at all)
    --no-fails                     Ignore fails config if possible.

Examples

We’ll add some more examples soon. Here is one of configuration file examples for now:

crosspm.yaml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
cpm:
  dependencies: dependencies.txt
  dependencies-lock: dependencies.txt.lock
  cache:
    cmdline: cache
    env: CROSSPM_CACHE_ROOT
    default:

columns: "*package, version, branch"

values:
  quality:
    1: banned
    2: snapshot
    3: integration
    4: stable
    5: release

options:
  compiler:
    cmdline: cl
    env: CROSSPM_COMPILER
    default: vc110

  arch:
    cmdline: arch
    env: CROSSPM_ARCH
    default: x86

  osname:
    cmdline: os
    env: CROSSPM_OS
    default: win

parsers:
  common:
    columns:
      version: "{int}.{int}.{int}[.{int}][-{str}]"
    sort:
      - version
      - '*'
    index: -1

  artifactory:
    path: "{server}/{repo}/{package}/{branch}/{version}/{compiler|any}/{arch|any}/{osname}/{package}.{version}[.zip|.tar.gz|.nupkg]"
    properties: "some.org.quality = {quality}"

defaults:
  branch: master
  quality: stable

fails:
  unique:
    - package
    - version

common:
  server: https://repo.some.org/artifactory
  parser: artifactory
  type: jfrog-artifactory
  auth_type: simple
  auth:
    - username
    - password

sources:
  - repo:
      - libs-release.snapshot
      - libs-release/extlibs

  - type: jfrog-artifactory
    parser: artifactory
    server: https://repo.some.org/artifactory
    repo: project.snapshot/temp-packages
    auth_type: simple
    auth:
      - username2
      - password2

output:
  tree:
    - package: 25
    - version: 0

Config file description:

Let’s keep in mind that any value we use in path, properties and columns description, called column in CrossPM.

cpm

Main configuration such as manifest file name and cache path.

dependencies

Manifest file name (not path - just filename)

dependencies-lock

Manifest with locked dependencies (without masks and conditions) file name (not path - just filename)

cache

Path for CrossPM temporary files, downloaded package archives and unpacked packages.

columns

Manifest file columns definition. Asterisk here points to name column (column of manifest file with package name). CrossPM uses it for building list with unique packages (i.e. by package name)

values

Lists or dicts of available values for some columns (if we need it).

options

Here we can define commandline options and environment variable names from which we will get some of columns values. We can define default values for those columns here too.

parsers

Rules for parsing columns, paths, properties, etc.

columns

sort

index

path

properties

defaults

Default values for columns not defined in options.

fails

Here we can define some rules for failing CrossPM jobs.

unique

common

Common parameters for all or several of sources.

sources

Sources definition. Here we define parameters for repositories access.

type

parser

server

repo

auth_type

auth

output

Report output format definition.

tree

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crosspm-1.0.1.dev125.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crosspm-1.0.1.dev125-py3-none-any.whl (28.0 kB view details)

Uploaded Python 3

File details

Details for the file crosspm-1.0.1.dev125.tar.gz.

File metadata

File hashes

Hashes for crosspm-1.0.1.dev125.tar.gz
Algorithm Hash digest
SHA256 aa6fa54872a7dc07bce1b7d32f0f9b471f2d7719a8adc4f888d202b27ff42f91
MD5 d14e292af42f08667179ebe618844c5f
BLAKE2b-256 04f6809c788280c2799d5b2f16c519d42209d05d113da8af857abe58040c895d

See more details on using hashes here.

File details

Details for the file crosspm-1.0.1.dev125-py3-none-any.whl.

File metadata

File hashes

Hashes for crosspm-1.0.1.dev125-py3-none-any.whl
Algorithm Hash digest
SHA256 729909f33882795b0f5d4825dd53facb0017977034d0d92a60073060389dc0da
MD5 be0aec77348da90068905b485fff2623
BLAKE2b-256 7b7cd73994c6d649ef22a120dd52d70519fb16a4d5592900d405e7905a3cf606

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page