2
0

Reorganize core source and add Docker support to CLI.

This commit is contained in:
Maarten Billemont 2018-06-05 20:01:46 -04:00
parent 8e41cba7ac
commit c2aafd8602
215 changed files with 65 additions and 47 deletions

2
.gitmodules vendored
View File

@ -17,7 +17,7 @@
path = platform-darwin/External/jrswizzle path = platform-darwin/External/jrswizzle
url = git://github.com/jonmarimba/jrswizzle.git url = git://github.com/jonmarimba/jrswizzle.git
[submodule "MasterPassword/Web/js/mpw-js"] [submodule "MasterPassword/Web/js/mpw-js"]
path = platform-independent/web-js/js/mpw-js path = platform-independent/web/js/mpw-js
url = https://github.com/tmthrgd/mpw-js.git url = https://github.com/tmthrgd/mpw-js.git
[submodule "lib/libsodium"] [submodule "lib/libsodium"]
path = lib/libsodium path = lib/libsodium

View File

@ -1 +0,0 @@
../../../../../mpw_tests.xml

View File

@ -7,16 +7,16 @@ try {
} }
include 'masterpassword-core' include 'masterpassword-core'
project(':masterpassword-core').projectDir = new File( '../core/c' ) project(':masterpassword-core').projectDir = new File( '../platform-independent/c/core' )
include 'masterpassword-algorithm' include 'masterpassword-algorithm'
project(':masterpassword-algorithm').projectDir = new File( '../core/java/algorithm' ) project(':masterpassword-algorithm').projectDir = new File( '../platform-independent/java/core' )
include 'masterpassword-model' include 'masterpassword-model'
project(':masterpassword-model').projectDir = new File( '../core/java/model' ) project(':masterpassword-model').projectDir = new File( '../platform-independent/java/model' )
include 'masterpassword-tests' include 'masterpassword-tests'
project(':masterpassword-tests').projectDir = new File( '../core/java/tests' ) project(':masterpassword-tests').projectDir = new File( '../platform-independent/java/tests' )
include 'masterpassword-gui' include 'masterpassword-gui'
project(':masterpassword-gui').projectDir = new File( '../platform-independent/gui-java' ) project(':masterpassword-gui').projectDir = new File( '../platform-independent/gui-java' )

View File

@ -1,9 +1,13 @@
# Native CLI # Native CLI
This is a command-line terminal interface to the Master Password standard implementation. The CLI is a command-line terminal interface to the Master Password standard implementation.
To use the app, you'll first need to build it, then install it into your system's PATH. To use the app, you'll first need to build it, then install it into your system's PATH.
Start by changing into the CLI application directory:
cd cli
## Building ## Building
@ -15,6 +19,13 @@ Note that the build depends on your system having certain dependencies already i
By default, you'll need to have at least `libsodium`, `libjson-c` and `libncurses` installed. By default, you'll need to have at least `libsodium`, `libjson-c` and `libncurses` installed.
## Building with docker
To install mpw into a Docker container, make sure you have Docker installed on your system, then run something like:
docker build -f cli/Dockerfile .
## Building with cmake ## Building with cmake
There is also a cmake configuration you can use to build instead of using the `./build` script. While `./build` depends on Bash and is geared toward POSIX systems, cmake is platform-independent. You should use your platform's cmake tools to continue. On POSIX systems, you can do this: There is also a cmake configuration you can use to build instead of using the `./build` script. While `./build` depends on Bash and is geared toward POSIX systems, cmake is platform-independent. You should use your platform's cmake tools to continue. On POSIX systems, you can do this:

View File

@ -123,9 +123,11 @@ endfunction()
### TARGET: MPW ### TARGET: MPW
if( BUILD_MPW ) if( BUILD_MPW )
# target # target
add_executable( mpw "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" "core/mpw-marshal-util.c" "core/mpw-marshal.c" add_executable( mpw "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c"
"cli/mpw-cli-util.c" "cli/mpw-cli.c" ) "../core/src/mpw-marshal-util.c" "../core/src/mpw-marshal.c"
target_include_directories( mpw PUBLIC core cli ) "src/mpw-cli-util.c" "src/mpw-cli.c" )
target_include_directories( mpw PUBLIC ../core/src src )
install( TARGETS mpw RUNTIME DESTINATION bin )
# dependencies # dependencies
use_mpw_sodium( mpw required ) use_mpw_sodium( mpw required )
@ -137,23 +139,25 @@ endif()
### TARGET: MPW-BENCH ### TARGET: MPW-BENCH
if( BUILD_MPW_BENCH ) if( BUILD_MPW_BENCH )
# target # target
add_executable( mpw_bench "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" add_executable( mpw-bench "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c"
"cli/mpw-bench.c" ) "src/mpw-bench.c" )
target_include_directories( mpw_bench PUBLIC core cli ) target_include_directories( mpw-bench PUBLIC ../core/src src )
install( TARGETS mpw-bench RUNTIME DESTINATION bin )
# dependencies # dependencies
use_mpw_sodium( mpw_bench required ) use_mpw_sodium( mpw-bench required )
endif() endif()
### TARGET: MPW-TESTS ### TARGET: MPW-TESTS
if( BUILD_MPW_TESTS ) if( BUILD_MPW_TESTS )
# target # target
add_executable( mpw_tests "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" add_executable( mpw-tests "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c"
"cli/mpw-tests-util.c" "cli/mpw-tests.c" ) "src/mpw-tests-util.c" "src/mpw-tests.c" )
target_include_directories( mpw_tests PUBLIC core cli ) target_include_directories( mpw-tests PUBLIC ../core/src src )
install( TARGETS mpw-tests RUNTIME DESTINATION bin )
# dependencies # dependencies
use_mpw_sodium( mpw_tests required ) use_mpw_sodium( mpw-tests required )
use_mpw_xml( mpw_tests required ) use_mpw_xml( mpw-tests required )
endif() endif()

View File

@ -0,0 +1,9 @@
FROM ubuntu
WORKDIR /mpw/cli
ADD . /mpw
RUN apt-get update && apt -y install cmake libsodium-dev libjson-c-dev libncurses-dev libxml2-dev
RUN cmake -DBUILD_MPW_TESTS=ON . && make install
RUN mpw-tests
CMD mpw

View File

@ -63,18 +63,18 @@ mpw() {
cflags=( cflags=(
"${cflags[@]}" "${cflags[@]}"
# library paths
-I"lib/include"
# mpw paths # mpw paths
-I"core" -I"cli" -I"../core/src" -I"src"
) )
ldflags=( ldflags=(
"${ldflags[@]}" "${ldflags[@]}"
) )
# build # build
cc "${cflags[@]}" "$@" "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" "core/mpw-marshal-util.c" "core/mpw-marshal.c" "cli/mpw-cli-util.c" \ cc "${cflags[@]}" "$@" \
"${ldflags[@]}" "cli/mpw-cli.c" -o "mpw" "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c" \
"../core/src/mpw-marshal-util.c" "../core/src/mpw-marshal.c" "src/mpw-cli-util.c" \
"${ldflags[@]}" "src/mpw-cli.c" -o "mpw"
echo "done! You can now run ./mpw-cli-tests, ./install or use ./$_" echo "done! You can now run ./mpw-cli-tests, ./install or use ./$_"
} }
@ -88,18 +88,17 @@ mpw-bench() {
cflags=( cflags=(
"${cflags[@]}" "${cflags[@]}"
# library paths
-I"lib/include"
# mpw paths # mpw paths
-I"core" -I"cli" -I"../core/src" -I"src"
) )
ldflags=( ldflags=(
"${ldflags[@]}" "${ldflags[@]}"
) )
# build # build
cc "${cflags[@]}" "$@" "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" \ cc "${cflags[@]}" "$@" \
"${ldflags[@]}" "cli/mpw-bench.c" -o "mpw-bench" "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c" \
"${ldflags[@]}" "src/mpw-bench.c" -o "mpw-bench"
echo "done! You can now use ./$_" echo "done! You can now use ./$_"
} }
@ -114,18 +113,17 @@ mpw-tests() {
cflags=( cflags=(
"${cflags[@]}" "${cflags[@]}"
# library paths
-I"lib/include"
# mpw paths # mpw paths
-I"core" -I"cli" -I"../core/src" -I"src"
) )
ldflags=( ldflags=(
"${ldflags[@]}" "${ldflags[@]}"
) )
# build # build
cc "${cflags[@]}" "$@" "core/base64.c" "core/aes.c" "core/mpw-algorithm.c" "core/mpw-types.c" "core/mpw-util.c" "cli/mpw-tests-util.c" \ cc "${cflags[@]}" "$@" \
"${ldflags[@]}" "cli/mpw-tests.c" -o "mpw-tests" "../core/src/base64.c" "../core/src/aes.c" "../core/src/mpw-algorithm.c" "../core/src/mpw-types.c" "../core/src/mpw-util.c" "src/mpw-tests-util.c" \
"${ldflags[@]}" "src/mpw-tests.c" -o "mpw-tests"
echo "done! You can now use ./$_" echo "done! You can now use ./$_"
} }

View File

@ -0,0 +1,7 @@
#!/usr/bin/env bash
#
# Clean all generated build files.
set -e
cd "${BASH_SOURCE%/*}"
rm -vfr mpw mpw-bench mpw-tests

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
cd "${BASH_SOURCE%/*}" cd "${BASH_SOURCE%/*}/.."
tag=$(git describe --exact-match --match '*-cli*') || { echo >&2 "Tree is not at a release tag."; exit 1; } tag=$(git describe --exact-match --match '*-cli*') || { echo >&2 "Tree is not at a release tag."; exit 1; }
version=$(git describe --match '*-cli*' --long --dirty --broken) version=$(git describe --match '*-cli*' --long --dirty --broken)
[[ $version != *-dirty ]] || { echo >&2 "Tree is dirty, first commit any changes."; exit 1; } [[ $version != *-dirty ]] || { echo >&2 "Tree is dirty, first commit any changes."; exit 1; }
@ -11,7 +11,7 @@ mpwArchive=mpw-$version.tar.gz
read -n1 -p "Will prepare and release $mpwArchive. Press a key to continue or ^C to abort." read -n1 -p "Will prepare and release $mpwArchive. Press a key to continue or ^C to abort."
echo "Cleaning .." echo "Cleaning .."
( git clean -ffdx . && cd core && git clean -ffdx . ) git clean -ffdx .
echo "Creating archive $mpwArchive .." echo "Creating archive $mpwArchive .."
echo "$version" > VERSION echo "$version" > VERSION

View File

@ -1,8 +0,0 @@
#!/usr/bin/env bash
#
# Clean all generated build files.
set -e
cd "${BASH_SOURCE%/*}"
rm -vfr lib/*/{.unpacked,.patched,src} lib/include
rm -vfr {core,cli,.}/{*.o,*.dSYM} mpw mpw-bench mpw-tests

View File

@ -1 +0,0 @@
../../core/c/src

View File

@ -1 +0,0 @@
core/lib

View File

@ -1 +0,0 @@
../../core/mpw_tests.xml

Some files were not shown because too many files have changed in this diff Show More