All Projects → skbkontur → Cement

skbkontur / Cement

Licence: mit
C# dependency management tool

Programming Languages

csharp
926 projects

Projects that are alternatives of or similar to Cement

Poet
Poet helps you declare, manage and install dependencies of Python projects, ensuring you have the right stack everywhere.
Stars: ✭ 312 (+593.33%)
Mutual labels:  dependency-manager
Patch Package
Fix broken node modules instantly 🏃🏽‍♀️💨
Stars: ✭ 6,062 (+13371.11%)
Mutual labels:  dependency-manager
Composer
Dependency Manager for PHP
Stars: ✭ 25,994 (+57664.44%)
Mutual labels:  dependency-manager
Athens
A Go module datastore and proxy
Stars: ✭ 3,736 (+8202.22%)
Mutual labels:  dependency-manager
Pip Update Requirements
Update the packages in a requirements.txt file.
Stars: ✭ 462 (+926.67%)
Mutual labels:  dependency-manager
Bundler
Manage your Ruby application's gem dependencies
Stars: ✭ 4,846 (+10668.89%)
Mutual labels:  dependency-manager
git-explode
Explode linear sequence of git commits into topic branches
Stars: ✭ 43 (-4.44%)
Mutual labels:  dependency-manager
Kodein Mvvm
Example app using Kodein for dependency injection with MVVM and Architecture Components
Stars: ✭ 26 (-42.22%)
Mutual labels:  dependency-manager
Bowerphp
A PHP implementation of bower 🐦
Stars: ✭ 479 (+964.44%)
Mutual labels:  dependency-manager
Projeny
A project and package manager for Unity
Stars: ✭ 656 (+1357.78%)
Mutual labels:  dependency-manager
Cget
C++ package retrieval
Stars: ✭ 370 (+722.22%)
Mutual labels:  dependency-manager
Fury
A new build tool for JVM languages
Stars: ✭ 384 (+753.33%)
Mutual labels:  dependency-manager
Cpm.cmake
📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.
Stars: ✭ 560 (+1144.44%)
Mutual labels:  dependency-manager
Cocoaseeds
Git Submodule Alternative for Cocoa.
Stars: ✭ 340 (+655.56%)
Mutual labels:  dependency-manager
Gvm
Go Version Manager
Stars: ✭ 6,849 (+15120%)
Mutual labels:  dependency-manager
G
Simple go version manager, gluten-free
Stars: ✭ 307 (+582.22%)
Mutual labels:  dependency-manager
Renovate
Universal dependency update tool that fits into your workflows.
Stars: ✭ 6,700 (+14788.89%)
Mutual labels:  dependency-manager
Peru
a generic package manager, for including other people's code in your projects
Stars: ✭ 913 (+1928.89%)
Mutual labels:  dependency-manager
Awesome Composer
😎 A curated awesome list for Composer, Packagist, Satis, Plugins, Scripts, Composer related resources, tutorials.
Stars: ✭ 738 (+1540%)
Mutual labels:  dependency-manager
Rome
Makes it easy to build a list of frameworks.
Stars: ✭ 651 (+1346.67%)
Mutual labels:  dependency-manager

Cement Build status

  • Dependency management tool, mainly for C# projects
  • Allow getting and building your projects with dependencies
  • Every project is a git repository
  • Every project is a solution or a content module

Get started

Install

Windows

  1. You should have git and Visual Studio or MSBuild Tools installed
  2. Download zip from https://github.com/skbkontur/cement/releases/latest
  3. Unzip and run dotnet\install.cmd
  4. Restart terminal
  5. Command cm shows you available commands in any directory
  6. If you have installed Visual Studio 2017 in custom folder run set VS150COMNTOOLS=D:\Program Files\Microsoft Visual Studio\2017\Professional\Common7\Tools\ (with your custom foler path) in cmd.

macOS

  1. You should have git and mono (5 or above) installed
  2. Download zip from https://github.com/skbkontur/cement/releases/latest
  3. Unzip and run ./install.sh from the dotnet directory
  4. Either add ~/bin/ to your PATH variable or run alias cm='mono ~/bin/dotnet/cm.exe'
  5. Run cm to see the list of commands

Linux

Here is a Dockerfile example of how to get Ubuntu image with cement installed

FROM ubuntu
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
RUN echo "deb http://download.mono-project.com/repo/ubuntu xenial main" | tee /etc/apt/sources.list.d/mono-official.list
RUN apt-get update
RUN apt-get install -y mono-devel git wget
RUN cd ~
RUN git clone https://github.com/skbkontur/cement.git ~/cement
RUN wget -O ~/cement/nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
RUN mkdir ~/bin
RUN cd ~/cement && mono nuget.exe restore -OutputDir packages/ && msbuild /p:Configuration=Release
RUN mono ~/bin/dotnet/cm.exe reinstall

Work with cement

Use cm help to view all cement commands. Use cm %command_name% /? or cm help %command_name% to view command description.

All module descriptions are stored in a special git repo.

In the beginning your cement will use sample modules from https://github.com/KungA/cement-sample-modules/blob/master/modules

Command cm ls shows modules A, B, C, D.

Get modules

Let some commands run to get and build module A, which uses modules B, C, D.

cm init

All modules should be downloaded into one 'cement tracked' directory.

cm get A

Download module A with deps B, C, D.

cd A

Go to module directory.

cm build-deps

Build dependencies for current module in the right order.

cm build

Build current module. You can use it now.

Update dependencies

cm update-deps

Get latest versions of dependencies from git

cm build-deps

Need to build new version of modules, which were changed.

cm build

And current module.

Feature flags

Feature flags may be edit in config file '%USERPROFILE%/bin/dotnet/featureFlags.json'

Clean before build

Deleting all local changes before build in commands 'build' and 'build-deps' if project's TargetFramework is 'netstandardXX'

Default: false

Creating modules

  1. Specify git repo witch will contain all module descriptions like https://github.com/KungA/cement-sample-modules

  2. Add empty modules file to it and push

  3. Fill it into %userprofile%\.cement\settings file instead of [email protected]:KungA/cement-sample-modules.git

  4. Create repositories for your modules like

    https://github.com/KungA/cement-sample-A

    https://github.com/KungA/cement-sample-B

    https://github.com/KungA/cement-sample-C

    https://github.com/KungA/cement-sample-D

  5. Run cm module add A [email protected]:KungA/cement-sample-A.git to add your modules to cement

  6. Fill module.yaml file, describing cement modules (see appropriate documentation)

All commands description

here

Module.yaml format

here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].